Arduino Powered binär klocka (5 / 5 steg)
Steg 5: Arduino skiss
/*
En öppen källkod binär klocka för Arduino.
Baserat på koden från av Rob Faludi (http://www.faludi.com)
Kod enligt (cc) av Daniel Spillere Andrade, www.danielandrade.net
http://creativecommons.org/License/CC-GPL
*/
int näst = 0, minut = 0, timme = 0; starttid på 00:00:00
int munit, hunit, valm = 0, valh = 0, ledstats, i.
void setup() {//set utgångar och ingångar
pinMode (1, utgång), pinMode (2, utgång), pinMode (3, OUTPUT); pinMode (4, OUTPUT), pinMode (5, OUTPUT);
pinMode (6, OUTPUT), pinMode (7, OUTPUT), pinMode (8, OUTPUT); pinMode (9, OUTPUT), pinMode (10, OUTPUT);
pinMode (11, OUTPUT), pinMode (12, OUTPUT), pinMode (13, OUTPUT);
pinMode (0, ingång);
}
void loop() {
statiska osignerade långa lastTick = 0; Ställ in en lokal variabel för att hålla sista gången flyttade vi fram en sekund
(statiska variabler initieras en gång och hålla deras värden mellan funktionsanrop)
Flytta framåt en sekund varje 1000 millisekunder
om (millis() - lastTick > = 1000) {
lastTick = millis();
andra ++;
}
flytta fram en minut var 60 sekunder
om (andra > = 60) {
minut ++;
för det andra = 0; nollställs sekunder
}
gå framåt en timme varje 60 minuter
om (minut > = 60) {
timme ++;
minut = 0; nollställs minuter
}
om (timme > = 24) {
timme = 0;
minut = 0; nollställs minuter
}
Munit = minut % 10. ställer in variabeln munit och hunit enhet siffror
hunit = timme % 10.
ledstats = digitalRead(0); Läs indatavärdet för kvittning lysdioder, men att hålla räkningen
om (ledstats == låg) {
för (jag = 1; jag < = 13; i ++) {
digitalWrite (i, låg);}
} annat {
minuter enheter
om (munit == 1 || munit == 3 || munit == 5 || munit == 7 || munit == 9) {digitalWrite (1, hög);} annat {digitalWrite(1,LOW);}
om (munit == 2 || munit == 3 || munit == 6 || munit == 7) {digitalWrite (2, hög);} annat {digitalWrite(2,LOW);}
om (munit == 4 || munit == 5 || munit == 6 || munit == 7) {digitalWrite (3, hög);} annat {digitalWrite(3,LOW);}
om (munit == 8 || munit == 9) {digitalWrite (4, hög);} annat {digitalWrite(4,LOW);}
minuter
om ((minut > = 10 & & minuten < 20) || (minut > = 30 & & minuten < 40) || (minut > = 50 & & minuten < 60)) {digitalWrite 5, hög} annat {digitalWrite(5,LOW);}
om (minut > = 20 & & minuten < 40) {digitalWrite (6, hög);} annat {digitalWrite(6,LOW);}
om (minut > = 40 & & minuten < 60) {digitalWrite (7, hög);} annat {digitalWrite(7,LOW);}
timme enheter
om (hunit == 1 || hunit == 3 || hunit == 5 || hunit == 7 || hunit == 9) {digitalWrite (8, hög);} annat {digitalWrite(8,LOW);}
om (hunit == 2 || hunit == 3 || hunit == 6 || hunit == 7) {digitalWrite (9, hög);} annat {digitalWrite(9,LOW);}
om (hunit == 4 || hunit == 5 || hunit == 6 || hunit == 7) {digitalWrite (10, hög);} annat {digitalWrite(10,LOW);}
om (hunit == 8 || hunit == 9) {digitalWrite (11, hög);} annat {digitalWrite(11,LOW);}
timme
om (timme > = 10 & & timme < 20) {digitalWrite (12, hög);} annat {digitalWrite(12,LOW);}
om (timme > = 20 & & timme < 24) {digitalWrite (13, hög);} annat {digitalWrite(13,LOW);}
}
valm = analogRead(0); lägga till en minut när du trycker
IF(valm<800) {
minut ++;
för det andra = 0;
Delay(250);
}
valh = analogRead(5); Lägg till en timme när du trycker
IF(valh<800) {
timme ++;
för det andra = 0;
Delay(250);
}
}