Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
wiki:divers:clock_7 [2017/03/22 21:59] Christian Simon [Webographie et composants] |
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 | + | ===== Webographie et composants ===== |
* [[https:// | * [[https:// | ||
- | * [[https://www.sparkfun.com/products/retired/12098|Afficheur 4x7 segments 05641 A/ | + | * [[http://www.datasheetarchive.com/dl/7e51528b5a44be578591835da8924b2a72d4f9/P/05641A|Afficheur 4x7 segments 05641 A/ |
* Arduino Nano, parce qu'il est petit. | * 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/10; | ||
+ | |||
+ | |||
+ | | ||
+ | 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); | ||
+ | } | ||
+ | |||
+ | void nine() | ||
+ | { | ||
+ | digitalWrite( aPin, LOW); | ||
+ | digitalWrite( bPin, LOW); | ||
+ | digitalWrite( cPin, LOW); | ||
+ | digitalWrite( dPin, LOW); | ||
+ | digitalWrite( ePin, HIGH); | ||
+ | digitalWrite( fPin, LOW); | ||
+ | digitalWrite( gPin, LOW); | ||
+ | } | ||
+ | |||
+ | void zero() | ||
+ | { | ||
+ | digitalWrite( aPin, LOW); | ||
+ | digitalWrite( bPin, LOW); | ||
+ | digitalWrite( cPin, LOW); | ||
+ | digitalWrite( dPin, LOW); | ||
+ | digitalWrite( ePin, LOW); | ||
+ | digitalWrite( fPin, LOW); | ||
+ | digitalWrite( gPin, HIGH); | ||
+ | } | ||
+ | </ |