Foro de elhacker.net

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

Código:
#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:
Código:
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 ^^