Programa usado na tentativa de estabelecer a comunicação por I2C entre o Arduino e o Raspberry Pi, num ambiente de exploração do bus I2C com mais que um master.
- Raspberry Pi: master
- Arduino: master
Este programa funciona em conjunto com os programas disponiveis nos seguintes links:
- Comunicação multimaster i2c entre Arduinos – Programa 2 (sem slave)
- Comunicação multimaster i2c entre Arduinos – Programa 3 (com MPU6050 slave)
Com estes programas podemos formar ambientes com 2 ou 3 masters, sendo um deles o Raspberry Pi, e um slave do Arduino ou nenhum slave.
Bloco para o Raspberry em Python para enviar e receber dados de forma continua.
i2c_master_test_mod2_v1.py
import smbus import time bus = smbus.SMBus(1) # slave address address = 0x04 varOut = 0 def writeNumber(value): bus.write_byte(address, value) return -1 def readNumber(): number = bus.read_byte(address) return number while True: #var = input("Enter number: ") #if not var: # continue #if var: # varOut = var writeNumber(varOut) number = readNumber() print "Sent: ", varOut, "Received: ", number varOut += 1 time.sleep(0.5)
Erro
Erros resultantes do programa acima (no Raspberry Pi), em interacção com Arduino 1 no ambiente de testes definido pelo Programa 2 (sem slave)
Sent: 70 Received: 71 Sent: 71 Received: 72 Sent: 72 Received: 73 Sent: 73 Received: 74 Sent: 74 Received: 75 Sent: 75 Received: 76 Sent: 76 Received: 77 Sent: 77 Received: 78 Sent: 78 Received: 79 Sent: 79 Received: 80 Sent: 80 Received: 81 Sent: 81 Received: 82 Traceback (most recent call last): File "i2c_master_test_mod2_v1.py", line 26, in <module> writeNumber(varOut) File "i2c_master_test_mod2_v1.py", line 12, in writeNumber bus.write_byte(address, value) IOError: [Errno 121] Remote I/O error