Hello,
Can someone help me locate why my voltage is not flipping, from pin 13 to 12.
/*--- Declaration of I/Os ---*/
// Dc source for Soil moisture sensor Flipping voltage, preventing etching of probes.
const uint8_t voltageFlipPin01 = 13;
const uint8_t voltageFlipPin02 = 12;
// Definition of Analog pins for Soil Moisture Sensor Readings.
const uint8_t Moisture_Input = 5;
/*--- Declaration of Variables ---*/
// Switch case Variable
int Soil_Sensor = 1;
// Moisture Value Variables
int Moist_Val01;
int Moist_Val02;
int Moist_Avg01;
// Timer Parameters
unsigned long CurrentTimer;
unsigned long timerLastX;
unsigned long timerLastY;
unsigned long timerLastZ;
const unsigned long timerRateX = 1000UL;
const unsigned long timerRateY = 1000UL;
const unsigned long timerRateZ = 1000UL;
// Codes running only once at start up. Initialisation.
void setup(){
Serial.begin(9600);
pinMode(voltageFlipPin01, OUTPUT);
pinMode(voltageFlipPin02, OUTPUT);
digitalWrite(voltageFlipPin01, LOW);
digitalWrite(voltageFlipPin02, LOW);
pinMode(Moisture_Input, INPUT);
timerLastX = millis();
timerLastY = millis();
timerLastZ = millis();
}
// Codes running forever.
void loop(){
/* Switch function to compare Switch Case Variable 'Soil_Sensor', and to run appropriate 'case' */
// Keep track of milliseconds elapsed.
CurrentTimer = millis();
/*-- Soil Moisture Reading Sequence--*/
// Allow current to flow in Forward and Reverse direction while reading value from Soil Moisture Probe in both direction.
digitalWrite(voltageFlipPin01, HIGH);
digitalWrite(voltageFlipPin02, LOW);
// Delay timer with millis(); reading Moisture value in Fwd direction.
if ((millis() - timerLastX) >= timerRateX)
{timerLastX = millis();
Moist_Val01 = 1023 - analogRead(Moisture_Input);}
// Delay timer with millis(); Reverse direction of Vcc pin.
if ((millis() - timerLastY) >= timerRateY)
{timerLastY = millis();
digitalWrite(voltageFlipPin01, LOW);
digitalWrite(voltageFlipPin02, HIGH);}
// Delay timer with millis(); reading Moisture value in RvS direction + Averaging.
if ((millis() - timerLastZ) >= timerRateZ)
{timerLastZ = millis();
Moist_Val02 = analogRead(Moisture_Input);
Moist_Avg01 = (Moist_Val01 + Moist_Val02) / 2;
digitalWrite(voltageFlipPin01, LOW);
digitalWrite(voltageFlipPin02, LOW);}
// case 3:
Serial.print("Sensor Value #1: ");
Serial.println(Moist_Avg01);
Serial.println();
Serial.print ("Moist_Val01 = ");
Serial.println (Moist_Val01);
Serial.print ("Moist_Val02 = ");
Serial.println (Moist_Val02);
Serial.println();
delay(500UL);
}
I can get reading from Moist_Val01 only and when i measure voltages across pin 13, it do fluctuates, but i cant read it , too fast. moreover, on pin 12, no voltage is read at all.
Any help in understanding the millis() and bring appropriate correction.
Thanks