char incomingByte; // incoming data void setup() { Serial.println("DEBUT"); Serial.begin(9600); // initialization pinMode(4, OUTPUT); // set a pin for buzzer output buzz(4, 1014, 500); } void buzz(int targetPin, long frequency, long length) { long delayValue = 1000000/frequency/2; // Calcule le delay entre deux transitions (cycle?) //// 1 seconde en microsecondes, divisé par la frequence, puis divisé par deux //// car il y a deux phase par cycle long numCycles = frequency * length/ 1000; // calculate the number of cycles for proper timing //// multiply frequency, which is really cycles per second, by the number of seconds to //// get the total number of cycles to produce for (long i=0; i < numCycles; i++){ // for the calculated length of time... digitalWrite(targetPin,HIGH); // write the buzzer pin high to push out the diaphram delayMicroseconds(delayValue); // wait for the calculated delay value digitalWrite(targetPin,LOW); // write the buzzer pin low to pull back the diaphram delayMicroseconds(delayValue); // wait againf or the calculated delay value } } void loop() { if (Serial.available() > 0) { // Si on recoit quelquechose sur le port série incomingByte = Serial.read(); // on le lit Serial.println("incomingByte"); Serial.println(incomingByte); if(incomingByte == 'c') { Serial.println("C5 / Do5"); // affiche la note joué sur le port série buzz(4, 523, 500); // fait vibrer le buzzer sur la pin 4 à 523Hz pendant une 1/2 seconde } else if(incomingByte == 'd') { buzz(4, 587, 500); // fait vibrer le buzzer sur la pin 4 à 587Hz pendant une 1/2 seconde Serial.println("Ré5");// affiche la note joué sur le port série } else if(incomingByte == 'e') { buzz(4, 659, 500); // fait vibrer le buzzer sur la pin 4 à 659Hz pendant une 1/2 seconde Serial.println("Mi5");// affiche la note joué sur le port série } else if(incomingByte == 'f') { buzz(4, 698, 500); // fait vibrer le buzzer sur la pin 4 à 698Hz pendant une 1/2 seconde Serial.println("Fa5"); } else if(incomingByte == 'g') { buzz(4, 784, 500); // fait vibrer le buzzer sur la pin 4 à 784Hz pendant une 1/2 seconde Serial.println("Sol5"); } else if(incomingByte == 'a') { buzz(4, 880, 500); // fait vibrer le buzzer sur la pin 4 à 880Hz pendant une 1/2 seconde Serial.println("La5"); } else if(incomingByte == 'b') { buzz(4, 988, 500); // fait vibrer le buzzer sur la pin 4 à 988Hz pendant une 1/2 seconde Serial.println("Si5"); } } }