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);
}
}
deberias leer el serial si estás leyendo data por serial....
movido a C/C++
¿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?
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 ^^