Arduino Domino klockan (7 / 9 steg)
Steg 7: programvara del - förklaring av koden (2)
5) skriva koden för knapparna, för att ställa in tiden i timmar och minuter. Här är vi kommer för att använda en Dämpningstid koden med ett knapptryck för att undvika flera ändringar med varje tryckDu kan titta på referensen här: http://www.arduino.cc/en/Tutorial/Debounce
int hourState = digitalRead(hourPin); int buttonState; den nuvarande hourstate från ingångsstiftet lång lastDebounceTime = 0; sista gången utgångsstiftet var växlas Timmars justering om (hourState == hög) {
int minState = digitalRead(minPin);
int lastButtonState = låg; den tidigare hourstate från ingångsstiftet
int buttonState2; den nuvarande hourstate från ingångsstiftet
int lastButtonState2 = låg; den tidigare hourstate från ingångsstiftet
lång debounceDelay = 50; debounce tiden; öka om utdata flimrar
Om knappen trycks
1) återställa debouncing timern
2) ta debounce förseningen som den nuvarande staten
3) inställd tid
4) rädda hourstat
lastDebounceTime = millis();
om ((millis()-lastDebounceTime) > debounceDelay) {
buttonState = hourstate;
}
tid t = now();
t = t + 3600;
setTime(t);
lastButtonState = hourstate;
}
Minut justering
om (minState == hög) {
lastDebounceTime = millis();
om ((millis()-lastDebounceTime) > debounceDelay) {
buttonState2 = minstate;
}
tid t = now();
t = t + 60.
setTime(t);
lastButtonState2 = minstate;
}
6) sista delen är att flytta data. En mycket god handledning kan hittas här:
http://Arduino.cc/en/reference/ShiftOut
h = hourFormat12(); om (previousHours! = h) { digitalWrite (hlatchPin, hög); digitalWrite (dlatchPin, hög); digitalWrite (mlatchPin, hög),
m = minute();
digitalWrite (hlatchPin, låg);
shiftOut (hdataPin, hclockPin, MSBFIRST, (number_to_display [h] >> 8));
shiftOut (hdataPin, hclockPin, MSBFIRST, hours_display[h]);
previousHours = h;
}
om (previousMins! = m) {
minuter = m;
om (mins > = 10) {
d = 0;
medan (mins > = 10) {
minuter = min - 10.
d = d + 1.
}
digitalWrite (dlatchPin, låg);
shiftOut (ddataPin, dclockPin, MSBFIRST, (number_to_display [d] >> 8));
shiftOut (ddataPin, dclockPin, MSBFIRST, number_to_display[d]);
digitalWrite (mlatchPin, låg);
shiftOut (mdataPin, mclockPin, MSBFIRST, (number_to_display [minuter] >> 8));
shiftOut (mdataPin, mclockPin, MSBFIRST, number_to_display[mins]);