728x90
파이썬 측 코드
import serial
import time
# 시리얼 포트 설정
port = 'COM6' # 아두이노가 연결된 시리얼 포트 입력
baudrate = 9600 # 시리얼 통신 속도
# 아두이노와 시리얼 통신을 위한 연결 설정
arduino = serial.Serial(port, baudrate, timeout=1)
# 데이터 전송 함수
def send_data(data):
arduino.write(data.encode())
# 메인 루프
while True:
value = input("전송할 데이터 입력 (2, 3, 4, 5 중 하나): ")
if value in ['2', '3', '4', '5']:
send_data(value)
else:
print("잘못된 입력입니다. 2, 3, 4, 5 중 하나를 입력해주세요.")
time.sleep(1)
아두이노측 코드
// LED 핀 설정
int ledPins[] = {2, 3, 4, 5};
int numPins = sizeof(ledPins) / sizeof(ledPins[0]);
// 시리얼 통신 데이터 수신 변수
char data;
// 감지된 객체의 상태를 저장하는 변수
bool objectDetected = false;
// 초기 설정
void setup() {
Serial.begin(9600);
// LED 핀을 출력으로 설정
for (int i = 0; i < numPins; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW); // 모든 LED는 초기에 꺼진 상태로 설정
}
}
// 객체 감지 동작 함수
void objectDetectedAction(int pin) {
digitalWrite(pin, HIGH); // 해당 LED 켜기
delay(100000); // 10초 동안 유지 (100000 밀리초)
digitalWrite(pin, LOW); // 해당 LED 끄기
}
// 메인 루프
void loop() {
if (Serial.available()) {
data = Serial.read();
// 수신한 데이터에 따라 객체 감지 동작 실행
switch (data) {
case '2': // 머리
objectDetected = true;
objectDetectedAction(ledPins[0]);
break;
case '3': // 손
objectDetected = true;
objectDetectedAction(ledPins[1]);
break;
case '4': // 기타
objectDetected = true;
objectDetectedAction(ledPins[2]);
break;
case '5': // 아무것도 없음
objectDetected = true;
objectDetectedAction(ledPins[3]);
break;
default:
// 유효하지 않은 데이터 처리
break;
}
} else {
// 시리얼 통신 종료됨. 모든 LED 끄기
if (objectDetected) {
for (int i = 0; i < numPins; i++) {
digitalWrite(ledPins[i], LOW);
}
objectDetected = false;
}
}
}
'프로젝트 기록 > 딥러닝 모델 개발_공학설계캡스톤디자인(스마트카ICT)' 카테고리의 다른 글
[Python] 딥러닝 감지된 걸 string으로 변환(+코드)/ PC와 시리얼 통신 중엔 시리얼 모니터사용 안됨(해결못함) (0) | 2023.05.30 |
---|---|
[python-arduino] 테스트: 2,3,4보내서 해당번호 LED켜게하는 코드 (0) | 2023.05.30 |
[Python] Pyserial 설치 (1) | 2023.05.29 |
[Arduino] 아두이노IDE 설치 및 기본 업로드 방법 (0) | 2023.05.29 |
[수업 메모] 평가방식 (0) | 2023.05.22 |