« Papertoy avec Arduino pour du Fun » : différence entre les versions

Antonydbzh (discussion | contributions)
Aucun résumé des modifications
Antonydbzh (discussion | contributions)
Aucun résumé des modifications
Ligne 50 : Ligne 50 :
|Step_Title=On charge le code
|Step_Title=On charge le code
|Step_Content=Avec le logiciel arduino, on téléverse le code sur la carte.
|Step_Content=Avec le logiciel arduino, on téléverse le code sur la carte.
<blockquote></blockquote>////////////////////////////////
//                            //
//     Animer un PaperToy     //
//                            //
////////////////////////////////
/*
A partit d'un paperToy (récupéré par exemple sur le site <nowiki>http://www.cubeecraft.com/cubee/lego-c3po</nowiki>
on va fabriquer un mini robot.
Code sous licence CC-By-Sa de Antony Auffret
réalisé avec des bouts de code attrapés ici ou là !
dont notament : <nowiki>http://www.instructables.com/id/How-to-easily-play-music-with-buzzer-on-arduino-Th/</nowiki>
et Tone Melody des exemples de programmes de l'IDE Arduino : <nowiki>http://arduino.cc/en/Tutorial/Tone</nowiki>
6 décembre 2015
                                          +-----+
             +----[PWR]-------------------| USB |--+
             |                            +-----+  |
             |         GND/RST2  [ ][ ]            |
             |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |
             |          5V/MISO2 [ ][ ]  A4/SDA[ ] |   
             |                             AREF[ ] |
             |                              GND[X] | GND
             | [ ]N/C                    SCK/13[ ] |  
             | [ ]IOREF                 MISO/12[ ] |   
             | [ ]RST                   MOSI/11[ ]~|   
             | [ ]3V3    +---+               10[X]~| Servomoteur
             | [ ]5v    -| A |-               9[X]~| Led
             | [X]GND   -| R |-               8[X] | Piezo  
             | [X]GND   -| D |-                    |
             | [ ]Vin   -| U |-               7[ ] |    
             |          -| I |-               6[ ]~|    
             | [ ]A0    -| N |-               5[ ]~|    
             | [ ]A1    -| O |-               4[ ] |    
             | [ ]A2     +---+           INT1/3[ ]~|    
             | [ ]A3                     INT0/2[ ] |    
             | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
             | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
             |            [ ] [ ] [ ]              |
             |  UNO_R3    GND MOSI 5V  ____________/
              \_______________________/
Matériel :
- des fils dupont.
- un servomoteur
- un Arduino
- 2 LED
- 1 Piezo
...
Schéma de l'Arduino en ASCII-ART CC-By <nowiki>http://busyducks.com/ascii-art-arduinos</nowiki>
Sous licence CC-By-Sa (<nowiki>http://creativecommons.org/licenses/by-nc-sa/3.0/</nowiki>)
<nowiki>*</nowiki>/
/*
   ___
 / ___ \
|_|   | |
     /_/
     _   ___   _
    |_| |___|_| |_
         ___|_   _|
        |___| |_|
Les petits Débrouillards - CC-By-Sa <nowiki>http://creativecommons.org/licenses/by-nc-sa/3.0/</nowiki>
<nowiki>*</nowiki>/
<nowiki>#</nowiki>include <Servo.h>
Servo monServo;   // créer un objet "monServo" pour le contrôler
<nowiki>#</nowiki>define    C0 16.35
<nowiki>#</nowiki>define    Db0    17.32
<nowiki>#</nowiki>define    D0    18.35
<nowiki>#</nowiki>define    Eb0    19.45
<nowiki>#</nowiki>define    E0    20.60
<nowiki>#</nowiki>define    F0    21.83
<nowiki>#</nowiki>define    Gb0    23.12
<nowiki>#</nowiki>define    G0    24.50
<nowiki>#</nowiki>define    Ab0    25.96
<nowiki>#</nowiki>define    LA0    27.50
<nowiki>#</nowiki>define    Bb0    29.14
<nowiki>#</nowiki>define    B0    30.87
<nowiki>#</nowiki>define    C1    32.70
<nowiki>#</nowiki>define    Db1    34.65
<nowiki>#</nowiki>define    D1    36.71
<nowiki>#</nowiki>define    Eb1    38.89
<nowiki>#</nowiki>define    E1    41.20
<nowiki>#</nowiki>define    F1    43.65
<nowiki>#</nowiki>define    Gb1    46.25
<nowiki>#</nowiki>define    G1    49.00
<nowiki>#</nowiki>define    Ab1    51.91
<nowiki>#</nowiki>define    LA1    55.00
<nowiki>#</nowiki>define    Bb1    58.27
<nowiki>#</nowiki>define    B1    61.74
<nowiki>#</nowiki>define    C2    65.41
<nowiki>#</nowiki>define    Db2    69.30
<nowiki>#</nowiki>define    D2    73.42
<nowiki>#</nowiki>define    Eb2    77.78
<nowiki>#</nowiki>define    E2    82.41
<nowiki>#</nowiki>define    F2    87.31
<nowiki>#</nowiki>define    Gb2    92.50
<nowiki>#</nowiki>define    G2    98.00
<nowiki>#</nowiki>define    Ab2    103.83
<nowiki>#</nowiki>define    LA2    110.00
<nowiki>#</nowiki>define    Bb2    116.54
<nowiki>#</nowiki>define    B2    123.47
<nowiki>#</nowiki>define    C3    130.81
<nowiki>#</nowiki>define    Db3    138.59
<nowiki>#</nowiki>define    D3    146.83
<nowiki>#</nowiki>define    Eb3    155.56
<nowiki>#</nowiki>define    E3    164.81
<nowiki>#</nowiki>define    F3    174.61
<nowiki>#</nowiki>define    Gb3    185.00
<nowiki>#</nowiki>define    G3    196.00
<nowiki>#</nowiki>define    Ab3    207.65
<nowiki>#</nowiki>define    LA3    220.00
<nowiki>#</nowiki>define    Bb3    233.08
<nowiki>#</nowiki>define    B3    246.94
<nowiki>#</nowiki>define    C4    261.63
<nowiki>#</nowiki>define    Db4    277.18
<nowiki>#</nowiki>define    D4    293.66
<nowiki>#</nowiki>define    Eb4    311.13
<nowiki>#</nowiki>define    E4    329.63
<nowiki>#</nowiki>define    F4    349.23
<nowiki>#</nowiki>define    Gb4    369.99
<nowiki>#</nowiki>define    G4    392.00
<nowiki>#</nowiki>define    Ab4    415.30
<nowiki>#</nowiki>define    LA4    440.00
<nowiki>#</nowiki>define    Bb4    466.16
<nowiki>#</nowiki>define    B4    493.88
<nowiki>#</nowiki>define    C5    523.25
<nowiki>#</nowiki>define    Db5    554.37
<nowiki>#</nowiki>define    D5    587.33
<nowiki>#</nowiki>define    Eb5    622.25
<nowiki>#</nowiki>define    E5    659.26
<nowiki>#</nowiki>define    F5    698.46
<nowiki>#</nowiki>define    Gb5    739.99
<nowiki>#</nowiki>define    G5    783.99
<nowiki>#</nowiki>define    Ab5    830.61
<nowiki>#</nowiki>define    LA5    880.00
<nowiki>#</nowiki>define    Bb5    932.33
<nowiki>#</nowiki>define    B5    987.77
<nowiki>#</nowiki>define    C6    1046.50
<nowiki>#</nowiki>define    Db6    1108.73
<nowiki>#</nowiki>define    D6    1174.66
<nowiki>#</nowiki>define    Eb6    1244.51
<nowiki>#</nowiki>define    E6    1318.51
<nowiki>#</nowiki>define    F6    1396.91
<nowiki>#</nowiki>define    Gb6    1479.98
<nowiki>#</nowiki>define    G6    1567.98
<nowiki>#</nowiki>define    Ab6    1661.22
<nowiki>#</nowiki>define    LA6    1760.00
<nowiki>#</nowiki>define    Bb6    1864.66
<nowiki>#</nowiki>define    B6    1975.53
<nowiki>#</nowiki>define    C7    2093.00
<nowiki>#</nowiki>define    Db7    2217.46
<nowiki>#</nowiki>define    D7    2349.32
<nowiki>#</nowiki>define    Eb7    2489.02
<nowiki>#</nowiki>define    E7    2637.02
<nowiki>#</nowiki>define    F7    2793.83
<nowiki>#</nowiki>define    Gb7    2959.96
<nowiki>#</nowiki>define    G7    3135.96
<nowiki>#</nowiki>define    Ab7    3322.44
<nowiki>#</nowiki>define    LA7    3520.01
<nowiki>#</nowiki>define    Bb7    3729.31
<nowiki>#</nowiki>define    B7    3951.07
<nowiki>#</nowiki>define    C8    4186.01
<nowiki>#</nowiki>define    Db8    4434.92
<nowiki>#</nowiki>define    D8    4698.64
<nowiki>#</nowiki>define    Eb8    4978.03
// Durée des notes
<nowiki>#</nowiki>define BPM 120     //changer cette valeur change toutes les autres
<nowiki>#</nowiki>define H 2*Q       //demi 2/4
<nowiki>#</nowiki>define Q 60000/BPM //Quart 1/4
<nowiki>#</nowiki>define E Q/2       //huitième 1/8
<nowiki>#</nowiki>define S Q/4       //seizième 1/16
<nowiki>#</nowiki>define W 4*Q       //entier 4/4
// notes de la mélodie :
int melody[] = {
LA3,LA3,LA3,F3,C4,LA3,F3,C4,LA3,E4,E4,E4,F4,C4,Ab3,F3,C4,LA3,LA4,LA3,LA3,LA4,Ab4,G4,Gb4,E4,F4,Bb3,Eb4,D4,Db4,C4,B3,C4,F3,Ab3,F3,LA3,C4,LA3,C4,E4,LA4,LA3,LA3,LA4,Ab4,G4,Gb4,E4,F4,Bb3,Eb4,D4,Db4,C4,B3,C4,F3,Ab3,F3,C4,LA3,F3,C4,LA3
};
// durée des notes
int noteDurations[] = {
Q,Q,Q,E+S,S,Q,E+S,S,H,Q,Q,Q,E+S,S,Q,E+S,S,H,Q,E+S,S,Q,E+S,S,S,S,E,E,Q,E+S,S,S,S,E,E,Q,E+S,S,Q,E+S,S,H,Q,E+S,S,Q,E+S,S,S,S,E,E,Q,E+S,S,S,S,E,E,Q,E+S,S,Q,E+S,S,H
};
int pause[] = {
  Q+1,Q+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,H+1,Q+1,Q+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,H+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,S+1,S+1,E+1+E+1,E+1,Q+1,E+S+1,S+1,S+1,S+1,E+1+E+1,E+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,H+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,S+1,S+1,E+1+E+1,E+1,Q+1,E+S+1,S+1,S+1,S+1,E+1+E+1,E+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,H+1+2*H
};
int pos;         // variable pour stocker la valeur du position
int sens;        // pour faire changer de sens au mouvement de la tete
void setup() {
pinMode(8, OUTPUT);       // pour le piezo
pinMode(9, OUTPUT);       // pour les 2 leds
digitalWrite(9,LOW);      // on éteint les led
monServo.attach(10);      // brancher le servomoteur sur l'entrée 10
sens = 1;
pos = 1;
}
void loop() {
  // il y a 66 notes, on itère jusque 66
  for (int thisNote = 0; thisNote < 66; thisNote++) {
    digitalWrite(9,HIGH);   // allume les led
    tone(8, melody[thisNote], noteDurations[thisNote]); //joue la note
    digitalWrite(9,LOW);    //éteins les leds
    delay(pause[thisNote]); //pause nécessaire entre les notes
    noTone(8);    //arret de la note en cours       if (pos>180) { //repere le sens de rotation de la tete : si la valeur de position est au maximum on change de sens
   sens = 2;
   }
   if (pos<10) { //si la valeur de position est au minimum on change de sens
   sens = 1;
   }
   if (sens<2) { //si la valeur de position est au maximum on décroit
   pos=pos+10;
   }
   if (sens>1) { //si la valeur de position est au minimum on croit
   pos=pos-10;
   }
   monServo.write(pos);  // mettre le servomoteur dans la bonne position
  }
}
}}
}}
{{Notes}}
{{Notes}}

Version du 29 novembre 2018 à 18:44

Auteur avatarAntony Le Goïc-Auffret | Dernière modification 29/11/2018 par Antonydbzh

Un dimanche après-midi, J'ai décidé de réaliser l'idée de faire un robot en papier, avec de l'arduino pour l'animer.
Licence : Attribution + Partage dans les mêmes conditions (CC-BY-SA)

Introduction

Pour le PaperToy, j'ai pris quelque chose de simple : Les cubecraft ! J'ai choisis C3PO

Étape 1 - La tête

On monte la tête du paperToy en y intégrant les leds pour les yeux




Étape 2 - Le cou

On utilise un des bras standard du servomoteur qu'on colle à la tête




Étape 3 - On installe le servo dans le corps du PaperToy




Étape 4 - on referme le corps du paperToy

et on rassemble tout le matériel




Étape 5 - On branche l'Arduino avec les composants du robot

  • Piezo à la broche 8
  • Led à la broche 9
  • Servomoteur à la broche 10




Étape 6 - On charge le code

Avec le logiciel arduino, on téléverse le code sur la carte.

////////////////////////////////

//                            // //     Animer un PaperToy     // //                            // //////////////////////////////// /* A partit d'un paperToy (récupéré par exemple sur le site http://www.cubeecraft.com/cubee/lego-c3po on va fabriquer un mini robot. Code sous licence CC-By-Sa de Antony Auffret réalisé avec des bouts de code attrapés ici ou là ! dont notament : http://www.instructables.com/id/How-to-easily-play-music-with-buzzer-on-arduino-Th/ et Tone Melody des exemples de programmes de l'IDE Arduino : http://arduino.cc/en/Tutorial/Tone 6 décembre 2015                                           +-----+              +----[PWR]-------------------


Dernière modification 29/11/2018 par user:Antonydbzh.

Commentaires

Published