Wie das Lesen von Daten vom Arduino mit Raspberry Pi mit I2C
Ich versuche, das Lesen von Daten von einem Arduino UNO zu Raspberry Pi mit python-smbus Modul. Die einzige Dokumentation, die ich finden konnte auf dem smbus Modul wurde hier. Ich bin nicht sicher, was die cmd bedeutet, dass in das Modul. Kann ich mit dem schreiben zum senden von Daten an den Arduino. Ich habe geschrieben, zwei einfache Programme eine für Lesen und eine für schreiben
Den man für das schreiben
import smbus
b = smbus.SMBus(0)
while (0==0):
var = input("Value to Write:")
b.write_byte_data(0x10,0x00,int(var))
Die man für Lesen
import smbus
bus = smbus.SMBus(0)
var = bus.read_byte_data(0x10,0x00)
print(var)
Den Arduino-code ist
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#include <Wire.h>
LiquidCrystal lcd(8,9,4,5,6,7);
int a = 7;
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
// define slave address (0x2A = 42)
#define SLAVE_ADDRESS 0x10
// initialize i2c as slave
Wire.begin(SLAVE_ADDRESS);
// define callbacks for i2c communication
Wire.onReceive(receiveData);
Wire.onRequest(sendData);
}
void loop(){
}
// callback for received data
void receiveData(int byteCount)
{
Serial.println(byteCount);
for (int i=0;i <= byteCount;i++){
char c = Wire.read();
Serial.println(c);
}
}
// callback for sending data
void sendData()
{
Wire.write(67);
lcd.println("Send Data");
}
Wenn ich das lese-Programm, es gibt "33" jedes mal. Der Arduino gibt, die die sendData-Funktion aufgerufen wird.
Ich bin mit einem Daten Level-Shifter und die Beschreibung sagt, es könnte ein wenig träge.
Hat jemand bekommen diese zu arbeiten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es geschafft zum initiieren einer Kommunikation zwischen einem Arduino und ein Raspberry Pi. Die beiden sind verbunden mit zwei 5k pullup-widerstände (siehe diese Seite). Der arduino schreibt ein byte auf den i2c-bus für jede Anforderung. Auf dem Raspberry Pi,
hello
gedruckt wird, jede Sekunde.Arduino-code:
Python-code auf dem Raspberry Pi:
Auf meinem Raspberry Pi, der i2c-bus ist 1. Verwenden Sie den Befehl
i2c-detect -y 0
oderi2c-detect -y 1
um zu überprüfen, ob Sie Ihren Raspberry Pi erkennt den Arduino.