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.
 
////////////////////////////////
 
//                            //
 
//     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 Le Goïc-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 à 19:46

Auteur avatarAntony Le Goïc-Auffret | Dernière modification 12/06/2024 par Antonydbzh

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.


Dernière modification 12/06/2024 par user:Antonydbzh.

Commentaires

Published