1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| // Les moteurs. Le shield Moteur monopolise les pin 4, 5, 6, 7, 8 et 12 (<== A VERIFER DANS LA DOC)
#include <AFMotor.h>
const uint8_t portMoteurD = 3;
const uint8_t portMoteurG = 4;
AF_DCMotor moteurDroite(portMoteurD); // PWM par défaut à 1KHz
AF_DCMotor moteurGauche(portMoteurG); // PWM par défaut à 1KHz
// Le bluetooth
#include <SoftwareSerial.h>
const uint8_t RxD = 7; // <<== ERREUR A METTRE AILLEURS
const uint8_t TxD = 6; // <<== EREUR A METTRE AILLEURS
SoftwareSerial blueToothSerial(RxD, TxD);
// La musique
#include "pitches.h"
const uint8_t brocheHP = 11;
const uint16_t melody[] = {
NOTE_E5, NOTE_E3, NOTE_B4, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_C5,
NOTE_B4, NOTE_A4, NOTE_A3, NOTE_A4, NOTE_C5, NOTE_E5, NOTE_A3, NOTE_D5,
NOTE_C5, NOTE_B4, NOTE_E4, NOTE_G4, NOTE_C5, NOTE_D5, NOTE_E3, NOTE_E5,
NOTE_E3, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_A3, NOTE_A4, NOTE_A3, NOTE_B2,
NOTE_C3, NOTE_D3, NOTE_D5, NOTE_F5, NOTE_A5, NOTE_C5, NOTE_C5, NOTE_G5,
NOTE_F5, NOTE_E5, NOTE_C3, 0, NOTE_C5, NOTE_E5, NOTE_A4, NOTE_G4, NOTE_D5,
NOTE_C5, NOTE_B4, NOTE_E4, NOTE_B4, NOTE_C5, NOTE_D5, NOTE_G4, NOTE_E5,
NOTE_G4, NOTE_C5, NOTE_E4, NOTE_A4, NOTE_E3, NOTE_A4, 0,
};
const uint8_t noteDurations[] = { // sur un seul octets car les durées sont <255. si besoin de longues durées utiliser uint16_t ou uint32_t
8, 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 4, 8, 8, 16, 16, 8, 8, 8, 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 8,
8, 8, 8, 8, 16, 16,
};
void setup() {
Serial.begin(9600);
pinMode(brocheHP, OUTPUT);
blueToothSerial.begin(9600);
moteurDroite.setSpeed(255);
moteurDroite.run(RELEASE);
moteurGauche.setSpeed(255);
moteurGauche.run(RELEASE);
noTone(brocheHP); // pour s'assurer qu'il n'y a pas de son pour le momment
}
void loop() {
switch (blueToothSerial.read()) {
case '1': // tout droit
moteurDroite.run(FORWARD);
moteurGauche.run(FORWARD);
break;
case '2': // on tourne à droite
moteurDroite.run(BACKWARD);
moteurGauche.run(FORWARD);
break;
case '3': // marche arrière
moteurDroite.run(BACKWARD);
moteurGauche.run(BACKWARD);
break;
case '4': // on tourne à gauche
moteurDroite.run(FORWARD);
moteurGauche.run(BACKWARD);
break;
case '5': // on s'arrête
moteurDroite.run(RELEASE);
moteurGauche.run(RELEASE);
break;
case '6': // musique (CODE BLOQUANT, ON NE PEUT PAS PILOTER LE VÉHICULE PENDANT QUE LA MUSIQUE JOUE)
for (size_t thisNote = 0; thisNote < sizeof(melody) / sizeof(melody[0]); thisNote++) {
int noteDuration = 1000 / noteDurations[thisNote];
tone(brocheHP, melody[thisNote], noteDuration);
delay(noteDuration * 1.30);
}
break;
case -1: // rien à lire en entrée
default: // autres valeurs reçues
break;
}
} |