<목표 >
파이썬 => 아두이노를 통해 씨리얼 통신을 함으로써,
스마트 의료 로봇내의 카메라를 통해 인식한 객체(사람)의 바운딩 박스의 중심점(x,y)을 보내는 것을 목표로 함.
1. python 코드
import serial
global x_axis
import time
PORT = 'COM7'
BaudRate = 9600
ser = serial.Serial(PORT,BaudRate, timeout=1)
while True:
x_axis=input("현재 좌표 : ")
ser.write(x_axis.encode('utf-8'))
2.aruino 코드
#include <Servo.h>
Servo myservo1;
int x_axis=0;
void setup()
{
Serial.begin(9600);
myservo1.attach(6);
myservo1.write(0);
}
void loop()
{
if(Serial.available()){
x_axis = Serial.parseInt();
//x_axis = Serial.read(); 로는 동작하지 않음. 문자열로 읽었기때문으로 추정
if(x_axis < 180)
{
myservo1.write(x_axis);
}
}
==> 문제점 : 시리얼통신을 통해 아두이노에 전달이 되고 입력한만큼 x_axis 각도로 동작한다.
다만, 일회성으로만 동작하였는데, x_axis = Serial.parseInt(); 로 코드를 교체하였더니 잘 작동하였음.
Serial.read()는 문자열을 받는 함수였기에 그랬다고 추정됨.