산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

아두이노 나노로 만드는 USB 전원 LED 팬 시계 - 회로도 & 코드

USB LED 라이트 팬 아날로그 시계 - 아두이노 나노(Arduino NANO) 프로젝트 코드 & 회로도 (시간 설정 기능 포함)

미니 USB LED 라이트 팬 시계 영상을 보셨다면, 아두이노 나노(Arduino NANO), 홀 센서, 저항, 배터리, DC 모터, LED를 이용해 동일한 LED 아날로그 시계를 직접 만들어 보세요.

LED들이 원운동하며 시침, 분침, 초침 세 바늘과 일반 손목/벽시계 같은 원형 다이얼을 프로펠러 디스플레이로 보여줍니다.

이 프로젝트의 장점은 소스 코드를 아두이노 나노에 USB 케이블로 업로드해 분/초 시간 설정을 자유롭게 변경할 수 있다는 점입니다. 제작 방법을 알아보겠습니다.

LED 라이트 팬 시계 가젯 확인

아두이노 나노로 만드는 USB 전원 LED 팬 시계 - 회로도 & 코드

필요 부품:

배선 & 회로도

USB 프로펠러 LED 팬 아날로그 시계 회로도입니다. 시간 설정 기능이 있는 버전은 본문 하단의 두 번째 회로도를 참고하세요.

아두이노 나노로 만드는 USB 전원 LED 팬 시계 - 회로도 & 코드

제작 절차:

  1. 회로에 맞게 작은 PCB 조각을 자릅니다.
  2. 녹색 LED를 긴 다리가 왼쪽이 되게 꽂고, 구리면에서 다리를 한쪽으로 굽힙니다 (녹색 LED 12~16 → R12~R16 → A5~A1).
  3. 같은 방식으로 적색 LED(LED 1~11 → R1~R11 → D2~D12)를 꽂습니다.
  4. 녹색 LED 위에 청색 LED를 꽂습니다 (청색 LED 17 → R17 → A7). R17은 2.2kΩ, 이 LED 캐소드를 다른 LED 캐소드들과 공통 연결합니다. 애노드는 R17 한 쪽, 다른 쪽은 아두이노 +5V 핀에 연결.
  5. 모든 LED 캐소드를 공통 연결하고 불필요한 리드는 자릅니다.
  6. 저항도 같은 방식으로 꽂고 리드를 굽혀 회로도대로 배치, 여분 리드 제거.
  7. 회로도대로 부품 납땜.
  8. 아두이노 나노용 커넥터 납땜.
  9. LED 공통 캐소드를 아두이노 GND 핀에 연결.

저항을 아두이노 디지털 핀 'D'와 아날로그 핀 'A'에 다음과 같이 연결:

홀 센서 연결:

마무리:

  1. 회로도대로 3.7V 240mAh 배터리 연결, 양극에 단극 토글 슬라이드 스위치 장착(ON/OFF).
  2. 토이 DC 모터를 이용해 칩보드에 전체 프로젝트 장착. 고속 모터 사용 시 9V~12V 배터리 사용.
  3. 아래 프로젝트 코드를 USB 케이블로 업로드하고 스위치 ON. 프로펠러 운동 중 LED로 시계 표시.

프로젝트 코드

다음 소스 코드에서 필요한 부분(시간 설정 등)을 수정해 아두이노 나노에 USB로 업로드하세요.

코드 출처: hobbyprojects

