Bonjour
Je viens vous demander un peu d'aide car je me suis perdu dans mon code, mon
problème vient après la ligne
Serial.println(noteDuration); // affiche durée des notes
Je veux utiliser ce qui s'affiche dans le moniteur série pour activer le servo moteur.
Pourriez-vous m'orienter ?
Merci.
*/
#include "pitches.h"
#include <Servo.h>
Servo boucheServo1;
int pinServo = 9;
int melody[] = {
NOTE_E4, NOTE_E4, NOTE_E4, NOTE_E4,NOTE_E4,NOTE_E4,NOTE_E4,NOTE_G4 ,NOTE_C4,NOTE_D4,NOTE_E4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_E4,NOTE_E4,NOTE_E4,NOTE_D4,NOTE_D4,NOTE_E4,NOTE_D4,NOTE_G4, NOTE_E4, NOTE_E4, NOTE_E4,NOTE_E4,NOTE_E4,NOTE_E4,NOTE_E4 ,NOTE_G4,NOTE_C4,NOTE_D4,NOTE_E4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_E4,NOTE_E4,NOTE_G4,NOTE_G4,NOTE_F4,NOTE_D4,NOTE_C4};
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
2,2,4,2,2,4,2,2,2,1,8,2,2,2,1,2,2,2,1,1,2,2,2,2,4,4,2,2,4,2,2,4,2,2,2,1,8,2,2,2,2,2,2,2,1,1,2,2,2,2,8 };
void setup() {
Serial.begin(9600);
for (int thisNote = 0; thisNote < 51; thisNote++) {
int noteDuration = noteDurations[thisNote]*95;
tone(8, melody[thisNote],noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
}
boucheServo1.attach(pinServo);
}
void loop() {
for (int thisNote = 0; thisNote < 51; thisNote++) {
int noteDuration = noteDurations[thisNote]*95;
tone(8, melody[thisNote],noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
Serial.println(noteDuration); // affiche durée des notes
}
// Là je veux que le programme lise ce que vient d'afficher noteDuration dans le terminal série
// Et en fonction du résultat mon servomoteur s'active.
if (Serial.read() == 95)
{
boucheServo1.write(115);
delay(10);
}
else if (Serial.read() == 190)
{
boucheServo1.write(125);
delay(10);
}
else if (Serial.read() == 380)
{
boucheServo1.write(135);
delay(10);
}
else if (Serial.read() == 760)
{
boucheServo1.write(145);
delay(10);
}
delay(1500);
}