Arduino DIY matricielle montre-bracelet (8 / 13 étapes)

Étape 8: Arduino croquis pour horloge numérique

Iconothèque de Mode utilisation fréquence Timer 2. Vous pouvez télécharger la bibliothèque depuis ici.

 #include <FrequencyTimer2.h> #include "Wire.h" #define DS3231_I2C_ADDRESS 0x68 // Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val) { return( (val/10*16) + (val%10) ); } // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return( (val/16*10) + (val%16) ); } byte second_unit, second_tens, minute_unit, minute_tens, hour_unit, hour_tens, date_unit, date_tens, month_unit, month_tens, year_unit, year_tens, year_remain; byte _second = 0, _minute = 10, _hour = 12, _day = 1, _date = 1, _month = 1, _year = 15; byte tMSB, tLSB; float temp3231; long lastPressTime; #define space { \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define slash { \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 1, 0, 0}, \ {0, 0, 0, 0, 1, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 1, 0, 0, 0, 0, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define A { \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 1, 1, 1, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define M { \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 1, 0, 1, 1, 0, 0}, \ {0, 1, 0, 1, 0, 1, 0, 0}, \ {0, 1, 0, 1, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define P { \ {0, 1, 1, 1, 1, 0, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 1, 1, 1, 0, 0, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define zero { \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 1, 1, 0, 0}, \ {0, 1, 0, 1, 0, 1, 0, 0}, \ {0, 1, 1, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define one { \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 1, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define two { \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 0, 0, 0, 0, 1, 0, 0}, \ {0, 0, 0, 0, 1, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 1, 0, 0, 0, 0, 0}, \ {0, 1, 1, 1, 1, 1, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define three { \ {0, 1, 1, 1, 1, 1, 0, 0}, \ {0, 0, 0, 0, 1, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 0, 1, 0, 0, 0}, \ {0, 0, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define four { \ {0, 0, 0, 0, 1, 0, 0, 0}, \ {0, 0, 0, 1, 1, 0, 0, 0}, \ {0, 0, 1, 0, 1, 0, 0, 0}, \ {0, 1, 0, 0, 1, 0, 0, 0}, \ {0, 1, 1, 1, 1, 1, 0, 0}, \ {0, 0, 0, 0, 1, 0, 0, 0}, \ {0, 0, 0, 0, 1, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define five { \ {0, 1, 1, 1, 1, 1, 0, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 1, 1, 1, 1, 0, 0, 0}, \ {0, 0, 0, 0, 0, 1, 0, 0}, \ {0, 0, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define six { \ {0, 0, 0, 1, 1, 0, 0, 0}, \ {0, 0, 1, 0, 0, 0, 0, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 1, 1, 1, 1, 0, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define seven { \ {0, 1, 1, 1, 1, 1, 0, 0}, \ {0, 0, 0, 0, 0, 1, 0, 0}, \ {0, 0, 0, 0, 1, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 1, 0, 0, 0, 0, 0}, \ {0, 0, 1, 0, 0, 0, 0, 0}, \ {0, 0, 1, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define eight { \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define nine { \ {0, 0, 1, 1, 1, 0, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 0, 1, 1, 1, 1, 0, 0}, \ {0, 0, 0, 0, 0, 1, 0, 0}, \ {0, 0, 0, 0, 1, 0, 0, 0}, \ {0, 0, 1, 1, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define colon { \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 1, 1, 0, 0, 0, 0}, \ {0, 0, 1, 1, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 1, 1, 0, 0, 0, 0}, \ {0, 0, 1, 1, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define DEGC { \ {1, 1, 0, 0, 1, 1, 1, 0}, \ {1, 1, 0, 1, 0, 0, 0, 1}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 1}, \ {0, 0, 0, 0, 1, 1, 1, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define T { \ {0, 1, 1, 1, 1, 1, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 1, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define smallm { \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 1, 1, 0, 1, 0, 0, 0}, \ {0, 1, 0, 1, 0, 1, 0, 0}, \ {0, 1, 0, 1, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } #define smallp { \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 1, 1, 1, 1, 0, 0, 0}, \ {0, 1, 0, 0, 0, 1, 0, 0}, \ {0, 1, 1, 1, 1, 0, 0, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 1, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0} \ } byte col = 0; byte leds[8][8]; byte rows[8] = {0, 3, 6, 12, 7, 14, 15, 4}; byte cols[8] = {8, 1, 10, 5, 17, 11, 16, 13}; const byte numPatterns = 14; byte patterns[numPatterns][8][8] = { zero, one, two, three, four, five, six, seven, eight, nine, colon, space, slash, DEGC }; int pattern = 0; void setup() { Wire.begin(); for (byte i = 3; i <= 17; i++) { if(i==9) continue; pinMode(i, OUTPUT); } pinMode(0, OUTPUT); pinMode(1, OUTPUT); // set up cols and rows for (byte i = 1; i <= 8; i++) { digitalWrite(rows[i - 1], LOW); } for (byte i = 1; i <= 8; i++) { digitalWrite(cols[i - 1], LOW); } clearLeds(); // Turn off toggling of pin 11 FrequencyTimer2::disable(); // Set refresh rate (interrupt timeout period) FrequencyTimer2::setPeriod(2000); // Set interrupt routine to be called FrequencyTimer2::setOnOverflow(display); setPattern(pattern); } void loop() { calculateDateTime(); digitalClock(); } void clearLeds() { // Clear display array for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { leds[i][j] = 0; } } } void setPattern(int pattern) { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { leds[i][j] = patterns[pattern][i][j]; } } } void slidePattern(int pattern, int del) { for (int l = 0; l < 8; l++) { for (int i = 0; i < 7; i++) { for (int j = 0; j < 8; j++) { leds[j][i] = leds[j][i+1]; } } for (int j = 0; j < 8; j++) { leds[j][7] = patterns[pattern][j][0 + l]; } delay(del); } } // Interrupt routine void display() { digitalWrite(cols[col], LOW); // Turn whole previous column off col++; //digitalWrite(rows[row], LOW); // Turn whole previous column off //row++; if (col == 8) { col = 0; } for (int row = 0; row < 8; row++) { if (leds[col][7 - row] == 1) { digitalWrite(rows[row], LOW); // Turn on this led } else { digitalWrite(rows[row], HIGH); // Turn off this led } } digitalWrite(cols[col], HIGH); // Turn whole column on at once (for equal lighting times) } void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year) { // sets time and date data to DS3231 Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); // set next input to start at the seconds register Wire.write(decToBcd(second)); // set seconds Wire.write(decToBcd(minute)); // set minutes Wire.write(decToBcd(hour | 0x40)); // set hours Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday) Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31) Wire.write(decToBcd(month)); // set month Wire.write(decToBcd(year)); // set year (0 to 99) Wire.endTransmission(); } void readDS3231time(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) { Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); // set DS3231 register pointer to 00h Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS, 7); // request seven bytes of data from DS3231 starting from register 00h *second = bcdToDec(Wire.read() & 0x7f); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read() & 0x1f); *dayOfWeek = bcdToDec(Wire.read()); *dayOfMonth = bcdToDec(Wire.read()); *month = bcdToDec(Wire.read()); *year = bcdToDec(Wire.read()); } void calculateDateTime(){ byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; // retrieve data from DS3231 readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); if(hour > 12){ hour = hour - 24; } second_unit = second % 10; second_tens = second / 10; minute_unit = minute % 10; minute_tens = minute / 10; hour_unit = hour % 10; hour_tens = hour / 10; date_unit = dayOfMonth % 10; date_tens = dayOfMonth / 10; month_unit = month % 10; month_tens = month / 10; year_unit = year % 10; year_tens = year / 10; } void digitalClock(){ FrequencyTimer2::setOnOverflow(display); slidePattern(hour_tens, 80); slidePattern(hour_unit, 80); slidePattern(10, 80); slidePattern(minute_tens, 80); slidePattern(minute_unit, 80); slidePattern(10, 80); slidePattern(second_tens, 80); slidePattern(second_unit, 80); //slidePattern(11, 80); slidePattern(11, 80); slidePattern(date_tens, 80); slidePattern(date_unit, 80); slidePattern(12, 80); slidePattern(month_tens, 80); slidePattern(month_unit, 80); slidePattern(12, 80); slidePattern(2, 80); slidePattern(0, 80); slidePattern(year_tens, 80); slidePattern(year_unit, 80); slidePattern(11, 80); int tempC = get3231Temp(); int tempC_unit = tempC % 10; int tempC_tens = tempC / 10; slidePattern(tempC_tens, 80); slidePattern(tempC_unit, 80); slidePattern(13, 80); slidePattern(11, 80); slidePattern(11, 80); } int get3231Temp() { //temp registers (11h-12h) get updated automatically every 64s Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0x11); Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS, 2); if(Wire.available()) { tMSB = Wire.read(); //2's complement int portion tLSB = Wire.read(); //fraction portion temp3231 = (tMSB & B01111111); //do 2's math on Tmsb } else { //oh noes, no data! } return temp3231; } 

