Hey everyone!
I'm running a homemade arduino on a proto board and im having a couple problems with my simple Garduino.
- Wont wake up in the morning
- For some reason it reads this:
Potentiometer value reads: 768
Moisture sensor reads: 961
Light value reads: 553
I Need Water!
Potentiometer value reads: 768
every time I run it. I don't know why the water turns on every time. When the water turns on and it actually needs more water, it looks like:
Potentiometer value reads: 1022
I Need Water!
Potentiometer value reads: 1022
I Need Water!
Potentiometer value reads: 1022
I Need Water!
Potentiometer value reads: 1022
I Need Water!
Potentiometer value reads: 1022
I Need Water!
- How can I make it go to sleep for the 60 second period between testing?
Anyways, heres the code.
Thanks in advance!!!!
#include <avr/power.h>
#include <avr/sleep.h>
int moistureSensor = 5;
int lightSensor = 1;
int waterPump = 7;
int pin2;
int ledPin = 13;
int moisture_val;
int light_val;
int PotPin = 3;
int PotVal;
void wakeUpNow()
{
Serial.println("Good Morning");
}
void setup()
{
Serial.begin(9600);
pinMode (ledPin, OUTPUT);
pinMode (waterPump, OUTPUT);
digitalWrite (waterPump, LOW);
pinMode (pin2, INPUT);
attachInterrupt(0, wakeUpNow, LOW);
digitalWrite(ledPin, HIGH);
delay(250);
digitalWrite(ledPin, LOW);
delay(250);
digitalWrite(ledPin, HIGH);
delay(250);
digitalWrite(ledPin, LOW);
}
void sleepNow()
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
attachInterrupt(0,wakeUpNow, LOW);
power_adc_disable();
power_spi_disable();
power_timer0_disable();
power_timer1_disable();
power_timer2_disable();
power_twi_disable();
sleep_mode();
sleep_disable();
power_all_enable();
}
void loop()
{
PotVal = analogRead(PotPin);
moisture_val = analogRead(moistureSensor);
delay(1000);
light_val = analogRead(lightSensor);
Serial.print("Potentiometer value reads: ");
Serial.println(PotVal);
Serial.print("Moisture sensor reads: ");
Serial.println(moisture_val);
Serial.print("Light value reads: ");
Serial.println(light_val);
PotVal = map(PotVal, 0, 255, 0, 1023);
delay(100);
while (moisture_val < PotVal)
{
Serial.println("I Need Water!");
PotVal = analogRead(PotPin);
Serial.print("Potentiometer value reads: ");
Serial.println(PotVal);
digitalWrite(waterPump, HIGH);
delay(250);
moisture_val = analogRead(moistureSensor);
}
digitalWrite(waterPump, LOW);
if (light_val < 50)
{
sleepNow();
}
Serial.println("------------------------------");
delay(60000);
}