ボタンを押したらLEDとprocessingから映像を流したいです。ボタンを2つにした時から NullPointerException のエラーが頻発するようになりました。他のPCでも同じエラーが出たのでスペックの問題ではなくコードのミスがあると思うのですがよくわかりません、、
processing の
String[] message = receiveMessage.split(",", 0);
に対して NullPointerException とだけ出ます。
Arduinoのコード------------------------------------------------------------
//const byte buttonPin[SW_NUM] = {2,4}; //const byte ledPin[SW_NUM] = {3,5}; const int buttonPin = 2; const int ledPin = 8; const int buttonPin2 = 3; const int ledPin2 = 9; int buttonState = 0; // BUTTONの状態を格納(LOW/HIGH) int buttonState2 = 0; int state = 0;// LEDの状態(0ならオフ、1ならオン) int state2 = 0; void setup() { Serial.begin(115200); pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); // Inputモードでプルアップ抵抗を有効に pinMode(ledPin2, OUTPUT); pinMode(buttonPin2, INPUT_PULLUP); } } void loop() { buttonState = digitalRead(buttonPin); buttonState2 = digitalRead(buttonPin2); if (buttonState == LOW) { digitalWrite(ledPin, HIGH); state = 1; } else { digitalWrite(ledPin, LOW); state = 10; } if (buttonState2 == LOW) { digitalWrite(ledPin2, HIGH); state2 = 2; } else { digitalWrite(ledPin2, LOW); state2 = 12; } Serial.print(state); Serial.print(","); Serial.print(state2); Serial.println(); delay(20); }
processingのコード------------------------------
import processing.serial.*; import processing.video.*; Movie movie; Movie movie2; Serial myPort; //int inByte; String receiveMessage; float tako; float cmyk; void setup() { size(1000, 1000); myPort = new Serial(this, ポート名, 115200); //myPort.clear(); movie = new Movie( this, "tako.mp4"); movie2 = new Movie( this, "cmyk.mp4"); frameRate(60); } void draw() { if (receiveMessage != null && receiveMessage != "") { print(receiveMessage); println(); String[] message = receiveMessage.split(",", 0); if (message.length >= 2) { tako = float( message[0] ); cmyk = float( message[1] ); print(tako == float( message[0])); print(" : " ); print( cmyk == float( message[1] )); println(); } } //映像を再生する-------------------------- int j, k; j = 150; k = 6; //if (tako == 1.0) { // image(movie, 0, 0, width/k, height/k); // movie.play(); //} else { // movie.stop(); //} //if (cmyk == 2.0) { // image(movie2, j*2, 0, width/k, height/k); // movie2.play(); //} else { // movie2.stop(); //} } void movieEvent( Movie m ) { m.read(); } void serialEvent(Serial p) { //delay(10); //inByte = p.read(); receiveMessage = p.readStringUntil('\n'); }
回答1件
あなたの回答
tips
プレビュー