정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

processing arduino 이용한 얼굴인식 모터제어
기쑹 | 2017-11-09
<프로세싱> import processing.serial.*; import gab.opencv.*; import processing.video.*; import java.awt.*; Capture video; OpenCV opencv; char verticalSignal = 0; char servoVPosition = 0; Serial port; void setup() { size(640, 480); video = new Capture(this, 640/2, 480/2); opencv = new OpenCV(this, 640/2, 480/2); opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE); port = new Serial(this, Serial.list()[0],57600); port.write(verticalSignal); port.write(servoVPosition); video.start(); } void draw() { scale(2); opencv.loadImage(video); image(video, 0, 0 ); noFill(); stroke(0, 255, 0); strokeWeight(3); Rectangle[] faces = opencv.detect(); println(faces.length); for (int i = 0; i < faces.length; i++) { println(faces[i].x + "," + faces[i].y); rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height); } if(faces.length>100){ servoVPosition = 180; } else{ servoVPosition = 0; } port.write(verticalSignal); port.write(servoVPosition); delay(1); } void captureEvent(Capture c) { c.read(); } <아두이노> #include Servo servoV; char verticalSignal=0; char serialChar=0; void setup() { // put your setup code here, to run once: servoV.attach(9); servoV.write(0); Serial.begin(57600); } void loop() { // put your main code here, to run repeatedly:while(Serial.available() <=0); //시리얼통신을 통해 데이터를 받을때까지 대기한다 serialChar = Serial.read(); //데이터를 받았을 경우 if(serialChar == verticalSignal){ //수직모터를 움직이라는 신호를 받았을 경우 while(Serial.available() <=0); //각도값을 받을 때까지 대기 servoV.write(Serial.read()); //각도값을 받았을 경우 모터를 전송받은 값만큼 움직인다 } } processing에 얼굴이 인식될경우와 안될경우 서보모터를 제어하려고 하는데 잘 안되네요ㅠ 코딩관련 질문입니다.
이전글   |    processing arduino webcam 관련된 질문입니다. 2017-11-09
다음글   |    esp8266 모듈 2017-11-09