프로젝트/스마트 의료 로봇

[파이썬->아두이노] 시리얼 통신을 통한 문자열(좌표값) 보내기.

흑요석s 2022. 11. 29. 20:19

<목표 >

파이썬 => 아두이노를 통해 씨리얼 통신을 함으로써, 

스마트 의료 로봇내의 카메라를 통해 인식한 객체(사람)의 바운딩 박스의 중심점(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()는 문자열을 받는 함수였기에 그랬다고 추정됨.

'프로젝트 > 스마트 의료 로봇' 카테고리의 다른 글

3  (0) 2022.11.05
2  (0) 2022.11.05
1  (0) 2022.11.05