Articles Liés

Contrôler un Arduino avec une montre-bracelet (TI eZ430 Chronos)

Contrôler un Arduino avec une montre-bracelet (TI eZ430 Chronos)

la montreLe Texas Instruments eZ430 Chronos est un gadget sympa. Il a la communication radio bidirectionnelle et tout un tas de capteurs : température, pression, accélération.En fait, c'est un kit de développement pour la MSP de 430 (un microcontrôle
DIY Watch cuir manchette (montres/bracelet peut être enlevé et remplacé)

DIY Watch cuir manchette (montres/bracelet peut être enlevé et remplacé)

Vous avez un bracelet préférée ou la montre que vous voulez vraiment porter mais...Vous avez une sorte de réaction chimique avec les métaux ?J'ai eu ce problème et j'ai cherché partout une sorte de Brassard de glissement.Ne retrouvant ne pas ce que j
Montre-bracelet talkie-walkie

Montre-bracelet talkie-walkie

Alrighty, j'ai toujours voulu faire un talkie-walkie montre-bracelet pour émuler les communicateurs utilisés dans Mighty Morphin Power Rangers. Mon intérêt a récemment été rajeuni après avoir trouvé un cool Power Rangers communicator prop et par le d
Arduino DIY ou « Le bricolage-Duino »

