前提・実現したいこと
Raspberry piにArduinoをUSB接続(シリアル接続)することでRasberry Pi上のPythonコードからArduinoに接続したNeopixelのリングライトを点灯させたいと考えています。
発生している問題・エラーメッセージ
エラーメッセージは特にでていませんが、ライトが点灯しません。
該当のソースコード
python3
mport serial import time ser = serial.Serial('/dev/ttyACM0', 9600) for i in range(2): ser.write(str.encode('a')) print("LED ON") time.sleep(30) ser.write(str.encode('0')) print("LED OFF") time.sleep(10) ser.close() print("bbb")
Arduino
#include <Adafruit_NeoPixel.h> #include <avr/power.h> #define PIN 6/*Pin番号を設定*/ #define NUMPIXELS 12/*LEDの数を設定*/ byte val=0; Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 20;/*点灯のスピードを設定*/ int lp_cnt=0;/*ループ回数を0に設定*/ uint32_t tmp_color= pixels.Color(0, 0, 0);/*色の初期設定*/ void setup() { Serial.begin(9600); pixels.begin();/*制御開始*/ pixels.setBrightness(10);/*明るさの調節*/ } void loop() { if (lp_cnt % 3 == 0){/*ループ回数が3nの時*/ tmp_color = pixels.Color(50, 50, 0);/*red,green,blue*/ } else if (lp_cnt % 3 == 1){/*ループ回数が3n+1の時*/ tmp_color = pixels.Color(0, 50, 50);/*red,green,blue*/ } else if (lp_cnt % 3 == 2){/*ループ回数が3n+2の時*/ tmp_color = pixels.Color(50, 0, 50);/*red,green,blue*/ } if(Serial.available() > 0){ val = Serial.read(); } if(val == 'a'){ for(int i=0;i<NUMPIXELS;i++){/*i=0,1,2,...9を代入*/ pixels.setPixelColor(i, tmp_color );/*iまでのLEDをtmp_colorで点灯*/ pixels.show();/*多分必要な処理*/ delay(delayval); // Delay for a period of time (in milliseconds). /*点灯スピードの調整用のdelay*/ } } else if (val == '0'){ for(int i=0;i<NUMPIXELS;i++){ pixels.setPixelColor(i, pixels.Color(0,0,0));/*iまでのLEDを消灯*/ pixels.show();/*多分必要な処理*/ } } }
補足情報(FW/ツールのバージョンなど)
Arduinoのコンパイルもでき、RaspberryPiの方のコードもうまくいったのですが、LEDが光ってくれません...
まだ回答がついていません
会員登録して回答してみよう