Bir Arduino UNO'dan Raspyberry Pi'ye python smbus modülü ile veri okumaya çalışıyorum. Smbus modülünde bulabildiğim tek doküman here idi. Modüldeki cmd'nin ne olduğundan emin değilim. Arduino'ya veri göndermek için yazıyı kullanabilirim. İki basit programlar yazmaI2C ile Raspberry Pi ile Arduino'dan veri okuma
için okuma diğeriiçin bir okuma yazma
import smbus
b = smbus.SMBus(0)
while (0==0):
var = input("Value to Write:")
b.write_byte_data(0x10,0x00,int(var))
için bir yazdım
import smbus
bus = smbus.SMBus(0)
var = bus.read_byte_data(0x10,0x00)
print(var)
Arduino kodu
#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");
}
Okuma programını çalıştırdığımda, her seferinde "33" değerini döndürür. Arduino, sendData işlevinin çağrıldığını döndürür.
Data Level Shifter kullanıyorum ve açıklama biraz yavaş olduğunu söylüyor.
kimse bu işe aldı mı?