Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Emily en 14 Junio 2017, 10:57 AM

Título: Dudas con código de Arduino
Publicado por: Emily en 14 Junio 2017, 10:57 AM
Hola a todos
hice este programa en arduino el cual tiene una conexión a C (C solo manda 3 datos que son la horas, los minutos y los segundos)
pero al momento de enviar mis datos de C a arduino este se va directo a las funciones y nunca lee los datos que se le envió de C
alguien de favor me podría ayudar


#include <SoftwareSerial.h>
SoftwareSerial blue(2,3);
void setup() {
 // put your setup code here, to run once:
 blue.begin(9600);
 Serial.begin(9600);
}

void loop() {
 int a,b,c;
 // put your main code here, to run repeatedly:
if (blue.available()){
a=blue.read();
b=blue.read();
c=blue.read();
Serial.print(a+':'+b+':'+c+'\n');}
delay(1000);

if ((a<24) and  (b<60) and (c<60)){
america(a,b,c);
asia(a,b,c);
africa(a,b,c);
europa(a,b,c);
oceania(a,b,c);
c++;
}
else {
 Serial.println("Error al ingresar la hora...");
}
delay(30000);
 }

 
void america (int a, int b, int c){
      if (a<23) {
       Serial.print ("Caracas Venezuela: ");
       Serial.print(a+1);
       Serial.print(":");
       Serial.print(b);
       Serial.print(":");
       Serial.print(c);
      }
      else {
       Serial.print ("Caracas Venezuela: ");
       Serial.print("00:");
       Serial.print(b);
       Serial.print(":");
       Serial.print(c);    
      }
}
void asia (int a, int b, int c){
  if (a<10) {
   Serial.print ("Corea del Sur: ");
   Serial.print(a+14);
   Serial.print(":");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);
  }
   if (a==10) {
   Serial.print ("Corea del Sur: ");
   Serial.print("00:");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);
  }
  else {
   Serial.print ("Caracas Venezuela: ");
   Serial.print(a-10);
   Serial.print(":");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);    
  }
}
void africa (int a, int b, int c){
  if (a<17) {
   Serial.print ("Egipto: ");
   Serial.print(a+14);
   Serial.print(":");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);
  }
   if (a==17) {
   Serial.print ("Egipto: ");
   Serial.print("00:");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);
  }
  else {
   Serial.print ("Egipto: ");
   Serial.print(a-17);
   Serial.print(":");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);    
  }
}
void oceania (int a, int b, int c){
  if (a<11) {
   Serial.print ("Sydney: ");
   Serial.print(a+13);
   Serial.print(":");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);
  }
   if (a==11) {
   Serial.print ("Sydney: ");
   Serial.print("00:");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);
  }
  else {
   Serial.print ("Sydney: ");
   Serial.print(a-11);
   Serial.print(":");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);    
  }
}
void europa (int a, int b, int c){
  if (a<18) {
   Serial.print ("Londres: ");
   Serial.print(a+13);
   Serial.print(":");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);
  }
   if (a==18) {
   Serial.print ("Londres: ");
   Serial.print("00:");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);
  }
  else {
   Serial.print ("Londres: ");
   Serial.print(a-18);
   Serial.print(":");
   Serial.print(b);
   Serial.print(":");
   Serial.print(c);    
  }
}
Título: Re: Dudas con código de Arduino
Publicado por: engel lex en 14 Junio 2017, 11:04 AM
deberias leer el serial si estás leyendo data por serial....

movido a C/C++
Título: Re: Dudas con código de Arduino
Publicado por: PalitroqueZ en 14 Junio 2017, 11:14 AM
¿y cómo es la programación para el puerto serial en C?

¿tiene la misma configuración de puerto serial que la de arduino?  ¿96008N1?

¿por qué no usas un monitor serial a ver si hay data viajando por el puerto?

Título: Re: Dudas con código de Arduino
Publicado por: animanegra en 14 Junio 2017, 11:32 AM
Hace eso porque es lo que le estas diciendo que haga.

Se va sin leer porque blue no esta available:

if (blue.available()){



entonces pasa de eso y no llega a leer nada. Si lo que quieres hacer es esperar a que te metan algo por el bluetooth tendrás que usar un bucle no un condicional. Que se quede esperando a tu entrada de datos y despues leer.

Y como siempre en arduino, revisa las conexiones. tx rx en un lado y en otro, que como el tx de uno es el rx del otro al final la terminamos liando ^^