Closed miguelis closed 8 years ago
esta bien, pero tenemos que buscar otra cosa, las comunicaciones con el I2C siempre las llevan a cabo a través de los mismos pines el 4 y 5 analogicos, que ademas son los que usa el bh1750.
Tenemos que mirar como se puede configurar para que reciba datos también por otros pines o como llevar a cabo ese tipo de comunicación. Supuestamente por el 1 y el 2 digitales también se podría llevar a cabo que son los que estan marcados como Rx y Tx pero hay que mirarlo bien
Aquí explica como hacer comunicación serie entre 2 arduinos
Finalmente hemos conseguido comunicar dos arduinos.
En el código de este sender, hemos utilizado los pines 0 y 1, porque no estaba conectado al usb. Es decir, una vez que lo hemos cargado, lo hemos desenchufado y lo hemos conectado a través del puerto Vin al V5 del otro arduino.
//Sender Code
#include <SoftwareSerial.h>
SoftwareSerial serial1(0,1);
void setup() {
while(!serial1){;}
serial1.begin(9600);
}
void loop() {
serial1.print("hola");
}
En el código del arduino receiver, como sí que está conectado al ordenador mediante el USB (para poder observar la salida) estaba conectado a los puertos 10 y 11 de Tx/Rx en lugar del 1 y 0.
#include <SoftwareSerial.h>
SoftwareSerial serial1(10,11);
char str[5];
void setup() {
Serial.begin(9600);
while (!serial1) {;}
serial1.begin(9600);
}
void loop() {
int i = 0;
if (serial1.available()) {
delay(100);
while (serial1.available() > 0 && i < 5) {
str[i++] = serial1.read();
}
str[i++] = '\0';
}
if (i > 0) {
Serial.println(str);
}
}
Para más información: https://www.arduino.cc/en/Reference/SoftwareSerial https://www.arduino.cc/en/Reference/Serial
Podría utilizarse esto https://github.com/adafruit/Adafruit_GPS. Incluye un timer para sincronizarse y leer cada cierto tiempo y no perder datos
in setup you can put:
OCR0A = 0xAF;
TIMSK0 |= _BV(OCIE0A);
then you add this function:
SIGNAL(TIMER0_COMPA_vect) {
char c = Serial1.read();
if (c) UDR0 = c;
}
Pruebas:
Parece ser que el problema era la funcion sprintf utilizando como argumento "%f", arduino no soporta esta opcion
https://www.arduino.cc/en/Tutorial/MasterReader
Tendremos que hacer algo similar a esto.