Lär dig mer om mikrokontroller (12 / 18 steg)
Steg 12: Blinky, Blinky.
Nu när vi har fått Tiny2313 för att kunna slå LED av och på, på kommando, vad sägs om mer avancerade saker? Eftersom vi inte har riktigt gått in ett verkligt program här (det hemliga som jag nämnde), behöver vi inte ge BASCOM ett nytt programnamn.
Ange det som uttalandet ovan reset uttalande i ditt program:
"Huvudprogrammet
ställa PortB.0 "vända LED på
återställa PortB.0 ' vända LED av
Detta verkar vara rätt, korrekt? "2313 chip kommer att sätta en hög (+ 5V) signal på PB0 PIN-koden och sedan omedelbart få det klämmer fast tillbaka till marken. Den + 5V kommer att orsaka elektroner att flöda genom LED, vilket gör det ljust och sedan låg, eller marken, på PB0 kommer att orsaka LED att gå ut, rätt?
Kompilera ditt nya program genom att trycka på F7-tangenten på tangentbordet. Se till att det finns inga fel visas längst ned i ditt BASCOM fönster, och sedan öppna fönstret programmerare genom att trycka på F4-tangenten. Igen, skicka din kompilerade program till 2313 genom att klicka på alternativet nere på menyn Chip.
Din Tiny2313 chip kommer att omedelbart köra det nya programmet, tända lampan och sedan omedelbart slår den backa. Rätt?
Vad? Vänta en minut-vad hände här? Det verkar som det är något fel med programmet, inte det? LED lyser inte alls. Om du vill se Tiny2313 kör programmet igen, trycker du bara på reset-knappen under och till vänster om Tiny2313 chip själv. Programmet lagras i "2313 chip och Återställ kommer att orsaka chip till springa programmet varje gång som den är intryckt. Fortfarande ingenting, dock rätt?
Jo, faktiskt, LED ljus. Det är precis som datorer fungerar extremt snabbt, och Tiny2313 påslagen lysdioden och sedan omedelbart avstängd det tillbaka. Detta hände i bara några miljondelar av en sekund, alldeles för fort för ögat att märka blixten.
Om du tittar igenom BASCOM-AVR manualen, kommer att du köra över ett uttalande som kallas vänta. Detta uttalande säger datorn att göra exakt vad det står. Parametern, eller nummer, som du skriver efter programsatsen vänta är antalet sekunder som du vill Tiny2313 att pausa, innan du fortsätter med programmet.
Låt oss fixa upp vårt program. Mellan ange enheten och återställa uttalande, ett vänta uttalande med en fördröjning av 1, såhär:
"Huvudprogrammet
ställa PortB.0 "vända LED på
vänta 1' paus i 1 sekund
återställa PortB.0 ' vända LED av
Kompilera ditt nya program genom att trycka på F7-tangenten på tangentbordet. Se till att det finns inga fel visas längst ned i ditt BASCOM fönster, och sedan öppna fönstret programmerare genom att trycka på F4-tangenten. Igen, skicka din kompilerade program till 2313 genom att klicka på alternativet nere på menyn Chip.
Din Tiny2313 chip kommer att omedelbart köra det nya programmet, tända lampan och sedan efter ca en sekund, vrida den backa. Denna gång programmet fungerar, rätt? Kom ihåg att datorn gör exakt vad du berätta den till. Om du säger det att göra något för snabbt, då är det precis vad det kommer att göra. När du berättade Tiny2313 att aktivera LED och sedan off, det gjorde just det; bara var det så snabbt att det var ganska meningslöst för er. Igen, om du vill se Tiny2313 köra programmet igen, bara tryck på reset-knappen på datorn Tiny2313 försöksledaren.
Nu när ditt program fungerar korrekt, spara ditt program, innan du går på. (En ytterligare påminnelse, klicka på filen och klicka på Spara.)
Börjar ett nytt program genom att klicka på filen och sedan klicka på Spara som... och namn programmet LED Test 03. Ändra raden vänta: vänta 2, vad tror du tror detta kommer att göra? Försöka bygga detta program och ner det till din försöksledaren styrelse (tryck på F7 och sedan på F4 och klicka sedan på nere) – gjorde det vad du trodde? Numret, säger efter programsatsen vänta registeransvarige hur länge (i sekunder) för att vänta innan du fortsätter med nästa uttalande (uttrycket Återställ.) Detta nya program bör lämna lysdioden lyser i ca två sekunder innan den stängs tillbaka.
Det är bra att ha handkontrollen full sekunder, lysa datorer verkligen på att göra saker snabbt. Ibland behöver du ha din controller paus under en kortare tid. Ett uttalande som är relaterad till vänta uttalande, som gör att du mycket bättre kontroll över fördröjningstiderna, är: waitms. Du kan hitta en beskrivning av waitms uttalande i manualen, men detta står för "vänta ett visst antal millisekunder (eller 1/1000ths av en sekund.") Du skulle använda den precis som du skulle vänta uttalandet, förutom att tiden anges i tusendelar av en sekund (waitms 1000 är samma som vänta 1.)
Leka med programmet, ersätta uttrycket waitms för programsatsen vänta. Se vad som händer med din lysdiod blinkar. Försök med att sänka fördröjningstiden; försök att hitta den kortaste fördröjningen som du faktiskt kan märka. Det genomsnittliga mänskliga ögat kan märka saker händer på om 30 gånger per sekund (eller Hertz, som betyder "per sekund"). Om en lampa blinkar snabbare än så, ditt öga kommer inte att märka blinkandet kommer att berätta din hjärna att ljuset är stadigt av, eller på Denna 30 Hertz (eller 30 Hz) blinkar lika ut för att vara ca 33 ms, eller ca 16 ms och sedan inaktivera. Se hur nära du kan komma till 16 ms innan LED verkar vara utanför. Ögat kommer att märka och svara bättre om rummet ljuset sänks eller LED-lampan är upp; Prova att stänga rummet ljus ut medan du utför detta experiment.
Försök att förlänga programsatsen paus. Ange siffror runt 2000 eller 4000 och försök med ett stoppur för att se hur exakt du kan få starta timern och sedan stoppa den. Du kommer inte att kunna få perfekt, exakt korrekt, eftersom mänskliga svarstiden mäts i millisekunder. Med andra ord, från den tid då ögat ser LED vända på, tills din hjärna säger ditt finger för att trycka på start på stoppuret, tills fingret faktiskt fungerar, kommer att ta flera hundra millisekunder. Det kan vara ganska underhållande att se hur nära du kan komma till den tid du angett i uttrycket paus.
Med Tiny2313 flash LED kan vara ganska kul, men ändå, kan en ficklampa göra det-igen, "baby steg."