728x90
반응형
// WRITE
void setup()
{
pinMode(13, OUTPUT);
Serial.begin(115200);
}
void loop()
{
while(Serial.available())
{
String s = Serial.readString();
if (s == "hello")
{
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
}
}
}
# pip install pyserial (virtual environment)
import serial
PORT = "COM8"
#PORT = "/dev/ttyUSB0" 리눅스는 이런식으로 되어있음
BAUDRATE = 115200
# ser = serial.serial_for_url(PORT, baudrate = BAUDRATE, timeout=1)
# print('ser: ', ser)
# 데이터에 접근해서 버퍼 입출력 기능
# ser = serial.serial_for_url(10, baudrate=115200, timeout=1)
# 시리얼 포트와 통신 준비
ser = serial.Serial(PORT, baudrate=BAUDRATE)
# print('ser: ', ser)
# msg = 'o'
while True:
msg = input() #input 한 값을 아래 enconde 해서 보냄
if (msg == '0'): # 'o' 입력 받을때마다 아두이노에서 설정된 코드를 실행
break # 0 입력받으면 input창에서 escape
for c in msg:
# print(f'input: {msg}', end='')
# 데이터를 전송(write)
ser.write(c.encode())
# 전송 후 버퍼와 연결을 끊음
ser.close()
"""
# Arduino
void setup()
{
pinMode(13, OUTPUT);
Serial.begin(115200);
}
void loop()
{
while(Serial.available()) // while이지만 조건이 Serial 통신을하는 것이 있을 때.
{ // 1회전 이후 buffer에 값이 없기 때문에 탈출
char c = Serial.read(); // Serial.read 는 1byte밖에 못 읽어옴
// 5byte를 보냈으면 5 회전 (byte 기준)
if (c == 'o') // 'o' 영문 o 와 비교
{
digitalWrite(13, HIGH);
delay(500); //0.5s
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
}
}
}
"""
// READ
void setup()
{
Serial.begin(115200);
}
void loop()
{
for (int i = 0; i < 10; i++)
{
Serial.print('a');
delay(200);
}
Serial.print('\0');
delay(1000);
Serial.print('q');
}
import serial
PORT = "COM8"
BAUDRATE = 115200
ser = serial.Serial(PORT, baudrate=BAUDRATE)
while True:
# Serial 통신시(문자열 읽어올 때) (ROS와 동일)
# 1. Port 확인, Baudrate 확인
# 2. 자료형 (b'a'== byte'a'), 인코딩타입(send, recieve) 동일해야함
# 읽기와 쓰기를 동시에 "쓰레드"를 사용
# ** utf-8 은 Ascii를 포함한다.
readed = ser.read().decode(encoding='utf-8') #read 한글자씩 1byte씩 가져옴
line = ser.readline().decode()
if line:
print(line)
# if readed == 'q':
# break;
# if readed:
# print("readed: ", readed);
pass
ser.close()
728x90
반응형
'Firmware & Embedded > Components' 카테고리의 다른 글
Joystick module (0) | 2022.11.08 |
---|---|
Stepping Motor (0) | 2022.11.08 |
Sequential Brightness LED using Button (0) | 2022.10.14 |
Alarm operation based on distance using ultrasonic sensor (0) | 2022.10.14 |
Ultrasonic sensor (0) | 2022.10.14 |