Show Posts
Pages: 1 [2]
16  International / Software / Re: Pequeño problema código temporizador on: December 03, 2012, 02:58:42 pm
Prueba con variables unsigned para los contadores...

http://arduino.cc/en/Reference/UnsignedLong
17  International / Software / Re: en algo me estoy equivocando con el i2c on: December 02, 2012, 06:10:04 pm
Creo que será de ayuda que pegues los errores... smiley-wink
18  International / Software / Re: Comunicacion entre dos arduinos con I2C on: December 02, 2012, 06:09:08 pm
Desde mi ignorancia, te comento...

Por lo que veo en la Reference de Wire, el  .available crea un bucle, por lo que estás asignando siempre a las variables el mismo valor, primero el alto (a las dos) y luego el bajo (por eso sólo te guardaría el bajo) pero en el monitor te tendrían que aparecer los dos repetidos (dos altos, dos bajos)

Quizá una forma de arreglarlo sea con un array[Wire.available()] (no sé si esto funcionaría) o desplazando bits (<<).

Algo asín (asegurate que dato está a 0 o que es del mismo tamaño que el número de bytes que vas a recibir):

Code:
while(Wire.available())   
  {
    dato = dato << 8 ;
    dato += Wire.read();
  }
Serial.println(dato);

Por otro lado, en la parte del esclavo...

Cuando creas dato_bajo en el esclavo, has puesto "*256", por lo siempre le estás dando valor 0.

Tampoco sé si hay problema al enviar dato_* que son int (2bytes), cuando .write sólo coge byte (en determinados casos dice por ahí que los manda en paquetes de byte...)

Fuente: http://arduino.cc/en/Reference/WireRead

Code:
Example

#include <Wire.h>

void setup()
{
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
}

void loop()
{
  Wire.requestFrom(2, 6);    // request 6 bytes from slave device #2

  while(Wire.available())    // slave may send less than requested
  {
    char c = Wire.read();    // receive a byte as character
    Serial.print(c);         // print the character
  }

  delay(500);
}
Pages: 1 [2]