Up and Down counter with Debounce

can I do this with jumper?

No look at the schematic you will find two 1K resistors in series with the TX and RX lines, remove them to isolate the line. However you have to solder them back to up load another sketch, so maybe you could add your own jumpers.

Thanks for all your replays...

At this point I'm more than happy with my program, yet per the schematics I can't do a hardware loop back successfully.

I tried even removing Pin 2 and 3 on the Duemilanove and crossing them, but stil when I press the buttons I don't see the channel change. I even went and bought a 16 Mhz osc, but when I would plug the MAx233A TTL to RS232 converter, it would like reset the programming and I would have to re-program the device constantly. I can probably blame it on static, "tomorrow I try with 0.1 caps" but still, what I really need is the Serial 232 board that predates the Duemilanove.

Also, if anyone knew a good Software Loop Back for a Com Port it would be awesome! I tried making it on Visual Studio and got nowhere hehe.

I will keep you guys posted on the progress as it happens, but this is where I'm now...

While I await for parts, I found a odd bug.

If I send over serial a command "+TSC01" to "+TSC09" all works fine.

Once I start sending commands different than those, it does odd things, example:

+TSC33

It shows 3 on the BCD 7 Segment LED

or

+TSC55

it shows 5 on the BCD 7 Segment LED

I like to add to my code a way that when it receive anything other than those in the switch case it would show a error.

Like on the if and else statements...but for the switch...

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 chan;

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?");
  }

  if (Serial.available() > 0) 
  {
     chan = Serial.read();
     switch (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);
       }
     }
  }
}

You have this code:

if (Serial.available() > 0)
  {
     chan = Serial.read();
     switch (chan){
     case '+TSC01':

The chan variable is a single character. The case statement has multiple characters in the single character quotes.

That won't work.

If none of the previous switch cases are true, the default case will be executed. Put your error stuff there.

PaulS

I believe I found out why my Arduino was not working, I have got a few 16 MHz crystals that I bought at a local store, for what I have being reading, you need the correct pairing of capacitors to make the crystal oscillate correctly. I went ahead and ordered the same crystal on the Arduino with a matching pair of 22p caps. I also ordered a ceramic resonator just in case.

http://www.cutedigi.com/product_info.php?cPath=277&products_id=4299&osCsid=fa52452e4320cff6523c735974aaf920

Now on the coding, I used:

char chan

So if I want to use a variable with more than a character then I must use something like this?

int chan

and for the code, I should replace this...

case '+TSC01'

with these?

case "+TSC01"

or what do I use for a multi-character variable case?

When I compile it gives me:

error: invalid conversion from 'const char*' to int

If you want to read a string from the serial port, you have to do that one letter at a time. You store each letter in an array, and increment the index into that array.

char serialString[20]; // Set whatever size is appropriate
int serialIndex = 0;
char TC = '#'; // Some terminating character that you send

void loop()
{
   while(Serial.available() > 0)
   {
       char aChar = Serial.read();
       if(aChar == TC)
          break;
       serialString[serialIndex] = aChar; // Store the character
       serialIndex++;
       serialString[serialIndex] = '\0'; // Null terminate the string
   }

   // Now, serialString contains something like "+TSC01".

   if(strcmp(serialString, "+TSC01") == 0)
   {
       // The strings match. Do something...
   }
   else if(strcmp(serialString, "+TSC02") == 0)
   {
      // These strings match. Do something...
   }
   else
   {
       // Unrecognized string. Let some smoke out...
       // Or something...
   }
}

You can't use a switch statement with non-constant cases (like strings), so you have to emulate the switch statement with if/else if/else.

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);
         }     
       }
}

If the valid part of the string always starts with +TSC, start storing data only when the + is encountered.

If not, you will need to find a way to send a start or stop (or both) character.

I tried this approach...

  while(Serial.available() > 0)
  {
     char aChar = Serial.read();
     if (aChar or serialString[0] == '+')
     {
       serialString[serialIndex] = aChar;
       serialIndex++;
       serialString[serialIndex] = '\0';
     }
     else
     {
       serialString[0] = '\0';
     }
  }

