Stap 3: programmeren
int transistorLine =0;int voltageSens =3; boolean dynamoOn= false; byte testruns =15;int thres =680;void setup(){. pinMode(transistorLine, OUTPUT); pinMode(voltageSens, INPUT);}void loop(){if(dynamoOn = IsDynamoRunning()) digitalWrite(transistorLine, LOW);else digitalWrite(transistorLine, HIGH);} boolean IsDynamoRunning(){ byte test=0;for(byte i =0; i < testruns; i++){if(analogRead(voltageSens)>= thres ) test++; delay(1);}if(test == testruns){return true;}elseif(test ==0){return false;}elsereturn dynamoOn;}
De programmering is relatief eenvoudig, dat we niet gewoon gebruiken één pin als analoog-input voor het meten van spanning vandaan van de generator. Op een opgegeven drempelwaarde (ik koos 680 die ongeveer 3 V moet) overschakelen we van batterij naar generator of generator op batterij. We meten de spanning meerdere malen en alleen het wijzigen van de voorwaarde als alle meting monsters respectievelijk boven of onder de drempel spanning. Dit wordt gedaan om te voorkomen dat eventuele flikkeren en beslissen of u wilt overschakelen naar de batterij of dynamo stabieler. De batterij-verbinding is ingeschakeld door de transistor controle pin op hoog en aldus het sluiten van de "overgang" van de batterij naar LED. Natuurlijk, het tegenovergestelde effect kan worden bereikt door over te schakelen naar laag.
Voor de bedrading van de Attiny85 en een handleiding over hoe om hem te programmeren met behulp van de Arduino board hebben een kijkje op deze link: http://highlowtech.org/?p=1695 of google "arduino attiny85"