Arduino FastLED [0] .showLeds (255) не совместим с i2c. i2c прошел мимо Python от RaspberryPi - PullRequest
0 голосов
/ 27 июня 2019

Я новичок в 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.
...