Sto testando la comunicazione i2c tra Pi e Arduino.
Il documento dice:
write_i2c_block_data(addr,cmd,vals) Block Write transaction. int addr,char cmd,long[] None
Ho questo test:
Su Pi:
import smbus
bus = smbus.SMBus(0)
bus.write_i2c_block_data(address, 48, [49, 50, 51] )
Su Arduino:
void receiveData(int byteCount){
Serial.print("byte count=");
Serial.println(byteCount);
while(Wire.available()) {
number = Wire.read();
Serial.print((char)number);
}
}
Su Arduino vedo questo output:
byte count=4
0123
La mia domanda è: a che serve questo cmd
parametro? Non vedo una distinzione su Arduino di quale byte rappresenta cosa.
Immagino di poterlo gestire come si vede. Forse voglio usare i primi 2 byte come comando.
Questa pagina non contiene molte informazioni sul metodo: http://wiki.erazor-zone.de/wiki:linux:python:smbus:doc
vals
, cmd
è obbligatorio.
cmd
parametro ... Ho dovuto fare un bel po 'di cercare di capire cosa volevi dire. Non ho trovato una risposta però ... Può essere utilizzato solo da chip specifici come un espansore GPIO o qualcosa del genere ...