Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
|
wiki:divers:clock_7 [2017/03/22 18:24] Christian Simon créée |
wiki:divers:clock_7 [2017/03/23 08:45] (Version actuelle) Christian Simon |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Horloge 4x7 segments ====== | ====== Horloge 4x7 segments ====== | ||
| + | |||
| + | ===== Le projet ===== | ||
| + | |||
| + | Contact : C. Simon | ||
| Prétexte : les réveils matin vendus de nos jours ignorent superbement que l' | Prétexte : les réveils matin vendus de nos jours ignorent superbement que l' | ||
| - | En fait : j' | + | En fait : j' |
| + | |||
| + | ===== Webographie et composants ===== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * Arduino Nano, parce qu'il est petit. | ||
| + | |||
| + | |||
| + | ===== Difficultés ===== | ||
| + | |||
| + | L' | ||
| + | |||
| + | Les sorties de l' | ||
| + | |||
| + | Après avoir fait des échanges entre niveaux HIGH et LOW pour tenir compte du type A<->B de l' | ||
| + | |||
| + | Voici le résultat. | ||
| + | |||
| + | ===== Reste à faire ===== | ||
| + | |||
| + | Il reste des entrées analogiques sur l' | ||
| + | |||
| + | On peut encore envisager de mettre des boutons (réglage alarme ?). | ||
| + | |||
| + | Mais il n'y a plus de sorties pour contrôler autre chose : pas de musique ni d' | ||
| + | Moche, et ce ne sera pas mieux avec un Uno. Il va falloir trouver un décodeur ou autre chose. | ||
| + | |||
| + | ===== Code ===== | ||
| + | |||
| + | |||
| + | < | ||
| + | #include < | ||
| + | #include " | ||
| + | RTC_DS1307 RTC; | ||
| + | |||
| + | |||
| + | int aPin = 2; // A | ||
| + | int bPin = 3; // | ||
| + | int cPin = 4; // | ||
| + | int dPin = 5; // | ||
| + | int ePin = 6; // | ||
| + | int fPin = 7; // |________| | ||
| + | int gPin = 8; // | ||
| + | int dotPin = 13; | ||
| + | int GND1 = 9; // | | | ||
| + | int GND2 = 10; // E | | ||
| + | int GND3 = 11; // | ||
| + | int GND4 = 12; // | ||
| + | int num; // | ||
| + | int dig1 = 0; | ||
| + | int dig2 = 0; | ||
| + | int dig3 = 0; | ||
| + | int dig4 = 0; | ||
| + | |||
| + | int HTime = 1; | ||
| + | int LTime = 1; | ||
| + | int OTime = 0; | ||
| + | |||
| + | int secondes = 0 ; | ||
| + | int minutes = 0 ; | ||
| + | int heures = 0; | ||
| + | void setup() | ||
| + | { | ||
| + | pinMode(aPin, | ||
| + | pinMode(bPin, | ||
| + | pinMode(cPin, | ||
| + | pinMode(dPin, | ||
| + | pinMode(ePin, | ||
| + | pinMode(fPin, | ||
| + | pinMode(gPin, | ||
| + | pinMode(dotPin, | ||
| + | pinMode(GND1, | ||
| + | pinMode(GND2, | ||
| + | pinMode(GND3, | ||
| + | pinMode(GND4, | ||
| + | // Serial.begin(9600); | ||
| + | |||
| + | Wire.begin(); | ||
| + | RTC.begin(); | ||
| + | if (! RTC.isrunning()) { | ||
| + | // Serial.println(" | ||
| + | // following line sets the RTC to the date & time this sketch was compiled | ||
| + | RTC.adjust(DateTime(__DATE__, | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | void loop() | ||
| + | { | ||
| + | DateTime now = RTC.now(); | ||
| + | secondes = now.second(); | ||
| + | minutes = now.minute(); | ||
| + | heures = now.hour(); | ||
| + | |||
| + | dig1 = minutes % 10 ; | ||
| + | dig2 = minutes/10 ; | ||
| + | dig3 = heures % 20 ; | ||
| + | dig4 = heures/ | ||
| + | |||
| + | |||
| + | |||
| + | digitalWrite( GND1, LOW); | ||
| + | digitalWrite( GND2, LOW); | ||
| + | digitalWrite( GND3, LOW); | ||
| + | digitalWrite( GND4, LOW); | ||
| + | |||
| + | delay(OTime); | ||
| + | |||
| + | digitalWrite( GND4, HIGH); | ||
| + | pickNumber(dig4); | ||
| + | delay(HTime); | ||
| + | digitalWrite( GND4, LOW); | ||
| + | delay(LTime); | ||
| + | |||
| + | digitalWrite( GND3, HIGH); | ||
| + | if(secondes % 2) { digitalWrite( dotPin, LOW); } | ||
| + | pickNumber(dig3); | ||
| + | delay(HTime); | ||
| + | digitalWrite( GND3, LOW); | ||
| + | digitalWrite( dotPin, HIGH); | ||
| + | delay(LTime); | ||
| + | |||
| + | digitalWrite( GND2, HIGH); | ||
| + | pickNumber(dig2); | ||
| + | delay(HTime); | ||
| + | digitalWrite( GND2, LOW); | ||
| + | delay(LTime); | ||
| + | |||
| + | digitalWrite( GND1, HIGH); | ||
| + | pickNumber(dig1); | ||
| + | delay(HTime); | ||
| + | digitalWrite( GND1, LOW); | ||
| + | delay(LTime); | ||
| + | |||
| + | } | ||
| + | |||
| + | void pickNumber(int x){ | ||
| + | | ||
| + | case 1: one(); break; | ||
| + | case 2: two(); break; | ||
| + | case 3: three(); break; | ||
| + | case 4: four(); break; | ||
| + | case 5: five(); break; | ||
| + | case 6: six(); break; | ||
| + | case 7: seven(); break; | ||
| + | case 8: eight(); break; | ||
| + | case 9: nine(); break; | ||
| + | | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void clearLEDs() | ||
| + | { | ||
| + | digitalWrite( | ||
| + | digitalWrite( | ||
| + | digitalWrite( | ||
| + | digitalWrite( | ||
| + | digitalWrite( | ||
| + | digitalWrite( | ||
| + | digitalWrite( | ||
| + | } | ||
| + | |||
| + | void one() | ||
| + | { | ||
| + | digitalWrite( aPin, HIGH); | ||
| + | digitalWrite( bPin, LOW); | ||
| + | digitalWrite( cPin, LOW); | ||
| + | digitalWrite( dPin, HIGH); | ||
| + | digitalWrite( ePin, HIGH); | ||
| + | digitalWrite( fPin, HIGH); | ||
| + | digitalWrite( gPin, HIGH); | ||
| + | } | ||
| + | |||
| + | void two() | ||
| + | { | ||
| + | digitalWrite( aPin, LOW); | ||
| + | digitalWrite( bPin, LOW); | ||
| + | digitalWrite( cPin, HIGH); | ||
| + | digitalWrite( dPin, LOW); | ||
| + | digitalWrite( ePin, LOW); | ||
| + | digitalWrite( fPin, HIGH); | ||
| + | digitalWrite( gPin, LOW); | ||
| + | } | ||
| + | |||
| + | void three() | ||
| + | { | ||
| + | digitalWrite( aPin, LOW); | ||
| + | digitalWrite( bPin, LOW); | ||
| + | digitalWrite( cPin, LOW); | ||
| + | digitalWrite( dPin, LOW); | ||
| + | digitalWrite( ePin, HIGH); | ||
| + | digitalWrite( fPin, HIGH); | ||
| + | digitalWrite( gPin, LOW); | ||
| + | } | ||
| + | |||
| + | void four() | ||
| + | { | ||
| + | digitalWrite( aPin, HIGH); | ||
| + | digitalWrite( bPin, LOW); | ||
| + | digitalWrite( cPin, LOW); | ||
| + | digitalWrite( dPin, HIGH); | ||
| + | digitalWrite( ePin, HIGH); | ||
| + | digitalWrite( fPin, LOW); | ||
| + | digitalWrite( gPin, LOW); | ||
| + | } | ||
| + | |||
| + | void five() | ||
| + | { | ||
| + | digitalWrite( aPin, LOW); | ||
| + | digitalWrite( bPin, HIGH); | ||
| + | digitalWrite( cPin, LOW); | ||
| + | digitalWrite( dPin, LOW); | ||
| + | digitalWrite( ePin, HIGH); | ||
| + | digitalWrite( fPin, LOW); | ||
| + | digitalWrite( gPin, LOW); | ||
| + | } | ||
| + | |||
| + | void six() | ||
| + | { | ||
| + | digitalWrite( aPin, LOW); | ||
| + | digitalWrite( bPin, HIGH); | ||
| + | digitalWrite( cPin, LOW); | ||
| + | digitalWrite( dPin, LOW); | ||
| + | digitalWrite( ePin, LOW); | ||
| + | digitalWrite( fPin, LOW); | ||
| + | digitalWrite( gPin, LOW); | ||
| + | } | ||
| + | |||
| + | void seven() | ||
| + | { | ||
| + | digitalWrite( aPin, LOW); | ||
| + | digitalWrite( bPin, LOW); | ||
| + | digitalWrite( cPin, LOW); | ||
| + | digitalWrite( dPin, HIGH); | ||
| + | digitalWrite( ePin, HIGH); | ||
| + | digitalWrite( fPin, HIGH); | ||
| + | digitalWrite( gPin, HIGH); | ||
| + | } | ||
| + | |||
| + | void eight() | ||
| + | { | ||
| + | digitalWrite( aPin, LOW); | ||
| + | digitalWrite( bPin, LOW); | ||
| + | digitalWrite( cPin, LOW); | ||
| + | digitalWrite( dPin, LOW); | ||
| + | digitalWrite( ePin, LOW); | ||
| + | digitalWrite( fPin, LOW); | ||
| + | digitalWrite( gPin, LOW); | ||
| + | } | ||
| - | ====== Webographie et composants ====== | + | void nine() |
| + | { | ||
| + | digitalWrite( aPin, LOW); | ||
| + | digitalWrite( bPin, LOW); | ||
| + | digitalWrite( cPin, LOW); | ||
| + | digitalWrite( dPin, LOW); | ||
| + | digitalWrite( ePin, HIGH); | ||
| + | digitalWrite( fPin, LOW); | ||
| + | digitalWrite( gPin, LOW); | ||
| + | } | ||
| - | [[https:// | + | void zero() |
| - | [[http:// | + | { |
| + | digitalWrite( aPin, LOW); | ||
| + | | ||
| + | digitalWrite( cPin, LOW); | ||
| + | digitalWrite( dPin, LOW); | ||
| + | digitalWrite( ePin, LOW); | ||
| + | digitalWrite( fPin, LOW); | ||
| + | digitalWrite( gPin, HIGH); | ||
| + | } | ||
| + | </ | ||