====== Cadran Téléphonique ====== ==== Résumé ==== Le projet est d'interfacer un cadran téléphonique rotatif avec un shield mp3 d'arduino pour lancer des lectures de sample lorsqu'on compose un chiffre sur le cadran ====Visuel==== {{:projets:cablage-cadran.jpg?400}} {{:projets:dial.jpg?400}} ---- ==== Code arduino ==== int needToPrint = 0; int count; int in = 2; int lastState = LOW; int trueState = LOW; long lastStateChangeTime = 0; int cleared = 0; // constants int dialHasFinishedRotatingAfterMs = 100; int debounceDelay = 10; void setup() { Serial.begin(9600); pinMode(in, INPUT); } void loop() { int reading = digitalRead(in); if ((millis() - lastStateChangeTime) > dialHasFinishedRotatingAfterMs) { // the dial isn't being dialed, or has just finished being dialed. if (needToPrint) { // if it's only just finished being dialed, we need to send the number down the serial // line and reset the count. We mod the count by 10 because '0' will send 10 pulses. Serial.print(count % 10, DEC); needToPrint = 0; count = 0; cleared = 0; } } if (reading != lastState) { lastStateChangeTime = millis(); } if ((millis() - lastStateChangeTime) > debounceDelay) { // debounce - this happens once it's stablized if (reading != trueState) { // this means that the switch has either just gone from closed->open or vice versa. trueState = reading; if (trueState == HIGH) { // increment the count of pulses if it's gone high. count++; needToPrint = 1; // we'll need to print this number (once the dial has finished rotating) } } } lastState = reading; } ---- ==== Ressources ==== *[[http://www.instructables.com/id/Interface-a-rotary-phone-dial-to-an-Arduino/|Lien vers page instructables]] //(en anglais)// *[[https://learn.sparkfun.com/tutorials/mp3-player-shield-hookup|Lien vers page Sparkfun]] //(en anglais)// ---- //Projet par Damien & Mathieu//