But it does exactly what it use to do...

Try this then:

boolean startReceived = false;
char serialString[20];
int serialIndex = 0;

void loop()
{
   while(Serial.available() > 0)
   {
       char aChar = Serial.read();
       if(startReceived)
       {
          serialString[serialIndex] = aChar;
          serialIndex++;
          serialString[serialIndex] = '\0';
       }
       else
       {
          if(aChar == '+')
          {
             strartReceived = true;
             serialString[serialIndex] = aChar;
             serialIndex++;
             serialString[serialIndex] = '\0';
          }
      }
   }
}

Thanks for the reply...

I went ahead on the Boolean approach, and I have written it this way...

  while(Serial.available() > 0)
  {
    char aChar = Serial.read();
      if (serialIndex >= 5)
      {
      startReceived = false;  
      }  
     if (startReceived)
     {
     serialString[serialIndex] = aChar;
     serialIndex++;
     serialString[serialIndex] = '\0';
     }
     else
     {
     if(aChar == '+')
     {
     serialIndex = 0;
     startReceived = true;
     serialString[serialIndex] = aChar;
     serialIndex++;
     serialString[0] = '\0';
     Serial.println(serialString);  //for debugin
     }
     }  
     Serial.println(startReceived); //for debugin
     Serial.println(serialIndex); //for debugin
  }

Good thing now is that when I reach the end of the array (5), it resets the Index back to 0 and will only start adding after it sees '+' .

Bad thing about it is that It won't store anything on the array or at least nothing shows on the terminal window stored on the serialString array.

All of my 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[20];
int serialIndex = 0;
boolean startReceived = false;

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();
      if (serialIndex >= 5)
      {
      startReceived = false;  
      }  
     if (startReceived)
     {
     serialString[serialIndex] = aChar;
     serialIndex++;
     serialString[serialIndex] = '\0';
     }
     else
     {
     if(aChar == '+')
     {
     serialIndex = 0;
     startReceived = true;
     serialString[serialIndex] = aChar;
     serialIndex++;
     serialString[0] = '\0';
     Serial.println(serialString);  //for debugin
     }
     }  
     Serial.println(startReceived); //for debugin
     Serial.println(serialIndex); //for debugin
  }


     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
       {
       for (int BCD = 2; BCD < 6; BCD++)
         {
         digitalWrite(BCD, LOW);
         }
       }
}

Why is it not storing anything on the array serialString ?

Why is it not storing anything on the array serialString ?

You don't print serialString after filling it, so how do you know that nothing is stored in serialString?

After storing the + in serialString, you increment serialIndex to point to the next position, where the NULL is to go, but then you don't put the NULL there. Instead, you write the NULL right over the top of the + you just stored there.

Of course, then you never again write to serialString[0], so the 1st value in the array is always NULL, so even if you did print serialString, printing would stop on the 1st NULL (in [0]), so you'd see nothing.

Change

serialString[0] = '\0';

to

serialString[serialIndex] = '\0';

That did the trick!!!!!!!

I have learned so much over project, thank you so much...

My final 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[20];
int serialIndex = 0;
boolean startReceived = false;

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();
      if (serialIndex >= 6)
      {
      startReceived = false;  
      }

     if (startReceived)
     {
     serialString[serialIndex] = aChar;
     serialIndex++;
     serialString[serialIndex] = '\0';
     }
     else
     {
     if(aChar == '+')
     {
     serialIndex = 0;
     startReceived = true;
     serialString[serialIndex] = aChar;
     serialIndex++;
     serialString[serialIndex] = '\0';
     }

     Serial.println(serialString);
     Serial.println(serialIndex);
     }  
  }


     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
       {
       for (int BCD = 2; BCD < 6; BCD++)
         {
         digitalWrite(BCD, LOW);
         }
       }
}

Now I can trow at it something like

+11223456+TSC07jjjjjffff

and it will change to 7 on my 7-segment LED display.