int LED1 = 2; int LED2 = 3; int LED3 = 4; int LED4 = 5; int LED5 = 6; int LED6 = 7; int LED7 = 8; int LED8 = 9; int LED9 = 10; int LED10 = 11; int LED11 = 12; int LED12 = A1; int LED13 = A2; int LED14 = A3; int LED15 = A4; int LED16 = A5; int sensorPin = A0; int minuteSensor = A7; int hourSensor = A6; unsigned int n,ADCvalue,propeller_posn; unsigned long previousTime = 0; byte hours = 12; // 시 설정 byte minutes = 15; // 분 설정 byte seconds = 00; // 초 설정 int val; void setup() { pinMode(LED1,OUTPUT); pinMode(LED2,OUTPUT); pinMode(LED3,OUTPUT); pinMode(LED4,OUTPUT); pinMode(LED5,OUTPUT); pinMode(LED6,OUTPUT); pinMode(LED7,OUTPUT); pinMode(LED8,OUTPUT); pinMode(LED9,OUTPUT); pinMode(LED10,OUTPUT); pinMode(LED11,OUTPUT); pinMode(LED12,OUTPUT); pinMode(LED13,OUTPUT); pinMode(LED14,OUTPUT); pinMode(LED15,OUTPUT); pinMode(LED16,OUTPUT); pinMode(sensorPin,INPUT_PULLUP); if(hours == 12) hours = 0; //**************************************** // IR 센서 테스트용 주석 해제 /* Serial.begin(9600); while(1) { ADCvalue = analogRead(minuteSensor); Serial.print("minuteSensor "); Serial.println(ADCvalue); ADCvalue = analogRead(hourSensor); Serial.print("hourSensor "); Serial.println(ADCvalue); Serial.println(); delay(1000); } */ //**************************************** } void loop() { val = digitalRead(sensorPin); while (val == LOW) { val = digitalRead(sensorPin); } if (millis() >= (previousTime)) { previousTime = previousTime + 1000; seconds = seconds+1; if (seconds == 60) { seconds = 0; minutes = minutes+1; } if (minutes == 60) { minutes = 0; hours = hours+1; } if (hours == 12) { hours = 0; } } propeller_posn=30; n=0; while(n < 60) { ADCvalue = analogRead(minuteSensor); if(ADCvalue < 500) { minutes = propeller_posn; seconds = 0; } ADCvalue = analogRead(hourSensor); if(ADCvalue < 500) { hours = propeller_posn/5; seconds = 0; } drawMinuteMarker(); if ((propeller_posn==0) || (propeller_posn==5) || (propeller_posn==10) || (propeller_posn==15) || (propeller_posn==20) || (propeller_posn==25) || (propeller_posn==30) || (propeller_posn==35) || (propeller_posn==40) || (propeller_posn==45) || (propeller_posn==50) || (propeller_posn==55)) drawHourMarker(); if ((propeller_posn==0) || (propeller_posn==15) || (propeller_posn==30) || (propeller_posn==45)) drawQuarterMarker(); if((propeller_posn == hours*5) || (( propeller_posn == 0 ) && (hours == 0))) drawHoursHand(); if(propeller_posn == minutes) drawMinutesHand(); if(propeller_posn == seconds) drawSecondsHand(); delayMicroseconds(100); // LED 픽셀 폭 (모터 속도에 맞춰 조절. 저속이면 증가, 고속이면 감소) displayClear(); drawInner_Circle(); delayMicroseconds(450); // LED 픽셀/분 마커 간 간격 (모터 속도에 맞춰 조절) n++; propeller_posn++; if(propeller_posn == 60) propeller_posn=0; } val = digitalRead(sensorPin); while (val == HIGH) { val = digitalRead(sensorPin); } } //========================= void displayClear() { digitalWrite(LED1,LOW); digitalWrite(LED2,LOW); digitalWrite(LED3,LOW); digitalWrite(LED4,LOW); digitalWrite(LED5,LOW); digitalWrite(LED6,LOW); digitalWrite(LED7,LOW); digitalWrite(LED8,LOW); digitalWrite(LED9,LOW); digitalWrite(LED10,LOW); digitalWrite(LED11,LOW); digitalWrite(LED12,LOW); digitalWrite(LED13,LOW); digitalWrite(LED14,LOW); digitalWrite(LED15,LOW); digitalWrite(LED16,LOW); } void drawMinuteMarker() { digitalWrite(LED16,HIGH); } void drawHourMarker() { digitalWrite(LED15,HIGH); digitalWrite(LED14,HIGH); } void drawQuarterMarker() { digitalWrite(LED13,HIGH); digitalWrite(LED12,HIGH); } void drawHoursHand() { digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); digitalWrite(LED7,HIGH); } void drawMinutesHand() { digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); digitalWrite(LED7,HIGH); digitalWrite(LED8,HIGH); digitalWrite(LED9,HIGH); } void drawSecondsHand() { digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); digitalWrite(LED3,HIGH); digitalWrite(LED4,HIGH); digitalWrite(LED5,HIGH); digitalWrite(LED6,HIGH); digitalWrite(LED7,HIGH); digitalWrite(LED8,HIGH); digitalWrite(LED9,HIGH); digitalWrite(LED10,HIGH); digitalWrite(LED11,HIGH); } void drawInner_Circle() { digitalWrite(LED1,HIGH); delayMicroseconds(30); digitalWrite(LED1,LOW); } 

