Опитвам се да прочета данни от Arduino UNO към Raspberry Pi с модула python smbus. Единствената документация, която успях да намеря за модула smbus, беше тук. Не съм сигурен какво означава cmd в модула. Мога да използвам записа, за да изпращам данни към Arduino. Написал съм две прости програми, една за четене и една за запис
Този за писане
import smbus
b = smbus.SMBus(0)
while (0==0):
var = input("Value to Write:")
b.write_byte_data(0x10,0x00,int(var))
Този за четене
import smbus
bus = smbus.SMBus(0)
var = bus.read_byte_data(0x10,0x00)
print(var)
Кодът на Arduino е
#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");
}
Когато стартирам програмата за четене, тя връща "33" всеки път. Arduino връща, че е извикана функцията sendData.
Използвам Data Level Shifter и описанието казва, че може да е малко бавен.
Някой карал ли е това да работи?