The whole idea of the project was:

That I press a up/down button, it sends the command to a radio ex. "+TSC05" , when the radio changes channel it replies what channel it went to..."+TSC05". So I use the reply to display on the 7 segment LED what channel the radio is on.

I just got my resonator today, I"m about to do the hardwired test and will reply with results.

So I got a Atmega368P-PU and I wired it to connect to the radio, using a Max233A for the UART. The resonator I ordered worked great and so did the Arduino. I was having one issue with it, I could not program it from the UART with a Max233A.

I like to mention for anyone that tries to do this too...I found out that in order to program it over serial, I needed to connect a small ceramic capacitor "100 p" or so from Pin 4 on the serial DB9 "DTR" to Pin 1 "Reset" on the Atmega chip which allows the Arduino program to reset the chip as it programs it. And now it works well!

For now it is completed :smiley:

Thanks again! I will be posting on other projects...

My final final 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 = 5000;
unsigned long chanPrevPoll = 0;
char serialString[20];
int serialIndex = 0;
boolean startReceived = false;

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();
      if (serialIndex >= 6)
      {
      startReceived = false;  
      }

     if (startReceived)
     {
     serialString[serialIndex] = aChar;
     serialIndex++;
     serialString[serialIndex] = '\0';
     }
     else
     {
     if(aChar == '+')
     {
     serialIndex = 0;
     startReceived = true;
     serialString[serialIndex] = aChar;
     serialIndex++;
     serialString[serialIndex] = '\0';
     }

     Serial.println(serialString);
     Serial.println(serialIndex);
     }  
  }


     if(strcmp(serialString, "+TSC01") == 0)
       {
       digitalWrite(2, LOW);
       digitalWrite(3, LOW);
       digitalWrite(4, LOW);
       digitalWrite(5, HIGH);
         channel = 1;
       }
     else if(strcmp(serialString, "+TSC02") == 0)
       {
       digitalWrite(2, LOW);
       digitalWrite(3, LOW);
       digitalWrite(4, HIGH);
       digitalWrite(5, LOW);
         channel = 2;
       }
     else if(strcmp(serialString, "+TSC03") == 0)
       {
       digitalWrite(2, LOW);
       digitalWrite(3, LOW);
       digitalWrite(4, HIGH);
       digitalWrite(5, HIGH);
         channel = 3;
       }
     else if(strcmp(serialString, "+TSC04") == 0)
       {
       digitalWrite(2, LOW);
       digitalWrite(3, HIGH);
       digitalWrite(4, LOW);
       digitalWrite(5, LOW);
         channel = 4;
       }
     else if(strcmp(serialString, "+TSC05") == 0)
       {
       digitalWrite(2, LOW);
       digitalWrite(3, HIGH);
       digitalWrite(4, LOW);
       digitalWrite(5, HIGH);
         channel = 5;
       }
     else if(strcmp(serialString, "+TSC06") == 0)
       {
       digitalWrite(2, LOW);
       digitalWrite(3, HIGH);
       digitalWrite(4, HIGH);
       digitalWrite(5, LOW);
         channel = 6;
       }
     else if(strcmp(serialString, "+TSC07") == 0)
       {
       digitalWrite(2, LOW);
       digitalWrite(3, HIGH);
       digitalWrite(4, HIGH);
       digitalWrite(5, HIGH);
         channel = 7;
       }
     else if(strcmp(serialString, "+TSC08") == 0)
       {
       digitalWrite(2, HIGH);
       digitalWrite(3, LOW);
       digitalWrite(4, LOW);
       digitalWrite(5, LOW);
         channel = 8;
       }
     else if(strcmp(serialString, "+TSC09") == 0)
       {
       digitalWrite(2, HIGH);
       digitalWrite(3, LOW);
       digitalWrite(4, LOW);
       digitalWrite(5, HIGH);
         channel = 9;
       }
     else
       {
       for (int BCD = 2; BCD < 6; BCD++)
         {
         digitalWrite(BCD, LOW);
         }
       }
}