Problem using serial communication arduino ONE

Hello, my name is Pablo and I don't know what happened to my Arduino ONE.
My main problem is what the program reads on Serial.read(), sometimes is nothing, others -1 and some what it should get.
Here it is my code but I think that the problem is the hardware.

void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:
   pinMode(15, OUTPUT);
   pinMode(14, OUTPUT);
   pinMode(16, OUTPUT);
   pinMode(12, OUTPUT);
   pinMode(11, OUTPUT);
   pinMode(10, OUTPUT);
   pinMode(9, OUTPUT);
   pinMode(8, OUTPUT);
   pinMode(7, OUTPUT);
   pinMode(6, OUTPUT);
   pinMode(5, OUTPUT);
   pinMode(4, OUTPUT);
   pinMode(3, OUTPUT);
   pinMode(2, OUTPUT);
}

void loop() {
  Serial.flush();
  int option = Serial.read();
if (Serial.available()>0){
  Serial.println(option);
  if(option=='A'){
    //Serial.println(option);
    digitalWrite(15,HIGH);
    digitalWrite(14,HIGH);
    digitalWrite(16,HIGH);//DESCARGA CONECTADA
    digitalWrite(12,HIGH);//DESCARGA CONECTADA
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,LOW);
    digitalWrite(8,LOW);
    digitalWrite(7,LOW);
    digitalWrite(6,LOW);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);        
  }
  else if(option == 'B'){
    digitalWrite(15,HIGH);
    digitalWrite(14,HIGH);
    digitalWrite(16,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,LOW);
    digitalWrite(8,LOW);
    digitalWrite(7,HIGH);
    digitalWrite(6,LOW);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);
  }
   else if(option == 'C'){
    digitalWrite(15,HIGH);
    digitalWrite(14,HIGH);
    digitalWrite(16,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,LOW);
    digitalWrite(8,HIGH);
    digitalWrite(7,LOW);
    digitalWrite(6,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);
  }
}}

And this is what I get from "monitor serie":
-1 try#1
-1 try#2
-1 try#3
65 try#3
-1 try#4
65 try#4
try#5
Can anyone help me, thanks

Usually when there is nothing to read, like when you've already just read the thing that was available (hint)

That makes sense, thanks. But it doesn't explain when I send 'A' and the monitor serie doesn't "println" something, like the arduino didn't recieved it. Do u know what can it be?

Yes, it absolutely does.

You send an 'A', it gets read, and then nothing is available to read, so that test fails.

Always test availability before reading.

that fixed the -1 when it works, thanks. But what i was asking is that sometimes I send an A and the println doesn't show me anything on the screen, like I didn't send it

Please post your updated code.

if (Serial.available()>0){
 int option = Serial.read();
  Serial.println(option);
  if(option=='A'){
    //Serial.println(option);
    digitalWrite(15,HIGH);
    digitalWrite(14,HIGH);
    digitalWrite(16,HIGH);//DESCARGA CONECTADA
    digitalWrite(12,HIGH);//DESCARGA CONECTADA
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,LOW);
    digitalWrite(8,LOW);
    digitalWrite(7,LOW);
    digitalWrite(6,LOW);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);        
  }

There is more else if for differents values of option

Please post your updated code.
All of it.

void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:
   pinMode(15, OUTPUT);
   pinMode(14, OUTPUT);
   pinMode(16, OUTPUT);
   pinMode(12, OUTPUT);
   pinMode(11, OUTPUT);
   pinMode(10, OUTPUT);
   pinMode(9, OUTPUT);
   pinMode(8, OUTPUT);
   pinMode(7, OUTPUT);
   pinMode(6, OUTPUT);
   pinMode(5, OUTPUT);
   pinMode(4, OUTPUT);
   pinMode(3, OUTPUT);
   pinMode(2, OUTPUT);
}

