IButton garage-dörröppnare (Arduino) (4 / 10 steg)
Steg 4: Klockan
Ledningarna
Ledningarna är bara att lägga två knappar, så det är inte så svårt.
För att få knappar arbeta releiable på en Arduino, du behöver använda en dra ner motstånd (ansluten till GND) eller en dra upp motstånd (ansluten till den + 5V).
Detta 10 kOhm motstånd hand tar att knappen är låg eller hög, när det inte skjuts. Jag använde en dra upp motstånd, så min knappar är hög när de inte skjuts.
(Lär dig allt du aldrig velat veta på knapparna på Arduinos här:)
- Anslut en tråd från den + remsor av bakbord till + 5V på Arduino
- Anslut en tråd från-remsa av bakbord till GND på Arduino
- Lägg två knappar i skärbräda
- ansluta ett 10kOhm motstånd mellan ett ben av knappen och den + band (2 x)
- Anslut en tråd från den samma delen av knappen där motståndet är ansluten, stift 8 av Arduino (och pin 9 från andra knappen)
- Anslut en tråd från den andra etappen av knapparna till de-strip (2 x)
Skissen
Jag försökte skriva min egen skiss, med hjälp av funktionen [millis] på Arduino, men det var inte så lätt som jag trodde det skulle vara, så jag sökte på www.arduino.cc och hittade några fina bibliotek och skisser. Enda var att alla skisser användas något yttre ställa in tiden (internet, serieport eller RTC). Jag ville använda de två knapparna för att ställa in tiden, så det fanns fortfarande vissa programmering att göra för mig.
Jag hade fortfarande inte LCD, så funktionen följetong-monitor av Arduino-programvaran kommer att vara min skärm för nu.
Innan du kan köra skissen, måste du ladda ner biblioteket från här: http://www.arduino.cc/playground/Code/Time och placera den i mappen [arduino]. (och starta om Arduino-programvara)
Koden
#include < Time.h > //adding tid-biblioteket
int knoptijd = 400. ställa in alla variabler (ledsen för de holländska namn)
int uur = 12.
int minuut = 15.
int seconde = 0;
int dag = 10;
int maand = 9.
int Johansson = 2011.
int knopset = 10;
int knopmode = 11;
int setwaarde = 0;
int modewaarde = 0;
void setup() {
pinMode (knopset, ingång);
pinMode (knopmode, ingång);
Serial.BEGIN(9600);
setTime(uur,minuut,seconde,dag,maand,jaar); Ange starttid för klockan när den startar
}
void loop() {
setklok();
digitalClockDisplay();
Delay(1000);
}
void setklok() {//setting klockan
modewaarde = digitalRead(knopmode);
om (modewaarde == låg) {//if [mode]-knappen är pusched
Serial.println ("tijd instellen");
ställa in timmarna
Serial.println("uur");
Serial.println(uur);
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
medan (modewaarde == hög) {
Delay(knoptijd);
setwaarde = digitalRead(knopset);
om (setwaarde == låg) {
uur ++;
om (uur > 24) uur = 1;
Serial.println(uur);
}
modewaarde = digitalRead(knopmode);
}
miljö i minuter
Serial.println("minuut");
Serial.println(minuut);
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
medan (modewaarde == hög) {
Delay(knoptijd);
setwaarde = digitalRead(knopset);
om (setwaarde == låg) {
minuut ++;
om (minuut > 59) minuut = 0;
Serial.println(minuut);
}
modewaarde = digitalRead(knopmode);
}
ställa in månad
Serial.println("maand");
Serial.println(maand);
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
medan (modewaarde == hög) {
Delay(knoptijd);
setwaarde = digitalRead(knopset);
om (setwaarde == låg) {
maand ++;
om (maand > 12) maand = 1;
Serial.println(maand);
}
modewaarde = digitalRead(knopmode);
}
att dag
Serial.println("dag");
Serial.println(dag);
Delay(knoptijd);
modewaarde = digitalRead(knopmode);
medan (modewaarde == hög) {
Delay(knoptijd);
setwaarde = digitalRead(knopset);
om (setwaarde == låg) {
dag ++;
om (maand == 1 || maand == 3 || maand == 5 || maand == 7 || maand == 8 || maand == 10 || maand == 12) {
om (dag > 31) dag = 1;
}
om (maand == 4 || maand == 6 || maand == 9 || maand == 11) {
om (dag > 30) dag = 1;
}
om (maand == 2) {
om (dag > 28) dag = 1;
}
Serial.println(dag);
}
modewaarde = digitalRead(knopmode);
}
setTime(uur,minuut,seconde,dag,maand,jaar);
}
}
void digitalClockDisplay() {//printing tid och datum
Serial.Print(Hour());
printDigits(minute());
Serial.Print("");
Serial.Print(Day());
Serial.Print("/");
Serial.Print(Month());
Serial.println();
}
void printDigits (int siffror) {
verktyget funktion för digital klocka: utskrifter före kolon och ledande 0
Serial.Print(":");
IF(digits < 10)
Serial.Print('0');
Serial.Print(digits);
}