Hur man gör en programvara klocka (1 / 3 steg)
Steg 1: I programmet:
Genom läsningen en kortfattad handbok och titta på exempel (här och där) kom jag till följande program:
(ledsen att jag inte vet hur hur till få den här i en trevlig fönster)
/ * Lära sig hur man programmera Arduino * /
/ * av Rob van Staalduinen - Nederländerna * /
byte [num] = {192,249,164,176,153,146,130,248,128,144,64,121,36,48,25,18,2,120,0,16}.
matris med siffror 0-9 och 0. -9. (för timme siffra [1])
byte [tid] = {0,0,0,0}. matris för att tiden i
byte push; knapp-push dröjsmål counter
Ogiltiga inställningar)
{för (byte en = 3; en < = 13; a ++) / / uppsättningar datapins 4 till 13 till utgång
{pinMode(a,OUTPUT);} 3 = summern 4 = latch 7 = clk 8 = data 10-13 = lysdioder
digitalWrite(3,HIGH);} slutar buzzerd från pipa
void loop()
{länge hastighet = 37500+(1024-analogRead(0)) * 2. / / gång ändrar counter; tid-hastighet för
differend styrelser använda potmeter på sköld
för (byte c = 10; c < = 13; c ++) / / LED slinga
{digitalWrite(c,HIGH);} sekunder-ledda uppsättningar [c] off
För (lång en = 0; en < = hastighet; a ++) / / fördröjning timer
{om (analogRead(1)==LOW) / / läser Knapp1
{tid [1] = tid [1] +(!push); push = 60.} lägger till 1 till timmar
Om (analogRead(2)==LOW) / / läser button2
{tid [2] = tid [2] +(!push); push = 60.} lägger till 10 minuter
Om (analogRead(3)==LOW) / / läser button3
{tid [3] = tid [3] +(!push); push = 60.} lägger till 1 minuter
push = push-(push>0); Down-counter för knappen-push
om (tid [3] > 9) {tid [3] = 0; tid [2] = tid [2] + 1;} / / anger minuter + 10 om över 9 och gå till 0
om (tid [2] > 5) {tid [2] = 0; tid [1] = tid [1] + 1;} / / anger timmar + 1 om över 5 och gå till 0
om (tid [1] > 9) {tid [1] = 0; tid [0] = tid [0] + 1;} / / anger timmar + 10 om över 9 och gå till 0
om ((tid [0] > 1) & & (tid [1] > 3)) {tid [1] = 0; tid [0] = 0; / / anger timmar till 0 om högre än 23
digitalWrite(3,LOW); Delay(30);digitalWrite(3,High);} Piper varje timme
för (char b = 0; b < = 3; b ++) / / slinga för att skriva 4 siffror
{digitalWrite(4,LOW); / / inaktivera utgångar
shiftOut (8,7, MSBFIRST,(num[time[b]+10*(b==1)])); skriver nummer-data
shiftOut (8,7, MSBFIRST,(241+(b==1)+3*(b==2)+7*(b==3))); skriver siffran-data
digitalWrite(4,HIGH);} Skicka data till utgångar
digitalWrite(a/(speed/4)+10,LOW);} anger 15 sekunder ledde
tid [3] = tid [3] + 1;} lägger till 1 minut till tid