void loop() {
  Serial.flush();
  int option = Serial.read();
  
  if (Serial.available()>0){
 int option = Serial.read();
  Serial.println(option);
  ///// 1kW CAP cos(PHI)=0.8  ///// 
  if(option=='A'){
    //Serial.println(option);
    digitalWrite(15,HIGH);
    digitalWrite(14,HIGH);
    digitalWrite(16,HIGH);//DESCARGA CONECTADA
    digitalWrite(12,HIGH);//DESCARGA CONECTADA
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,LOW);
    digitalWrite(8,LOW);
    digitalWrite(7,LOW);
    digitalWrite(6,LOW);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);        
  }
  ///// 1kW CAP cos(PHI)=0.85  ///// 
  else if(option == 'B'){
    digitalWrite(15,HIGH);
    digitalWrite(14,HIGH);
    digitalWrite(16,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,LOW);
    digitalWrite(8,LOW);
    digitalWrite(7,HIGH);
    digitalWrite(6,LOW);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);
  }
  ///// 1kW CAP cos(PHI)=0.9  ///// 
   else if(option == 'C'){
    digitalWrite(15,HIGH);
    digitalWrite(14,HIGH);
    digitalWrite(16,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,LOW);
    digitalWrite(8,HIGH);
    digitalWrite(7,LOW);
    digitalWrite(6,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);
  }
  ///// 1kW CAP cos(PHI)=0.95  ///// 
   else if(option == 'D'){
    digitalWrite(15,HIGH);
    digitalWrite(14,HIGH);
    digitalWrite(16,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,HIGH);
    digitalWrite(8,LOW);
    digitalWrite(7,LOW);
    digitalWrite(6,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);
  }
  ///// 1kW IND cos(PHI)=0.8  ///// 
   else if(option == 'E'){
    digitalWrite(15,LOW);
    digitalWrite(14,LOW);
    digitalWrite(16,LOW);//DESCARGA DESCONECTADA
    digitalWrite(12,LOW);//DESCARGA DESCONECTADA
    digitalWrite(11,LOW);
    digitalWrite(10,LOW);
    digitalWrite(9,HIGH);
    digitalWrite(8,HIGH);
    digitalWrite(7,LOW);
    digitalWrite(6,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);
  }
  ///// 1kW IND cos(PHI)=0.85  ///// 
   else if(option == 'F'){
    digitalWrite(15,LOW);
    digitalWrite(14,LOW);
    digitalWrite(16,LOW);
    digitalWrite(12,LOW);
    digitalWrite(11,LOW);
    digitalWrite(10,LOW);
    digitalWrite(9,HIGH);
    digitalWrite(8,LOW);
    digitalWrite(7,HIGH);
    digitalWrite(6,LOW);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);
  }
  ///// 1kW IND cos(PHI)=0.9  ///// 
   else if(option == 'G'){
    digitalWrite(15,LOW);
    digitalWrite(14,HIGH);
    digitalWrite(16,LOW);
    digitalWrite(12,HIGH);
    digitalWrite(11,LOW);
    digitalWrite(10,HIGH);
    digitalWrite(9,HIGH);
    digitalWrite(8,HIGH);
    digitalWrite(7,LOW);
    digitalWrite(6,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);
  }
  ///// 1kW IND cos(PHI)=0.95  ///// 
   else if(option == 'H'){
    digitalWrite(15,LOW);
    digitalWrite(14,HIGH);
    digitalWrite(16,LOW);
    digitalWrite(12,HIGH);
    digitalWrite(11,LOW);
    digitalWrite(10,HIGH);
    digitalWrite(9,HIGH);
    digitalWrite(8,LOW);
    digitalWrite(7,HIGH);
    digitalWrite(6,LOW);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);
  }
  ///// 0.5kW CAP cos(PHI)=0.8  ///// 
   else if(option == 'Z'){
    digitalWrite(15,HIGH);
    digitalWrite(14,LOW);
    digitalWrite(16,HIGH);
    digitalWrite(12,LOW);
    digitalWrite(11,HIGH);
    digitalWrite(10,LOW);
    digitalWrite(9,LOW);
    digitalWrite(8,LOW);
    digitalWrite(7,HIGH);
    digitalWrite(6,LOW);
    digitalWrite(5,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(3,LOW);
    digitalWrite(2,HIGH);
  }
  ///// 0.5kW CAP cos(PHI)=0.85  ///// 
   else if(option == 'Y'){
    digitalWrite(15,HIGH);
    digitalWrite(14,LOW);
    digitalWrite(16,HIGH);
    digitalWrite(12,LOW);
    digitalWrite(11,HIGH);
    digitalWrite(10,LOW);
    digitalWrite(9,LOW);
    digitalWrite(8,LOW);
    digitalWrite(7,HIGH);
    digitalWrite(6,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(3,LOW);
    digitalWrite(2,HIGH);
  }
  ///// 0.5kW CAP cos(PHI)=0.9  ///// 
   else if(option == 'X'){
    digitalWrite(15,HIGH);
    digitalWrite(14,LOW);
    digitalWrite(16,HIGH);
    digitalWrite(12,LOW);
    digitalWrite(11,HIGH);
    digitalWrite(10,LOW);
    digitalWrite(9,LOW);
    digitalWrite(8,HIGH);
    digitalWrite(7,LOW);
    digitalWrite(6,LOW);
    digitalWrite(5,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(3,LOW);
    digitalWrite(2,HIGH);
  }
  ///// 0.5kW CAP cos(PHI)=0.95  ///// 
   else if(option == 'W'){
    digitalWrite(15,HIGH);
    digitalWrite(14,LOW);
    digitalWrite(16,HIGH);
    digitalWrite(12,LOW);
    digitalWrite(11,HIGH);
    digitalWrite(10,LOW);
    digitalWrite(9,LOW);
    digitalWrite(8,HIGH);
    digitalWrite(7,HIGH);
    digitalWrite(6,LOW);
    digitalWrite(5,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(3,LOW);
    digitalWrite(2,HIGH);
  }
  ///// 0.5kW IND cos(PHI)=0.8  ///// 
   else if(option == 'V'){
    digitalWrite(15,LOW);
    digitalWrite(14,LOW);
    digitalWrite(16,LOW);
    digitalWrite(12,LOW);
    digitalWrite(11,LOW);
    digitalWrite(10,LOW);
    digitalWrite(9,LOW);
    digitalWrite(8,HIGH);
    digitalWrite(7,LOW);
    digitalWrite(6,LOW);
    digitalWrite(5,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(3,LOW);
    digitalWrite(2,HIGH);
  }
  ///// 0.5kW IND cos(PHI)=0.85  ///// 
   else if(option == 'U'){
    digitalWrite(15,LOW);
    digitalWrite(14,HIGH);
    digitalWrite(16,LOW);
    digitalWrite(12,HIGH);
    digitalWrite(11,LOW);
    digitalWrite(10,HIGH);
    digitalWrite(9,HIGH);
    digitalWrite(8,LOW);
    digitalWrite(7,LOW);
    digitalWrite(6,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(3,LOW);
    digitalWrite(2,HIGH);
  }
  ///// 0.5kW IND cos(PHI)=0.9  ///// 
   else if(option == 'T'){
    digitalWrite(15,LOW);
    digitalWrite(14,HIGH);
    digitalWrite(16,LOW);
    digitalWrite(12,HIGH);
    digitalWrite(11,LOW);
    digitalWrite(10,HIGH);
    digitalWrite(9,LOW);
    digitalWrite(8,HIGH);
    digitalWrite(7,HIGH);
    digitalWrite(6,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(3,LOW);
    digitalWrite(2,HIGH);
  }
  ///// 0.5kW IND cos(PHI)=0.95  ///// 
   else if(option == 'S'){
    digitalWrite(15,LOW);
    digitalWrite(14,LOW);
    digitalWrite(16,LOW);
    digitalWrite(12,LOW);
    digitalWrite(11,LOW);
    digitalWrite(10,LOW);
    digitalWrite(9,LOW);
    digitalWrite(8,LOW);
    digitalWrite(7,LOW);
    digitalWrite(6,LOW);
    digitalWrite(5,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(3,LOW);
    digitalWrite(2,HIGH);
  }
  ///// 0.5kW  cos(PHI)=1  ///// 
   else if(option == 'R'){
    digitalWrite(15,HIGH);
    digitalWrite(14,HIGH);
    digitalWrite(16,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,HIGH);
    digitalWrite(8,HIGH);
    digitalWrite(7,HIGH);
    digitalWrite(6,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(4,LOW);
    digitalWrite(3,LOW);
    digitalWrite(2,HIGH);
  }
  ///// 1kW  cos(PHI)=1 ///// 
   else if(option == 'I'){
    digitalWrite(15,HIGH);
    digitalWrite(14,HIGH);
    digitalWrite(16,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,HIGH);
    digitalWrite(8,HIGH);
    digitalWrite(7,HIGH);
    digitalWrite(6,HIGH);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(2,LOW);
  }
  ///// RESET  ///// 
   else if(option == 'M'){
    digitalWrite(15,HIGH);
    digitalWrite(14,HIGH);
    digitalWrite(16,HIGH);
    digitalWrite(12,HIGH);
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(9,HIGH);
    digitalWrite(8,HIGH);
    digitalWrite(7,HIGH);
    digitalWrite(6,HIGH);
    digitalWrite(5,HIGH);
    digitalWrite(4,HIGH);
    digitalWrite(3,HIGH);
    digitalWrite(2,HIGH);
  }
  Serial.flush();
}
Serial.flush();
}

I think I may have mentioned something about always checking for availability before reading.

(Waaaaaay too much code, BTW. Later.)

Sorry about that, I thought i changed it. Thank you so much. If you know how to simplify the code, that would be great

Putting the output pins into an array would be a great start.

1 Like

Thanks

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.