LED 팬 시계 시간 설정 변경 방법

메인 회로에 기본 IR 수신기 추가 시

필요 부품:

첫 번째 IR LED(분 설정, LED#13 근처)에 R19, 두 번째 IR LED(시 설정, LED#16 근처)에 R20 연결. 두 IR LED 공통단과 저항들을 아두이노 나노 GND와 5V에 각각 연결. 점퍼 와이어로 A7 핀을 R19-두 번째 IR 사이, A6 핀을 R20-첫 번째 IR 사이에 연결.

아두이노 나노로 만드는 USB 전원 LED 팬 시계 - 회로도 & 코드

기본 IR 리모컨 송신기 제작

필요 부품:

간단한 IR 리모컨 송신기 제작: 9V 배터리, IR LED, 1kΩ 저항, 택트 스위치를 양극 측에 직렬 연결. 이 송신기를 LED#13(분 마커), LED#16(시 마커) 앞에 대고 버튼 눌러 시간 설정.

아래 코드로 USB LED 팬 시계의 아날로그 시계 바늘(시침, 분침) 위치 조정:

아두이노 시리얼 모니터로 IR 검출기 출력 확인. 예: 일반 실내 조명에서 >500, IR 빛에서 <500. 사용 센서에 맞춰 코드/값 조정.

 propeller_posn=30; n=0; while(n < 60) { ADCvalue = analogRead(minuteSensor); if(ADCvalue < 500) { minutes = propeller_posn; seconds = 0; } ADCvalue = analogRead(hourSensor); if(ADCvalue < 500) { hours = propeller_posn/5; seconds = 0; } 

분침 설정: IR 리모컨을 분 마커에 겨냥해 버튼 누름. 시침 설정: IR 리모컨을 시 마커에 겨냥해 버튼 누름.

동영상 보기:

자료:

LED 라이트 팬 시계 가젯

프로젝트용 키트 & 부품

프로젝트용 아두이노 나노

산업기술

  1. 555 타이머 & 4017 카운터로 LED 시퀀서 제작: 주파수 분할 & 디바운스
  2. 아두이노 POV 클락: 퍼시스턴스 오브 비전 LED 디스플레이 제작
  3. 아두이노로 만드는 대형 LED 마스터 시계 (알람 기능 포함, 12m 거리에서도 식별 가능)
  4. 아두이노 틱택토 게임 - MAX7219 LED 매트릭스와 골판지 케이스
  5. 스마트 아두이노 4족 보행 로봇 제작: 단계별 완벽 가이드
  6. 스파크펀 7-세그먼트 디스플레이로 신뢰할 수 있는 아두이노 카운트다운 타이머 만들기
  7. 아두이노 8×8 LED 매트릭스 플립 시계 – DIY 실시간 시계 프로젝트
  8. 아두이노로 직접 만드는 RC 포르쉐 자동차: 단계별 가이드
  9. DIY 아두이노 USB 트랙패드 – 낡은 노트북 패드를 최신 입력 장치로 변환
  10. 전문가용 LED 나이트 램프 회로도 - 230V/50Hz 또는 110V/60Hz 메인 직결 설계