Arduino DIY ou « Le bricolage-Duino »

ce tutoriel complet est disponible sur mon site Web àhttp://www.theparsley.com/Arduino/DIY/Pour citer le site Arduino :« Arduino est une plate-forme de prototypage électronique open-source basée sur le logiciel et le matériel souple, facile à utilise
LA carte de l’ARDUINO DIY pour 5$

LA carte de l’ARDUINO DIY pour 5$

La carte arduino est une plate-forme de prototypage électronique open source utilisée par amateur, artiste, concepteurs, fabricants etc....L'arduino est simple à utiliser, plutôt que toute autre carte de prototypage!.J'ai gâché beaucoup d'argent sur
Montre bracelet

Montre bracelet

Cette instructable contribue à vous faire belle et séduisante bijoux chaîne pour votre montre à petit prix.Étape 1: Éléments requisGrosses perles blanchesPetites perles de couleur orFil enduit d'orSerrure de montre de poignet orCadran de la montreÉta
Montre-bracelet de Tube Nixie simple

Montre-bracelet de Tube Nixie simple

Il s'agit d'une montre-bracelet de tube nixie roman que j'ai fait il y a quelques années qui utilise un microcontrôleur de MSP430f169 et de deux tubes nixie de IN-17. Elle a un accéléromètre afin que vous ne devez faire tourner votre poignet afin d'a
Montre-bracelet unique Tube Nixie de IN-2

Montre-bracelet unique Tube Nixie de IN-2

Il y a quelques années, j'ai découvert les Nixes et me suis acheté une horloge de Nixie à 4 chiffres, il n'a pas fallu longtemps avant que je voulais aussi faire une montre-bracelet avec un Nixie.Après une longue période de navigation sur internet po
ChronosMEGA ; une montre-bracelet

ChronosMEGA ; une montre-bracelet

J'ai toujours aimé les montres ; non seulement elles sont belles et esthétiques, mais elles sont fonctionnelles, précises et utiles. Une élégante fusion entre le génie et l'art ; normalement, deux opposés perspectives, s'est joints aujourd'hui à l'un
Steampunk montre-bracelet avec la couverture de l’iris mécanique. « TimEye ».

Steampunk montre-bracelet avec la couverture de l’iris mécanique. « TimEye ».

Steampunk montre-bracelet avec la couverture de l'iris mécanique.SWV1787 Merci pour l'excellente idée.
Platines de montre-bracelet

Platines de montre-bracelet

rayer des registres est beaucoup de plaisir, même si vous n'êtes pas un platiniste. Ne vous souhaite pas que vous pouvez abandonner beats phat et zéro partout où vous allez ? Eh bien maintenant vous le pouvez ; être un DJ Hero avec platines montre-br
Lampe tactique montre-bracelet

Lampe tactique montre-bracelet

Montres de poche sont une façon cool, mains-libres permettant d'éclairer, mais ils peuvent être assez coûteux. Cette montre de poche bricolage est un moyen bon marché, facile à transformer les choses que vous avez couché autour de la maison dans une
Arduino DIY LCD défilement shield texte

Arduino DIY LCD défilement shield texte

Ce projet est une mise à niveau sur mon « shield Arduino DIY LCD » allez voir comment le faire sur ma chaîne !Dans ce projet, je vais utiliser un Arduino Uno pour faire défiler du texte sur un écran LCD de 16 × 2 caractères qui est contrôlé avec une
Capteur couleur de Arduino DIY

Capteur couleur de Arduino DIY

Comment faire un capteur de couleur Arduino DIYÉtape 1: pièces 4 LED (vert, bleu, rouge, jaune)résistance ohms 4 2201 LDRrésistance de 1 10 kBroches femellesPCBEtape 2: Couper le circuit imprimé Façonner votre conception au CCP. Puis le couper. J'ai