산업기술
Mini USB LED 조명 팬 시계의 유명한 가제트의 비디오를 본 적이 있다면 준비하십시오. Arduino NANO, 홀 센서를 기반으로 동일한 LED 조명 아날로그 시계를 설계할 것입니다. , 저항기, 배터리, DC 모터 및 LED.
LED가 원형 동작으로 회전하고 프로펠러 디스플레이에 아날로그 시계가 각각 시, 분, 초에 대한 세 개의 바늘과 다음과 같은 둥근(원형) 모양으로 표시됩니다. 일반 손목시계나 벽시계.
이 프로젝트의 가장 좋은 점은 USB 케이블을 통해 Arduino NANO에 소스 코드를 업로드하여 분과 초 모두 시간 설정을 변경할 수 있다는 것입니다. 방법을 알아보겠습니다.
LED 조명 FAN 시계의 가제트 확인
다음은 USB 프로펠러 LED 팬 아날로그 시계의 회로도입니다. 시간 설정 기능으로 같은 프로젝트를 만들고 싶다면 이 포스트 하단에 있는 두 번째 회로도를 확인하세요.
저항에서 Arduino 디지털 핀 "D" 및 아날로그 핀 "A"에 다음과 같이 와이어를 연결합니다.
홀 센서를 다음과 같이 연결합니다.
마지막으로:
필요한 경우 USB Led 팬 시계의 다음 소스 코드를 변경하고 USB 케이블을 통해 Arduino NANO에 업로드할 수 있습니다.
다음을 통한 코드:취미 프로젝트
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; // set hours
byte minutes = 15; // set minutes
byte seconds = 00; // set seconds
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;
//****************************************
// Uncomment these lines for IR sensor testing
/*
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); // for LED pixel width (change the value according to motor speed. Increase for low speed, decrease for high speed motor)
displayClear();
drawInner_Circle();
delayMicroseconds(450); // for the gap between LED pixels/minutes markers (change the value according to motor speed. Increase for low speed, decrease for high speed motor)
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);
}
기본 IR의 경우 수신자 주 회로 포함
필요한 구성요소:
R19를 첫 번째 IR LED(분 설정의 경우 LED#13 근처)에 연결하고 R20을 두 번째 IR(시간 설정의 경우 LED#16 근처)에 연결하기만 하면 됩니다. IR LED의 커먼과 두 저항을 Arduino NANO의 GND와 5V 핀에 각각 연결합니다. 마지막으로 A7 핀의 점퍼선을 R19와 두 번째 IR 사이에 연결합니다. A6 핀에 대해 R20 및 첫 번째 IR에 대해 동일한 작업을 수행합니다.
기본 IR 원격 제어용 송신기
필요한 구성요소:
USB LED 팬 시계의 시간 설정 기능을 설정하고 제어하는 간단한 IR 리모콘 송신기를 만들려면 모든 구성 요소를 직렬로 연결하기만 하면 됩니다(예:9V 배터리, IR LED , 1k 옴 저항 및 양극 단자의 택트 스위치). 이 송신기는 시간을 조정하기 위해 LED#13 및 LED#16을 배치하고 마주보는 데 사용됩니다.
다음 코드는 아날로그 USB led 팬 시계의 시 및 분 스핀들(일반 벽시계 및 아날로그 시계의 분 및 시침)을 변경하고 조정하는 데 사용됩니다.
Arduino 직렬 모니터를 사용하여 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 조명 팬 시계 가제트
이 프로젝트의 키트 및 구성요소
이 프로젝트의 Arduino NANO
산업기술
최근 LED 조명은 저렴하고 내구성이 좋아 사용이 급증하고 있습니다. 또한 LED는 다른 광원만큼 에너지를 소비하지 않습니다. 또한 집이나 사무실 장식, 비상등, 자동차 주간 주행등, 일반 램프 등과 같은 다양한 응용 프로그램을 볼 수 있습니다. LED의 퇴색은 이러한 중요한 응용 분야 중 하나입니다. 여기에서 다양한 목적에 따라 밝기를 높이거나 낮추도록 LED 조명을 구성할 수 있습니다. 따라서 이 기사에서는 LED 페이딩에 대해 알아야 할 모든 것과 브레드보드, PCB, IC 555 타이머를 사용하여 간단한 LED 페이더
오늘날 CD4049보다 더 나은 인버터 IC는 없습니다. 이 인버터는 논리 회로의 중요한 구성 요소로 남아 있으며 매우 안정적입니다. 예를 들어 회로 로직 레벨 변환이 필요한 경우 이 CMOS 로직 기반 16진 인버터 IC가 솔루션입니다. 또한 이 인버터 IC에서는 다른 회로가 가장 잘 작동합니다. 계속 읽으면서 이 초보자 친화적인 IC를 사용하여 다양한 회로 프로젝트를 구축하는 방법을 설명합니다. 따라서 이 매뉴얼의 도움으로 귀하의 건설 프로세스를 보다 쉽게 접근할 수 있고 시기적절하게 만들 수 있습니다. 1. CD4049