Hello,
I am builing a water sensor that is battery driven and therefore needs to save energy by
watchdog sleeping.
the code works as long as there is no wakeup after sleep. after wakeup i get these
readings: þ“I‚j
I tried to save and restore adcsra, with no success:
Here is my (a beginners) code:
float SpannungR2;
int AnalogPin=5; //ATMEGA Pin 28
float Quellspannung=5.0; //5 Volt Betriebspannung;
long Messwert;
int anzahlSMS=0;
byte keep_ADCSRA;
#include <RCSwitch.h>
#include "LowPower.h"
RCSwitch mySwitch = RCSwitch();
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT); //ATMEGA Pin 19
pinMode(12, OUTPUT); //ATMEGA Pin 18
Serial.begin(9600);
// Transmitter is connected to Arduino Pin #7 ATMEGA PIN 13
mySwitch.enableTransmit(7);
}
void loop() {
for(int i=0;i<5;i++)
{Messwert+=analogRead(AnalogPin);}
Messwert=trunc(Messwert/5);
SpannungR2=(Quellspannung/1023.0)*Messwert;
Serial.println(SpannungR2);
Serial.print("ADCSRA ");Serial.println(ADCSRA);
while (SpannungR2<3.5)
{
digitalWrite(13, HIGH); //LED an auf Arduino nano Board
delay(300);
digitalWrite(13, LOW);
delay(300);
for(int i=0;i<5;i++){
Messwert+=analogRead(AnalogPin);
}
Messwert=trunc(Messwert/5);
SpannungR2=(Quellspannung/1023.0)*Messwert;
digitalWrite(12, HIGH); //433 Modul an
mySwitch.send(1305, 24);
digitalWrite(12, LOW); //433 Modul aus
delay(100);
Serial.println("Whileschleife");
Serial.println( SpannungR2 );
}
keep_ADCSRA = ADCSRA;
// for (int i = 0; i < 2; i++) {
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
// ADCSRA = 1;
//}
ADCSRA = keep_ADCSRA;
Serial.print("ADCSRA WakeUp ");
Serial.println(ADCSRA);
delay(1500);
}
Regards
Timo


