const int SensorInput = A1;
const int PressInput = A3;
const int PowerOnLEDPin = 7;
const int StatLEDPin = 5;
const int SpliceOccurPin = 2;
const int SpliceCTRL = 8;
const int SenseThreshold = 550;
const int PressThreshold = 550;
bool ChangeOver;
int ledState = LOW;
unsigned long prevCounter = 0;
const long interval = 400;
void setup() {
//Initialize all outputs/inputs for source voltages
pinMode(SensorInput, INPUT);
pinMode(PressInput, INPUT);
pinMode(StatLEDPin, OUTPUT);
pinMode(PowerOnLEDPin, OUTPUT);
pinMode(SpliceOccurPin, OUTPUT);
pinMode(SpliceCTRL, OUTPUT);
//int. serial communications
Serial.begin(9600);
Serial.println("Splice Detector: Online");
digitalWrite(PowerOnLEDPin, HIGH);
digitalWrite(SpliceCTRL, LOW);
}
void loop() {
int PressValue = analogRead(PressInput);
if (PressValue >= PressThreshold) {
digitalWrite(StatLEDPin, LOW);
digitalWrite(SpliceOccurPin, LOW);
delay(1000);
digitalWrite(StatLEDPin, HIGH);
digitalWrite(SpliceOccurPin, HIGH);
delay(1000);
digitalWrite(StatLEDPin, LOW);
digitalWrite(SpliceOccurPin, LOW);
delay(1000);
digitalWrite(StatLEDPin, HIGH);
digitalWrite(SpliceOccurPin, HIGH);
Serial.println("ROLL CHANGE IN PROGRESS. Awaiting Splice...");
Serial.println("Press Value: " + PressValue);
ChangeOver = true;
return;
}
//Check reference voltage == signal wire
int MeasuredValue = analogRead(SensorInput);
if (MeasuredValue >= SenseThreshold) {
if (ChangeOver == true) {
ChangeOver = false;
digitalWrite(StatLEDPin, LOW);
digitalWrite(SpliceOccurPin, LOW);
delay(850);
digitalWrite(StatLEDPin, HIGH);
digitalWrite(SpliceOccurPin, HIGH);
delay(850);
digitalWrite(StatLEDPin, LOW);
digitalWrite(SpliceOccurPin, LOW);
delay(850);
digitalWrite(StatLEDPin, HIGH);
digitalWrite(SpliceOccurPin, HIGH);
delay(850);
digitalWrite(StatLEDPin, LOW);
digitalWrite(SpliceOccurPin, LOW);
Serial.println("ROLL CHANGE SPLICE DETECTED. System returned to READY MODE");
Serial.println(MeasuredValue);
return;
}else{
//Procedure for high voltage potential present at signal wire
digitalWrite(SpliceOccurPin, HIGH);
Serial.println(MeasuredValue);
digitalWrite(StatLEDPin, LOW);
Serial.println("Status Light Off, Detected Splice");
digitalWrite(SpliceCTRL, HIGH);
Serial.println("Sounding Buzzer");
delay(1500);
digitalWrite(SpliceCTRL, LOW);
digitalWrite(StatLEDPin, HIGH);
digitalWrite(SpliceOccurPin, LOW);
Serial.println("System in STANDBY MODE");
delay(10000);
Serial.println("System returned to READY MODE");
ChangeOver = false;
return;
}
} else {
//assign values to millisecond counter
unsigned long currCounter = millis();
//Upon installment of input wire from press **updated 6.6.2016**
if (ChangeOver == true){
return;
}else{
//verify values against recommended interval
if (currCounter - prevCounter >= interval) {
prevCounter = currCounter;
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
// set the LED with the ledState of the variable
digitalWrite(StatLEDPin, ledState);
}
}
}
}
For what ever reason when I run this code on my project it will mess the logic up with the bool which is the ultimate decision maker for determining the correct procedure to follow. I will admit this code is slop and could use some tidying up but I want to make sure I have the jist of it correct and that I am understanding the logic of the bool data type correctly.
I apologize if you get losted in the if then else statements.