Der Jockel
Ensign
- Registriert
- Nov. 2016
- Beiträge
- 150
Ich Bastel gerade an einem ESP8266 Board mit der Arduino IDE herum und habe auch schon einiges zum laufen gebracht doch an meinem jetzigen Projekt scheitere ich und finde den Fehler im Code einfach nicht. Am Board sind ein 47uF Kondensator über einen 1kOhm Widerstand mit dem Analogpin A0 verbunden (und Ground). Die interne Led D0 ist normal an (also bei HIGH aus). Hier ist mein Code beim ausführen ist die LED immer an anstatt langsam zu blinken . wenn die Spannung sinkt sollte sie dann schnell Blinken:
Sorry wegen dem vorschnellen Post habe meinen Fehler selbst entdeckt
es fehlte noch das der letzte wert durch den aktuellen "geupdated" wird hier mein finaler code
das Blinken geht nun jedoch scheint sich der Kondensator nicht aufzuladen
C++:
int ledPin = D0;
boolean ledState = 1;
unsigned long currentMillis = 0;
unsigned long last_PLD = 0;
unsigned long lastBlink = 0;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
}
void loop() {
currentMillis = millis();
if (currentMillis >= lastBlink+100) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
}
if (currentMillis >= last_PLD+10) {
powerLoss_detector();
}
}
void powerLoss_detector() {
//float charge up to 90% .9*1023=920 in 10ms steps
if (analogRead(A0) < 920) {
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);
return;
}
//read cap
pinMode(A0, INPUT);
if (analogRead(A0) > 1000) {
for (int i=0; 20; i++) {
fastBlink();
}
}
}
void fastBlink() {
digitalWrite(ledPin, LOW);
delay(2);
digitalWrite(ledPin, HIGH);
delay(2);
}
Ergänzung ()
Sorry wegen dem vorschnellen Post habe meinen Fehler selbst entdeckt
Ergänzung ()
es fehlte noch das der letzte wert durch den aktuellen "geupdated" wird hier mein finaler code
C++:
int ledPin = D0;
boolean ledState = 1;
unsigned long currentMillis = 0;
unsigned long last_PLD = 0;
unsigned long lastBlink = 0;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
}
void loop() {
currentMillis = millis();
if (currentMillis >= lastBlink+1000) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
lastBlink = currentMillis;
}
if (currentMillis >= last_PLD+10) {
powerLoss_detector();
last_PLD = currentMillis;
}
}
void powerLoss_detector() {
//float charge up to 90% .9*1023=920 in 10ms steps
if (analogRead(A0) < 920) {
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);
return;
}
//read cap
pinMode(A0, INPUT);
if (analogRead(A0) > 1000) {
for (int i=0; 20; i++) {
fastBlink();
}
}
}
void fastBlink() {
digitalWrite(ledPin, LOW);
delay(20);
digitalWrite(ledPin, HIGH);
delay(20);
}
Ergänzung ()
das Blinken geht nun jedoch scheint sich der Kondensator nicht aufzuladen
Zuletzt bearbeitet: