Hello,
I have a little arduino code, which brings a blinking code onto a LED according to a voltage.
Anybody able to help me changing the blining code?
#define PININPUT A2 // Definition INPUT Pin
#define PINLED PB3 // Definition LED Pin
#define ADCMAX 1023 // Maximalwert des ADC (10-bit), fester Wert
#define RANGEMIN ADCMAX * 3.6 / 5 // Unterer ADC Wert fuer Spannungsbereich (3,6V)
#define RANGEMAX ADCMAX // Oberer ADC Wert fuer Spannungsbereich (5V, entspricht also ADCMAX)
#define DELAY 500 // Schleifenverzoegerung in ms. Entspricht der minimalen Blink-Dauer (halbe Sekunde)
uint8_t voltagePerc = 0; // Spannungswert umgewandelt in Prozentzahl zwischen 0 und 100
uint8_t counter = 0; // Zaehler fuer die Hauptschleife. Wird verwendet um die LED zum richtigen Zeitpunkt an- oder auszuschalten
void setup()
{
pinMode(PININPUT, INPUT); // setze INPUT Pin auf Eingang
pinMode(PINLED, OUTPUT); // setze LED Pin aus Ausgang
}
void loop()
{
if(counter == 0) { // zu Beginn jeden Zyklus wird die Spannung gemessen
voltagePerc = map(analogRead(PININPUT), RANGEMIN, RANGEMAX, 0, 100); // Messen der Eingangsspannung am PININPUT (analogRead) und anschliesendes "mappen" (abbilden) des Messbereichs (von RANGEMIN bis RANGEMAX) auf Prozente (0 bis 100)
}
// Erzeugen des Blinkcodes:
// Pruefen, ob die LED zu diesem Counter-Wert ausgehen soll
if(counter == 4 || // nach 2 und
counter == 6 || // nach 3 Sekunden geht die LED immer aus
voltagePerc 75 && counter == 8 || // nach 4 Sekunden nur wenn weniger als 75% Spannung
voltagePerc 50 && counter == 10 || // nach 5 Sekunden nur wenn weniger als 50% Spannung
voltagePerc 25 && counter == 12) { // nach 6 Sekunden nur wenn weniger als 25% Spannung
digitalWrite(PINLED, LOW);
} else { // ... den Rest der Zeit bleibt die LED an
digitalWrite(PINLED, HIGH);
}
counter++;
if(counter=20) counter = 0; // bei Erreichen von 20 (10 Sekunden) startet der Zyklus erneut
delay(DELAY); // Verzoegerung in der Hauptschleife (halbe Sekunde)
}
Andreas