Я пытаюсь прочитать данные из 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.
Я использую сдвиг уровня данных, и в описании говорится, что он может быть немного медленным.
Кто-нибудь заставил это работать?