/* * [1차시] PIR 센서 움직임 관찰하기 * * 배선 (암-수 점퍼선) * PIR VCC -> 아두이노 5V * PIR OUT -> 아두이노 D2 * PIR GND -> 아두이노 GND * * 사용법 * 1. 도구 > 보드 > Arduino Uno, 도구 > 포트 선택 * 2. 업로드 버튼(→) 클릭 * 3. 시리얼 모니터(돋보기 아이콘) 열고 9600 baud 선택 * ※ 모니터를 열면 보드가 다시 시작되어 카운트가 처음부터 나옵니다 (정상) * 4. 카운트다운이 끝나면 손을 좌우로 흔들어 보세요 * ※ 전원 켠 뒤 30초 정도는 센서가 안정되는 중이라 1/0이 튈 수 있습니다 */ const int PIR_PIN = 2; // PIR 센서 OUT을 꽂은 핀 번호 const int LED_PIN = 13; // 아두이노에 붙어 있는 작은 LED (L) int lastState = LOW; // 바로 전에 읽은 센서 값 기억용 // setup(): 전원이 켜질 때 딱 한 번만 실행되는 부분 void setup() { pinMode(PIR_PIN, INPUT); // 2번 핀은 "읽기용" pinMode(LED_PIN, OUTPUT); // 13번 핀은 "출력용" Serial.begin(9600); // 컴퓨터와 대화 시작 (속도 9600) Serial.println("PIR warming up 10s"); for (int i = 10; i > 0; i--) { // 10부터 1까지 카운트다운 Serial.print(i); Serial.print(" "); delay(1000); // 1000ms = 1초 쉬기 } Serial.println(); Serial.println("ready! move your hand"); Serial.println("time_ms,motion"); // 표 제목 (시간, 감지여부) } // loop(): setup()이 끝난 뒤 계속 반복되는 부분 void loop() { int state = digitalRead(PIR_PIN); // 센서 값 읽기: 1(감지) 또는 0(없음) digitalWrite(LED_PIN, state); // 감지되면 LED 켜기 if (state != lastState) { // 값이 바뀌었을 때만 기록 Serial.print(millis()); // 켜진 뒤 지난 시간(ms) Serial.print(","); Serial.println(state); // 1 또는 0 lastState = state; // 지금 값을 기억해 두기 } delay(50); // 0.05초 쉬기 }