Estou testando a comunicação i2c entre Pi e Arduino.
O documento diz:
write_i2c_block_data(addr,cmd,vals) Block Write transaction. int addr,char cmd,long[] None
Eu tenho este teste:
No Pi:
import smbus
bus = smbus.SMBus(0)
bus.write_i2c_block_data(address, 48, [49, 50, 51] )
No Arduino:
void receiveData(int byteCount){
Serial.print("byte count=");
Serial.println(byteCount);
while(Wire.available()) {
number = Wire.read();
Serial.print((char)number);
}
}
No Arduino, vejo esta saída:
byte count=4
0123
Minha pergunta é: para que serve o cmd
parâmetro? Não vejo uma distinção no Arduino de qual byte represente o quê.
Acho que posso lidar com isso como achar melhor. Talvez eu queira usar os 2 primeiros bytes como um comando.
Esta página não possui muitas informações sobre o método: http://wiki.erazor-zone.de/wiki:linux:python:smbus:doc
vals
, cmd
é obrigatório.
cmd
parâmetro ... Eu tive que procurar bastante para descobrir o que você queria dizer. Eu não encontrar uma resposta embora ... Ele só pode ser usado por chips específicos como um expansor GPIO ou algo assim ...