Stap 12: Blinky, BLINKIE.
Nu dat we hebben gekregen de Tiny2313 te kunnen inschakelen de LED in- en uitschakelen, opdracht, hoe zit meer geavanceerde dingen? Aangezien we een echt programma hier (dat geheim die ik noemde) echt niet hebben ingevoerd, hoeven we niet BASCOM een programmanaam te geven nieuwe.
Die instructie set boven de reset instructie in uw programma opnieuw in te voeren:
' Hoofdprogramma
instellen van PortB.0 ' Zet LED op
PortB.0 Reset ' Zet LED uit
Dit lijkt te zijn van juiste, correcte? De ' 2313 chip zal een signaal van hoge (+ 5V) zetten de PB0 pin en breng vervolgens onmiddellijk dat pin terug naar de grond. De + 5V zal veroorzaken elektronen stroom door de LED, waardoor het licht, en vervolgens de laag, of grond, op PB0 zal veroorzaken de LED om uit te gaan, recht?
Uw nieuwe programma compileren door te drukken op de functietoets F7 op uw toetsenbord. Ervoor te zorgen dat er staan geen fouten weergegeven aan de onderkant van uw BASCOM-venster, en open vervolgens de Programmer-venster door op de F4 functietoets te drukken. Nogmaals, stuur uw gecompileerde programma naar de ' 2313 door te klikken op de optie Autoprogram op het menu van de Chip.
Uw Tiny2313-chip wordt het nieuwe programma onmiddellijk uitgevoerd, de LED verlichting en vervolgens onmiddellijk draaien het terug af. Toch?
Wat? Wacht een minuut-wat hier gebeurd is? Het blijkt dat er iets mis met het programma, nietwaar is? De LED licht niet helemaal. Als u zien van de Tiny2313 start het programma opnieuw wilt, net druk op de reset-knop onder en links van de Tiny2313 chip zelf. Het programma is opgeslagen in de ' 2313-chip en de reset zorgt voor de chip voor stormloop naar de programma elke keer dat deze wordt ingedrukt. Nog steeds niets, hoewel, toch?
Nou, eigenlijk, de LED licht. Het is gewoon dat computers werken uiterst snel, en de Tiny2313 de LED ingeschakeld en vervolgens onmiddellijk uitgeschakeld terug. Dit gebeurde in slechts een paar miljoenste van een seconde, veel te snel voor je oog te merken van de flitser.
Als je via de BASCOM-AVR-handleiding kijkt, zal je lopen over een verklaring genoemd wachten. Deze instructie vertelt de computer te doen precies wat het zegt. De parameter, of getal, dat u typt na de verklaring van de wacht is het aantal seconden dat u wilt dat de Tiny2313 onderbreken, voordat u doorgaat met het programma.
Laten we vaststellen van ons programma. Tussen Voer de set en de reset instructie, een instructie van de wacht met een vertraging van 1, als volgt:
' Hoofdprogramma
instellen van PortB.0 ' Zet LED op
wacht 1' pauzeren gedurende 1 seconde
PortB.0 Reset ' Zet LED uit
Uw nieuwe programma compileren door te drukken op de functietoets F7 op uw toetsenbord. Ervoor te zorgen dat er staan geen fouten weergegeven aan de onderkant van uw BASCOM-venster, en open vervolgens de Programmer-venster door op de F4 functietoets te drukken. Nogmaals, stuur uw gecompileerde programma naar de ' 2313 door te klikken op de optie Autoprogram op het menu van de Chip.
Uw Tiny2313-chip wordt het nieuwe programma, de LED verlichting onmiddellijk uitgevoerd en vervolgens na ongeveer één seconde draaien het terug af. Ditmaal het programmawerk, recht? Vergeet niet, de computer doet precies wat je te vertellen. Als u vertellen om iets te doen te snel, dan is dat precies wat het zal doen. Wanneer u vertelde de Tiny2313 de LED inschakelen en vervolgens uitschakelen, deed het dat; alleen was het zo snel dat het was vrijwel nutteloos aan u. Nogmaals, als u zien van de Tiny2313 stormloop uw programma weer wilt, gewoon druk op de reset-knop op uw Tiny2313 experimentator systeem.
Nu dat uw programma, uw programma werken correct opslaan alvorens over te gaan. (Één meer aanmaning, klik op bestand en klik op opslaan.)
Een nieuw programma beginnen door te klikken op bestand en vervolgens te klikken op Opslaan als... en naam het programma opslaan LED Test 03. Verander de lijn wachten tot: 2, wat wil je wachten denk dat dit zal doen? Probeer dit programma compileren en deze te downloaden naar je experimentator Board (druk op de F7 toets en vervolgens de F4-toets en klik op Autoprogram) – deed het doen wat je dacht? Het nummer, vertelt na de verklaring van de wacht, de controller hoe lang (in seconden) moet worden gewacht voordat u verdergaat met de volgende instructie (de reset instructie.) Dit nieuwe programma moet de LED verlicht voor ongeveer twee seconden alvorens het terug uitgeschakeld laten.
Hoewel het handig om te hebben je controller volle seconden wachten, schitteren computers echt op dingen snel doen. Soms moet u uw controller moet pauzeren voor een kortere periode. Een verklaring, die gerelateerd is aan de wacht-instructie, waarmee u veel fijnere controle over de vertragingstijden, is: waitms. U vindt een beschrijving van de waitms-instructie in de handleiding, maar dit staat voor "wachten op een opgegeven aantal milliseconden (of 1/1000sten van een seconde.") Zou u het precies zoals u zou de verklaring van de wachten, behalve dat de tijd wordt uitgedrukt in duizendsten van een seconde (waitms 1000 is hetzelfde als 1 wachten.)
Spelen met het programma, vervanging van de waitms-instructie voor de verklaring van de wacht. Zie wat er gebeurt met uw LED knippert. Probeer te verlagen van de vertragingstijd; proberen te vinden van de kortste vertraging die je eigenlijk ziet. Het gemiddelde menselijk oog ziet dingen gebeuren op over 30 keer per seconde (of Hertz, wat betekent "per seconde"). Een licht knippert sneller dan dat, je oog ziet niet het knipperen als zal vertellen je hersenen dat het licht gestaag, of uitschakelen. Deze knipperen 30 Hertz (of 30 Hz) is gelijk aan uit ongeveer 33 ms, of ongeveer 16 ms en vervolgens uitschakelen. Zie hoe dicht kunt u 16 ms voordat de LED lijkt te blijven uit. Uw oog zullen opmerken en beter reageren als de kamer licht wordt verlaagd of het LED-licht is verhoogd; Probeer het draaien van de kamer lichten uit tijdens het uitvoeren van dit experiment.
Probeer verlenging van de verklaring van de pauze. Voer getallen rond 2000 of 4000, en probeer met behulp van een stopwatch om te zien hoe nauwkeurig je kunt krijgen in de timer starten en vervolgens het stoppen van het. U zult niet kunnen krijgen perfect, precies nauwkeurig, omdat de menselijke reactietijd wordt gemeten in milliseconden. Met andere woorden, vanaf het moment dat uw oog de LED inschakelen ziet, totdat uw hersenen uw vinger vertelt aan druk op start op de stopwatch, totdat uw vinger eigenlijk het werk doet, duurt enkele honderden milliseconden. Het kan het soort vermakelijk om te zien hoe dicht u kunt krijgen op de tijd die u hebt ingevoerd in de verklaring van de pauze.
Gelet op de Tiny2313 flash de LED kan soort van plezier, maar toch, kan een zaklamp doen dat-nogmaals, 'baby steps'.