Stap 3: De software...
Voor de programmering van de microcontroller gebruikte ik de "Arduino: IDE.
Hoe te programmeren Attiny chips met behulp van "Arduino" kan worden gezien hier. Ik heb de benodigde bibliotheken bijgevoegd. De broncode is ook bevestigd. Voor het compileren die ik heb gebruikt de volgende configuratie van de Raad van bestuur: Attiny84 (interne 1MHz klok) uit het menu boards welke worden weergegeven na het installeren van de juiste van de "attiny-master" bibliotheken. . Na het compileren van de broncode, moet het gecompileerde "Hexuitdraai" bestand in de chip worden gebrand. De vorige link tonen hoe de chip moet worden aangesloten. Ik gebruikte voor het branden USBtinyISP programmeur. Hoe te branden van de "Hexuitdraai" bestand kan worden gezien hier. Als yo hebben geen geschikte programmeur - u kunt proberen dit. Na het "Hexuitdraai" bestand te branden, moeten de zekeringen van de microcontroller worden ingesteld. Hier kunt u de gewenste zekeringen waarden berekenen. Ik heb het volgende gebruikt:
Lage 62
Hoge DF
Uitgebreid FF
De zekering branden proces wordt beschreven in de bovenstaande koppelingen (hetzelfde voor het branden van de "Hexuitdraai" bestand)
De ingesloten video toont de instellingen voor het branden en testen van de chip.
Ik wil invoegen van sommige extra woorden over de code. Er zijn twee nummers, die worden gebruikt voor de drempels voor het schakelen van ON en off van het apparaat. De OFF-waarde is 20-40 eenheden kleiner dan de ON-waarde. Dit maakt sommige hysteresis en daarbij veel lawaai immuniteit.
Het definiëren van de ON-waarde?
Moet je de trimmer-potentiometer aan een middelste waarde. Na dat u moet meten de spanningsval over de LDR op het niveau van de lichtintensiteit, waartegen je dat wilt het begin van het apparaat te werken. Het nummer voor het inschakelen van het apparaat u kunt berekend op de volgende wijze
Val = Vldr * 1024/Vsup; waar Vsup is het aanbod van de chip (in ons geval 5 V) en Vldr is de gemeten spanningsval over de LDR.
Blijkt dat het apparaat 3 modi gecontroleerd door de 3-positionele schuifschakelaar heeft:
1) "OFF" - het apparaat is geleverd, maar er is niet een functie - de rode "Power LED" is
2) "Actieve" - het apparaat is de lichtintensiteit sensing en als het zakt tot onder de drempel - het begint te leiden tot de LED's modulerende willekeurig hun intensiteit door het gebruik van PWM voor willekeurige tijdsperioden. In deze modus is de rode "Power LED" op. Een witte LED aan de rechterkant geeft aan dat het apparaat klaar is.
3) "Gedwongen" - de knevel van de LED's onafhankelijk op het lichtniveau.
Om een soort van echte willekeurige getallen een analoge zintuigen input de veranderlijk met de tijd die potentieel in het interconnectiepunt tussen beide weerstanden R14 en R13. Dit wordt uitgevoerd door de volgende opdracht rij:
randomSeed(analogRead(4));
De weerstand R14 kan worden weggelaten en in dat geval dit punt op de levering via R13 wordt overbrugd. Dit verandert niet verstandig de prestaties.