Thank you PaulS for the Function Idea, now it only runs the code on channel variable change.
Now the crazy polling, it takes exactly 42 seconds every time I reset the Arduino. This is what it looks like
+TSÿ
!Z'á+TSC?
+TSC?
+TSC?
+TSC?
Right before it goes nuts...
Here is the complete code at the moment...
const int inPinUp = 6;
const int inPinDown = 7;
int channel = 1;
int buttonUpState = 0;
int buttonDownState = 0;
int prevBtnUp = LOW;
int prevBtnDwn = LOW;
unsigned long lastBtnUp = 0;
unsigned long lastBtnDwn = 0;
int transInt = 50;
int chanPolling = 10000;
int chanPrevPoll = 0;
int TSC = channelFunction();
void setup()
{
Serial.begin(9600);
pinMode(inPinUp, INPUT);
pinMode(inPinDown, INPUT);
for (int updown = 6; updown < 8; updown++) {
pinMode(updown, INPUT);
}
for (int BCD = 2; BCD < 6; BCD++) {
pinMode(BCD, OUTPUT);
}
}
int channelFunction()
{
switch (channel)
{
case 1:
Serial.println("+TSC01");
break;
case 2:
Serial.println("+TSC02");
break;
case 3:
Serial.println("+TSC03");
break;
case 4:
Serial.println("+TSC04");
break;
case 5:
Serial.println("+TSC05");
break;
case 6:
Serial.println("+TSC06");
break;
case 7:
Serial.println("+TSC07");
break;
case 8:
Serial.println("+TSC08");
break;
case 9:
Serial.println("+TSC09");
break;
}
}
void loop()
{
buttonUpState = digitalRead(inPinUp);
buttonDownState = digitalRead(inPinDown);
if (buttonUpState == HIGH && prevBtnUp == LOW)
{
if (millis() - lastBtnUp > transInt)
{
channel++;
if (channel > 9)
{
channel = 1;
}
lastBtnUp = millis();
TSC;
}
}
prevBtnUp = buttonUpState;
if (buttonDownState == HIGH && prevBtnDwn == LOW)
{
if (millis() - lastBtnDwn > transInt)
{
channel--;
if (channel < 1)
{
channel = 9;
}
lastBtnDwn = millis();
TSC;
}
}
prevBtnDwn = buttonDownState;
if (millis() - chanPrevPoll > chanPolling)
{
chanPrevPoll = millis();
Serial.println("+TSC?");
}
if (Serial.available() > 0)
{
int chan = Serial.read();
switch ((char)chan){
case '+TSC01':
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
break;
case '+TSC02':
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
break;
case '+TSC03':
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
break;
case '+TSC04':
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
break;
case '+TSC05':
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
break;
case '+TSC06':
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
break;
case '+TSC07':
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
break;
case '+TSC08':
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
break;
case '+TSC09':
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
break;
default:
for (int BCD = 2; BCD < 6; BCD++) {
digitalWrite(BCD, LOW);
}
}
}
}
I gotten this far thanks to you