본문 바로가기
프로젝트 기록/딥러닝 모델 개발_공학설계캡스톤디자인(스마트카ICT)

[Python- Arduino] LED를 이용한 테스트 코드

by 소요이 2023. 5. 30.
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;
    }
  }
}