Solución:
Logré iniciar una comunicación entre un Arduino y una Raspberry Pi. Los dos están conectados mediante dos resistencias pullup de 5k (consulte esta página). El arduino escribe un byte en el bus i2c para cada solicitud. En la Raspberry Pi, hello
se imprime cada segundo.
Código Arduino:
#include <Wire.h>
#define SLAVE_ADDRESS 0x2A
void setup() {
// initialize i2c as slave
Wire.begin(SLAVE_ADDRESS);
Wire.onRequest(sendData);
}
void loop() {
}
char data[] = "hello";
int index = 0;
// callback for sending data
void sendData() {
Wire.write(data[index]);
++index;
if (index >= 5) {
index = 0;
}
}
Código Python en Raspberry Pi:
#!/usr/bin/python
import smbus
import time
bus = smbus.SMBus(1)
address = 0x2a
while True:
data = ""
for i in range(0, 5):
data += chr(bus.read_byte(address));
print data
time.sleep(1);
En mi Raspberry Pi, el bus i2c es 1. Use el comando i2c-detect -y 0
o i2c-detect -y 1
para verificar si su Raspberry Pi detecta su Arduino.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)