Skip to content

아두이노를 활용한 엘리베이터 동작 구현

Notifications You must be signed in to change notification settings

northpard/elevator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Elevator (3-floor) — Arduino Uno sketch

간단한 설명

이 저장소는 Arduino Uno용 3층 엘리베이터 시뮬레이터 스케치입니다. 주요 목적은

  • 각 층 호출 버튼 동작(호출/취소)
  • 호출 상태 표시(버튼 LED)
  • 층간 이동 표시(YELLOW LED로 애니메이션)
  • 현재 위치 표시(각 층 RED LED) 를 구현하여 TinkerCAD 또는 실제 보드에서 동작을 검증하는 것입니다.

요구사항(원문 요약)

이미지(제공된 과제)의 핵심 요구사항을 요약하면:

  1. 호출 기능: 각 층 호출 버튼으로 엘리베이터를 해당 층으로 이동
  2. 호출 취소: 호출 후 버튼을 다시 누르면 호출 취소(본 구현은 길게 누름(hold)으로 취소)
  3. 호출상태 표시: 버튼 누름 시 호출상태 LED ON, 도착/취소 시 OFF
  4. 이동 규칙: 같은 방향 우선(SCAN 스타일), 경유지 우선 등
  5. 위치 표시: 현재 층 LED ON, 이전 LED OFF

구현 현황 (요약)

  • 호출 기능: 구현됨 (버튼 짧게 누름 → 요청 등록)
  • 호출 취소: 구현됨 (길게 누름(기본 1000ms) → 즉시 취소, 릴리스 시 재등록 방지)
  • 호출상태 표시: 구현됨 (버튼 LED로 표시)
  • 이동 규칙: 부분 구현 (SCAN 스타일 — 같은 방향 우선으로 처리)
  • 위치 표시: 구현됨 (FLOOR_LED로 표시)

최근 변경사항 (요약)

  • 버튼 LED 깜박임 피드백과 요청 동기화를 하나의 함수로 통합하여 LED 업데이트 일관성 향상
  • BETWEEN/FLOOR 버튼 LED 및 층 표시 LED에 대해 마지막 상태를 캐시해 불필요한 digitalWrite 호출을 줄임
  • 이동(애니메이션) 코드에서 중복을 제거하여 유지보수성 향상

핵심 파라미터

  • LONG_PRESS_MS = 1000 // 길게 누름 취소 기준 (ms)
  • CANCEL_PROTECT_MS = 500 // 취소 직후 재등록 차단 시간 (ms)
  • MOVE_STEP_MS = 350 // 층 사이 애니메이션 단계 시간 (ms)

핀 매핑(기본값 — 코드 상단 참고)

  • Call buttons: D2, D3, D4
  • Button indicator LEDs (call state): D5, D6, D7
  • Floor (position) RED LEDs: D8, D9, D10
  • Between-floor YELLOW LEDs: D11, D12, D13, A0 (1↔2: D11,D12 / 2↔3: D13,A0)
  • Status (GREEN) LED: A1

사용 방법 (아두이노 IDE)

  1. 보드 연결(Arduino Uno 선택)
  2. elevator.ino 파일을 열고 업로드
  3. 업로드 후 시리얼 모니터(9600 baud)를 열어 로그 확인

테스트 시나리오 (권장)

  1. 기본 동작: 아무 호출 없이 시작하면 1층 LED가 켜진 상태로 대기
  2. 2층 호출: 2층 버튼을 짧게 누르면 버튼 LED ON → 엘리베이터가 2층으로 이동
  3. 이동 중 1층 호출: 이동 중 1층에서 호출 발생 → 같은 방향(UP)에 있는 3층 호출이 있으면 우선 처리, 그렇지 않으면 경로에 따라 처리
  4. 호출 취소: 호출 후 길게(>=1s) 누르면 즉시 버튼 LED가 빠르게 깜빡이며 요청 취소
  5. 취소 보호: 취소 직후 500ms 내에는 같은 버튼의 재등록이 무시됨

제출물 체크리스트 (권장)

  • 소스 코드: elevator.ino (이 저장소에 포함)
  • 기능리스트: 구현된 항목과 미구현 항목 명시 (간단한 표)
  • 테스트 결과: 각 테스트 시나리오의 수행 결과(로그/스크린샷 또는 동영상)
  • 회로도 또는 TinkerCAD 링크: 시뮬레이션 공유 링크 또는 브레드보드 사진
  • 발표자료(선택): 동작 시연 순서와 핵심 포인트를 정리한 슬라이드(간단한 PDF/이미지)

변경/확장 아이디어

  • 내부(엘리베이터 내부) 버튼과 홀 호출 분리 및 우선순위 처리
  • 호출 취소를 길게 누름 대신 더 명확한 '취소 버튼'으로 분리
  • EEPROM을 사용해 전원 재시작 후에도 호출 상태 보존
  • TinkerCAD 회로도(.png)와 시뮬레이션 링크 첨부

문의 및 다음 단계

원하시면 제가 이 README를 영어판으로 번역하거나, 제출용 한 페이지 요약(PDF)과 테스트 스크립트(단계별)까지 만들어 드립니다. 어떤 산출물을 먼저 원하시나요?


파일: elevator.ino (상단 주석에 핀/파라미터 설명 포함)

TinkerCAD 회로(브레드보드) 및 시뮬레이션

이 프로젝트를 TinkerCAD에서 재구성하셔서 시뮬레이션 링크와 회로 이미지를 제공해 주시면 README에 바로 연결해 드립니다. 아래는 공유 방법과 권장 구성입니다.

  1. TinkerCAD에서 회로 만들기(권장 부품)
  • Arduino Uno
  • 푸시버튼 x3 (각 층 호출)
  • LED (RED) x3 (층 위치 표시)
  • LED (RED or any) x3 (버튼 상태 표시) — 코드 상에서는 별도 핀에 연결
  • LED (YELLOW) x4 (층간 이동 표시)
  • 저항 220Ω~330Ω (각 LED에 직렬)
  • 점퍼선 및 브레드보드
  1. 핀 매핑(코드와 일치시키려면)
  • Buttons: D2, D3, D4 (사용 시 INPUT_PULLUP, 버튼은 한쪽을 GND에 연결)
  • Button LEDs: D5, D6, D7
  • Floor LEDs: D8, D9, D10
  • Between LEDs: D11, D12, D13, A0
  • Status LED: A1
  1. 시뮬레이션 공유(추천 순서)
  • TinkerCAD에서 디자인을 저장한 뒤 우측 상단의 "Share" 버튼을 클릭
  • 공개/보기 링크(Copy share link / Invite to view)를 생성하여 링크를 복사
  • 추가로 회로 브레드보드 화면을 캡처(스크린샷)하여 이미지 파일(.png/.jpg)로 저장

About

아두이노를 활용한 엘리베이터 동작 구현

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages