Stap 3: Software
Deze sketch is heel eenvoudig, gewoon een reeks van opeenvolgende IF-instructies te vergelijken spanning doorlezen ADC3 met sommige vooraf gedefinieerde waarden. Als u de code op de voet volgen, ziet u dat de waarden die worden weergegeven in de diavoorstelling van de theorie van de werking in stap 1 dezelfde waarden in de verschillende IF-instructies gebruikt om te beslissen welke LED worden op moet komen.
Als u wilt maken het knipperende effect op LEDs wanneer spanningen hoger dan de 13.1V zijn, wordt een teller verhoogd met één op elke doorheen dat gedeelte van de code. Voordat de code loops terug opnieuw te lezen ADC3, is uitvoering vertraagde 100 milliseconden. ALS instructies LEDs inschakelt wanneer de teller pass is onder 6 en beurt LEDs uitgeschakeld wanneer de teller is tussen de 6 en 11. Zodra de teller bereikt 11, de teller op nul wordt teruggesteld te herhalen van de cyclus.
ADC3 ingang is gebruikt om te lezen van de analoge spanning vanuit de scheidingslijn van de spanning. By the way, was ADC0 de eerste keuze als de analoge ingang van dit project, echter toen vanuit de accu spanning was een beetje lager dan 8.7V die alle drie LEDs zou gaan. Dit leek niet recht als ik had een laag-dropout spanningsregelaar gebruikt. Na het doen van wat meer onderzoek op het web vond ik dat om het even wanneer u een PIN-code hebt gebruikt als input die ook als hardware Reset fungeren kan, deze dingen zouden kunnen gebeuren. Zodra de ADC3 werd geselecteerd als de analoge ingang, accuspanning kon komen dicht bij 6V en rode LED zou nog wat betekent de software zou nog steeds worden uitgevoerd. Het was toen dat verdere om problemen te vermijden, ongebruikte pin 1 en 5 werden getrokken tot + 5 v via 10 K weerstanden.
ATtiny 13 code:
Deze schets bewaakt accuspanning en draait op een LED gebaseerd.
Type processor: ATtiny 13.
Auteur: rlarios
Datum: 13.04.03
//
int rLED = 4; Rode LED pin
int yLED = 1; Gele LED pin
int gLED = 2; Groene LED pin
int val = 0; Deze variabele zal spanning invoerwaarde houden
int dlyctr = 0; Dit is de vertraging teller.
VOID Setup {}
pinMode (rLED, OUTPUT); Definiëren van de output van de rode LED
pinMode (yLED, OUTPUT); Ditto gele LED
pinMode (gLED, OUTPUT); Ditto groene LED
}
void loop {}
Val = analogRead(A3); Lezen van spanning tot en met analoge ingang 3
if(Val<452) {//Is accuspanning onder 9.6V?
digitalWrite (rLED, hoge); Ja, dit is slecht, inschakelen van rode LED
digitalWrite (yLED, laag); Gele LED uitschakelen
digitalWrite (gLED, laag); Groene LED uitschakelen
}
anders
{
if(Val<594) {//Is batterijspanning tussen 9.6V en 12.4V?
digitalWrite (rLED, laag); Dit is een lage spanning, rode LED uitschakelen
digitalWrite (yLED, hoge); Yelow LED inschakelen als een waarschuwing.
digitalWrite (gLED, laag); Groene LED uitschakelen
}
anders
{
if(Val<629) {//Is batterijspanning tussen 12.4V en 13.1V terwijl niet actief?
digitalWrite (rLED, laag); Ja, uitschakelen van rode LED
digitalWrite (yLED, laag); Gele LED uitschakelen
digitalWrite (gLED, hoge); Groene LED om aan te geven van een volledig opgeladen batterijspanning inschakelen.
}
anders
{
dlyctr = dlyctr + 1; vertraging teller te verhogen. elke pass ca. 100ms
if(Val<751) {//Is: de accuspanning is boven 13.1V en onder 15.5V.?
digitalWrite (rLED, laag); Rode LED uitschakelen
digitalWrite (yLED, laag); Gele LED uitschakelen
if(dlyctr<6) {}
digitalWrite (gLED, hoge); Pulse groene LED op voor een halve seconde
}
anders
{
digitalWrite (gLED, laag); Pulse groen OPENDE voor een halve seconde te tonen van de batterij wordt opgeladen.
if(dlyctr>10) {}
dlyctr = 0; Vertraging teller instellen
}
}
}
anders //Battery spanning hoger is dan 15.5V. Gevaar! Prijsverhoging
{
digitalWrite (yLED, laag); Gele LED uitschakelen
digitalWrite (gLED, laag); Groene LED uitschakelen
if(dlyctr<6) {}
digitalWrite (rLED, hoge); Rode LED inschakelen voor een halve seconde.
}
anders
{
digitalWrite (rLED, laag); Rode LED uitschakelen voor een halve seconde.
if(dlyctr>10) {}
dlyctr = 0; Vertraging teller instellen
}
}
}
delay(100); Stop programma 100 milliseconden zodat pulse LEDs.
}
}
}
}