Paso 7: parte de software - explicación del código (2)
5) escribir el código para los botones, para ajustar el tiempo para horas y minutos. Aquí vamos a utilizar un debounce código con la pulsación para evitar múltiples cambia con cada pulsación sonPuedes mirar la referencia aquí: http://www.arduino.cc/en/Tutorial/Debounce
int hourState = digitalRead(hourPin); int buttonState; la hourstate actual de la entrada de pin lastDebounceTime largo = 0; la última vez que el pin de salida fue fijado Ajuste de hora Si (hourState == HIGH) {} Ajuste de minutos
int minState = digitalRead(minPin);
int lastButtonState = bajo; el hourstate anterior de la entrada de pin
int buttonState2; la hourstate actual de la entrada de pin
int lastButtonState2 = bajo; el hourstate anterior de la entrada de pin
debounceDelay largo = 50; el tiempo de debounce; aumentar si la salida parpadea
Si se presiona el botón
1) reiniciar el temporizador debouncing
2) tome el debounce delay como el estado actual
3) tiempo
4) guardar el hourstat
lastDebounceTime = millis();
Si ((millis()-lastDebounceTime) > debounceDelay) {}
buttonState = hourstate;
}
time_t t = now();
t = t + 3600;
setTime(t);
lastButtonState = hourstate;
}
Si (minState == HIGH) {}
lastDebounceTime = millis();
Si ((millis()-lastDebounceTime) > debounceDelay) {}
buttonState2 = minstate;
}
time_t t = now();
t = t + 60;
setTime(t);
lastButtonState2 = minstate;
}
6) última parte está modificando los datos. Aquí encontrarás un tutorial del mismo Dios:
http://Arduino.CC/en/Reference/ShiftOut
h = hourFormat12(); Si (previousHours! = h) {} digitalWrite (hlatchPin, HIGH); digitalWrite (dlatchPin, HIGH); digitalWrite (mlatchPin, HIGH);
m = minute();
digitalWrite (hlatchPin, bajo);
shiftOut (hdataPin, hclockPin, MSBFIRST, (number_to_display [h] >> 8));
shiftOut (hdataPin, hclockPin, MSBFIRST, hours_display[h]);
previousHours = h;
}
Si (previousMins! = m) {}
minutos = m;
Si (minutos > = 10) {}
d = 0;
mientras que (minutos > = 10) {}
minutos = minutos - 10;
d = d + 1;
}
digitalWrite (dlatchPin, bajo);
shiftOut (ddataPin, dclockPin, MSBFIRST, (number_to_display [d] >> 8));
shiftOut (ddataPin, dclockPin, MSBFIRST, number_to_display[d]);
digitalWrite (mlatchPin, bajo);
shiftOut (mdataPin, mclockPin, MSBFIRST, (number_to_display [min] >> 8));
shiftOut (mdataPin, mclockPin, MSBFIRST, number_to_display[mins]);