I can't program a termination character, so I used part of example code to array the serial characters, also strcmp and if else statements.
So far this works
I set my array for 6, now the issue is...what if I get garbage data in between?
for example...
1234567+TSC0189012
since is more than 6, when it gets to 7 it starts the array over and it sees:
123456
7+TSC0
189012
which when comparing with strcmp it can't recognize it.
I was wondering how to fix this...if I have to increase the size of my array and use ** or something alike?
This is my current code
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 = 250;
int chanPolling = 10000;
unsigned long chanPrevPoll = 0;
char serialString[6];
int serialIndex = 0;
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);
}
}
void channelFunction()
{
switch (channel)
{
case 1:
Serial.println("+TSC01");
Serial.println("+TSC?");
break;
case 2:
Serial.println("+TSC02");
Serial.println("+TSC?");
break;
case 3:
Serial.println("+TSC03");
Serial.println("+TSC?");
break;
case 4:
Serial.println("+TSC04");
Serial.println("+TSC?");
break;
case 5:
Serial.println("+TSC05");
Serial.println("+TSC?");
break;
case 6:
Serial.println("+TSC06");
Serial.println("+TSC?");
break;
case 7:
Serial.println("+TSC07");
Serial.println("+TSC?");
break;
case 8:
Serial.println("+TSC08");
Serial.println("+TSC?");
break;
case 9:
Serial.println("+TSC09");
Serial.println("+TSC?");
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();
channelFunction();
}
}
prevBtnUp = buttonUpState;
if (buttonDownState == HIGH && prevBtnDwn == LOW)
{
if (millis() - lastBtnDwn > transInt)
{
channel--;
if (channel < 1)
{
channel = 9;
}
lastBtnDwn = millis();
channelFunction();
}
}
prevBtnDwn = buttonDownState;
if (millis() - chanPrevPoll > chanPolling)
{
chanPrevPoll = millis();
Serial.println("+TSC?");
}
while(Serial.available() > 0)
{
char aChar = Serial.read();
serialString[serialIndex] = aChar;
serialIndex++;
serialString[serialIndex] = '\0';
}
if(strcmp(serialString, "+TSC01") == 0)
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
}
else if(strcmp(serialString, "+TSC02") == 0)
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
}
else if(strcmp(serialString, "+TSC03") == 0)
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
}
else if(strcmp(serialString, "+TSC04") == 0)
{
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else if(strcmp(serialString, "+TSC05") == 0)
{
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
}
else if(strcmp(serialString, "+TSC06") == 0)
{
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
}
else if(strcmp(serialString, "+TSC07") == 0)
{
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
}
else if(strcmp(serialString, "+TSC08") == 0)
{
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else if(strcmp(serialString, "+TSC09") == 0)
{
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
}
else
{
Serial.println(serialString); //for de-bugin
for (int BCD = 2; BCD < 6; BCD++)
{
digitalWrite(BCD, LOW);
}
}
}