Я новичок в Arduino.Нужно изменить переменную Arduino на RaspberryPi, для этого мы выбрали i2c коммуникацию.все работает нормально, пока мы не поместим FastLED[0].showLeds(255)
в код Arduino.он может загореться, а затем вызвать ошибку I / O (ошибка [5] или ошибка [121]) in RaspberryPi
.
# -*- coding: utf-8 -*-
import smbus
import time
# for RPI version 1, use "bus = smbus.SMBus(0)"
bus = smbus.SMBus(1)
time.sleep(2)
# This is the address we set up in the Arduino Program
address = 0x04
def writeNumber(value):
# bus.write_byte(address, value)
bus.write_byte_data(address, 0, value)
time.sleep(2)
return -1
def readNumber():
number = bus.read_byte(address)
time.sleep(2)
# number = bus.read_byte_data(address, 1)
return number
while True:
var = input("Enter 1 – 9: ")
if not var:
continue
writeNumber(var)
print "RPI: Hi Arduino, I sent you ", var
# sleep one second
# time.sleep(1)
number = readNumber()
print "Arduino: Hey RPI, I received a digit ", number
print
Этот код работает нормально, когда мы отключаемстрока color_chase_side(CRGB::Red, 15);
такая, что отключить FastLED[0].showLeds(255);
void loop() {
delay(100);
if(state == 1){
color_chase_side(CRGB::Red, 15);
}
else if(state == 2){
another_function(CRGB::Red, 15);
}
}
// callback for received data
void receiveData(int byteCount){
while(Wire.available()) {
number = Wire.read();
Serial.print("data received: ");
//Serial.println(number);
if (number == 1){
state = 1;
}
else if(number == 2){
state = 2;
}
else if(number == 0){
state = 0;
}
}
}
Change the Fast led functions based on Raspi data.