I have the following code (I realise String isn't very efficient, but this sketch doesn't have to be)
debugOutput gets called every loop, but I only want to spam the serial bus (to debug) if the status changes.
However, it runs once, despite changes to the pins being made.
String prevState = "";
void debugOutput() {
String s = "";
//s = s + digitalRead(6) ? "1" : "0";
//s = s + digitalRead(5) ? "1" : "0";
s = s + digitalRead(4) ? "1" : "0";
s = s + digitalRead(3) ? "1" : "0";
s = s + digitalRead(2) ? "1" : "0";
if(!prevState.equals(s)) {
Serial.println("State Change: "+s);
//strcpy(s, prevState);
prevState = s;
}
}
My suspicion is it was because of the pointers being the same, but I declare a new string every time this function runs. Just in case, I tried to swap this to strcpy, which isn't valid since I'm using String instead of character arrays.
What can I do, I'm really confused.
This is the Serial output, btw
State Change: 1
So it's clear to me that my string appending isn't even working as expected.
prevState = s;
And check for inequality is simplyprevState != s
.