Papertoy avec Arduino pour du Fun : Différence entre versions

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 à 20:44

Auteur avatarAntony Le Goïc-Auffret | Dernière modification 15/10/2019 par Pierreb

Papertoy avec Arduino pour du Fun papertoy arduino.gif
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 15/10/2019 par user:Pierreb.

Commentaires

Published