Dudas con código de Arduino

Iniciado por Emily, 14 Junio 2017, 10:57 AM

0 Miembros y 1 Visitante están viendo este tema.

Emily

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

engel lex

deberias leer el serial si estás leyendo data por serial....

movido a C/C++
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

PalitroqueZ

¿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?

"La Economía planificada lleva de un modo gradual pero seguro a la economía dirigida, a la economía autoritaria y al totalitarismo" Ludwig Erhard

animanegra

#3
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 ^^

42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.