2017-10-20 1 views
0

새로운 과정을 보려면 Processing과 Arduino 사이의 연결을 만들어야합니다. 나는 특정 스위치가 켜져 있으면 직사각형이 처리에서 그려지기를 원한다.그리기 직사각형

여기에는 3 개의 스위치와 하나의 버튼이 있습니다. 세 개의 스위치는 빨강, 초록, 파랑의 색상을 나타냅니다. 그래서 사용자는 먼저 색상을 선택한 다음 te 버튼을 눌러 해당 색상으로 직사각형을 그려야합니다.

그런 다음 사용자는 해당 색상의 스위치를 켜고 다른 색상의 스위치를 켜고 스위치를 눌러 두 번째 사각형을 그릴 수 있어야합니다. 불행히도 나를 위해 일하지 않습니다.

한 개의 직사각형이 그려지면 다른 직사각형을 그릴 수 없습니다. 나는이 코드에 익숙하지 않기 때문에 코드가 매우 나쁘다면 미안하다!

내 아두 이노 코드 :

int switchPinRed = 21; 
int switchPinGreen = 22; 
int switchPinBlue = 23; 
int buttonPinRect = 20; 

void setup() { 
    pinMode(switchPinRed, INPUT);    // Set pin 0 as an input 
    pinMode(switchPinGreen, INPUT); 
    pinMode(switchPinBlue, INPUT); 
    pinMode(buttonPinRect, INPUT); 
    Serial.begin(9600);     // Start serial communication at 9600 bps 
} 

void loop() { 

    if (digitalRead(buttonPinRect) == HIGH) { 
    Serial.print(1); 
    } 

    else if (digitalRead(switchPinRed) == HIGH) { 
    Serial.print(2); 
    } 

    else if (digitalRead(switchPinGreen) == HIGH) { 
    Serial.print(3); 
    } 

    else if (digitalRead(switchPinBlue) == HIGH) { 
    Serial.print(4); 
    } 
} 

그리고 내 처리 코드 :

import processing.serial.*; 

Serial myPort; 
int val; 

int[] rects = new int [3]; 

void setup() 
{ 
    size(600, 200); 
    String portName = Serial.list()[0]; 
    myPort = new Serial(this, "/dev/tty.usbmodem3330431", 9600); 

    for (int i=0; i < 3; i++) { 
    rects[i] = 0; 
    } 
} 

void draw() 
{ 
    if (myPort.available() > 0) { 
    val = myPort.read(); 
    } 


    background(255); 

    for (int i =0; i < 3; i++) { 

    if (val == 1) { 
     if (val == 2) { 
     fill(255, 0, 0); 


     } else if (val == 3) { 
     fill(0, 255, 0); 


     } else if (val == 4) { 
     fill(0, 0, 255); 


     } 

     rect(random(50), random(50), 100, 100); 

    } 
    } 
} 
+0

'val'은 동시에 '1'과 다른 값일 수 없습니다. –

+0

오, 고마워! 그리고 다른 방법으로 작동시키는 방식으로 다른 밸브를 어떤 방법으로 변경할 수 있습니까? –

답변

0

이 코드는하지 않습니다 감각 :

if (val == 1) { 
    if (val == 2) { 
    fill(255, 0, 0); 
    } else if (val == 3) { 
    fill(0, 255, 0); 
    } else if (val == 4) { 
    fill(0, 0, 255); 
    } 
    rect(random(50), random(50), 100, 100); 
} 

먼저 당신이 val == 1 여부를 확인하고, 만약 그래서 val == 2을 확인하십시오. 그것은 결코 사실이 아닙니다. 아마 너는 이런 뜻인가?

if (val == 1) { 
    //fill? 
} 
else if (val == 2) { 
    fill(255, 0, 0); 
} else if (val == 3) { 
    fill(0, 255, 0); 
} else if (val == 4) { 
    fill(0, 0, 255); 
} 
rect(random(50), random(50), 100, 100); 
+0

switchPinRect가 HIGH이고 switchPinRed가 HIGH이면 빨간색 직사각형이 그려지는 것을 말하고 싶습니다. 그리고 다른 색상들도 마찬가지입니다. 나는 그 발이 1인지 그리고 발이 2인지를 먼저 확인함으로써 그렇게 할 수 있다고 생각했다. 이제 val이 1과 2가 될 수 없다는 것을 이해합니다. 그러나 이것을 다른 방법으로 코딩하는 법을 모르겠습니다. ( –

+0

@JessieenEmma 스케치의 상태를 나타 내기 위해 하나의'int' 값을 사용하는 대신, ('drawRectangle','isRed','isGreen' 및'isBlue'를 생각하고 있습니다.) Arduino에서 나온 값을 기준으로 부울을 설정하고, 사각형 (또는 안) 그 불리언을 기반으로. –

+0

좋아, 나는 그것을 얻을 것으로 생각합니다.하지만 int drawRectangle 사각형의 그림에 대한 단추가 연결된 핀의 출력을 읽는 것을 어떻게 알 수 있습니까? –

관련 문제