前提・実現したいこと
Raspberry piにArduinoをUSB接続(シリアル接続)することでRasberry Pi上のPythonコードからArduinoに接続したNeopixelのリングライトを点灯させたいと考えています。
発生している問題・エラーメッセージ
エラーメッセージは特にでていませんが、ライトが点灯しません。
該当のソースコード
python3
1mport serial 2import time 3 4ser = serial.Serial('/dev/ttyACM0', 9600) 5 6for i in range(2): 7 ser.write(str.encode('a')) 8 print("LED ON") 9 time.sleep(30) 10 ser.write(str.encode('0')) 11 print("LED OFF") 12 time.sleep(10) 13 14ser.close() 15print("bbb")
Arduino
1#include <Adafruit_NeoPixel.h> 2#include <avr/power.h> 3 4#define PIN 6/*Pin番号を設定*/ 5#define NUMPIXELS 12/*LEDの数を設定*/ 6 7byte val=0; 8 9 10Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); 11 12 13int delayval = 20;/*点灯のスピードを設定*/ 14int lp_cnt=0;/*ループ回数を0に設定*/ 15uint32_t tmp_color= pixels.Color(0, 0, 0);/*色の初期設定*/ 16 17void setup() { 18 Serial.begin(9600); 19 pixels.begin();/*制御開始*/ 20 pixels.setBrightness(10);/*明るさの調節*/ 21} 22 23void loop() { 24 if (lp_cnt % 3 == 0){/*ループ回数が3nの時*/ 25 tmp_color = pixels.Color(50, 50, 0);/*red,green,blue*/ 26 } else if (lp_cnt % 3 == 1){/*ループ回数が3n+1の時*/ 27 tmp_color = pixels.Color(0, 50, 50);/*red,green,blue*/ 28 } else if (lp_cnt % 3 == 2){/*ループ回数が3n+2の時*/ 29 tmp_color = pixels.Color(50, 0, 50);/*red,green,blue*/ 30 } 31 32 if(Serial.available() > 0){ 33 val = Serial.read(); 34 } 35 if(val == 'a'){ 36 for(int i=0;i<NUMPIXELS;i++){/*i=0,1,2,...9を代入*/ 37 pixels.setPixelColor(i, tmp_color );/*iまでのLEDをtmp_colorで点灯*/ 38 pixels.show();/*多分必要な処理*/ 39 delay(delayval); // Delay for a period of time (in milliseconds). 40 /*点灯スピードの調整用のdelay*/ 41 } 42 } else if (val == '0'){ 43 for(int i=0;i<NUMPIXELS;i++){ 44 pixels.setPixelColor(i, pixels.Color(0,0,0));/*iまでのLEDを消灯*/ 45 pixels.show();/*多分必要な処理*/ 46 47 } 48} 49}
補足情報(FW/ツールのバージョンなど)
Arduinoのコンパイルもでき、RaspberryPiの方のコードもうまくいったのですが、LEDが光ってくれません...
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/19 08:26