Relógio de Ventilador LED de Hélice USB - Diagrama de Circuito e Código do Projeto
Relógio analógico de ventilador de luz LED USB usando Arduino NANO – código de projeto e diagrama de circuito com recurso de configuração de tempo
Se você assistiu ao vídeo do famoso gadget do Relógio de ventilador de luz LED Mini USB, prepare-se, pois projetaremos o mesmo relógio analógico de luz LED baseado no Arduino NANO, sensor hall , resistores, bateria, motor DC e LEDs.
Os LEDs girarão em movimento circular e mostrarão um relógio analógico no visor da hélice com todos os três ponteiros para hora, minuto e segundo, respectivamente, bem como a forma arredondada (circular) como um relógio comum de pulso ou de parede.
A melhor coisa neste projeto é que você pode alterar a configuração de tempo para minutos e segundos enviando o código-fonte para o Arduino NANO via cabo USB. Vejamos como fazê-lo.
Verifique o Gadget do Relógio FAN de Luz LED
Componentes obrigatórios:
- Arduíno NANO
- Sensor Hall W130
- R1 a R16 =330Ω
- R17 =2,2kΩ
- R18 =10kΩ
- LED 1 a LED 11 =luz vermelha
- LED 12 a LED 16 =luz verde
- LED 17 =luz azul
- Bateria =3,7V, 240mAh (9V a 12V no caso de motor potente para operação em alta velocidade)
- Interruptor =LIGADO / DESLIGADO Pólo Único (Alternar Slide)
- Outros componentes:placa PCB, motor DC de brinquedo, fios e cabos, ferro de solda etc.
Fiação e diagrama de circuito
Segue o diagrama de circuito fornecido para o relógio analógico do ventilador LED da hélice USB. Se você quiser fazer o mesmo projeto com um recurso de configuração de tempo, verifique o segundo diagrama de circuito fornecido na parte inferior deste post.
Procedimento:
- Corte um pequeno pedaço de placa PCB de acordo com o circuito.
- Insira um LED verde nos orifícios com a perna longa do lado esquerdo. Agora, do lado do cobre, dobre as pernas para um lado (LEDs verdes, ou seja, LED 12 – LED 16 via R12 a R16 e A5 a A1, respectivamente).
- Da mesma forma, insira os LEDs vermelhos restantes (LED 1 – LED 11 via R1 a R11 e D2 a D12, respectivamente).
- Insira o Led Azul acima do Led Verde conforme mostrado na fig (Led Azul 17 via R17 e A7). Conecte R17 como 2,2kΩ e una o cátodo deste LED ao cátodo de outros LEDs. Agora, conecte a perna positiva deste Led a uma extremidade do resistor R17 e a outra extremidade ao pino Arduino +5V.
- Todas as conexões catódicas dos LEDs são unidas. Corte os fios em excesso, se necessário.
- Agora insira os resistores e dobre seus terminais da mesma forma que você fez para os LEDs. Corte os leads extras de acordo.
- Agora solde os componentes de acordo com o diagrama de circuito.
- Agora, solde os conectores no Arduino NANO.
- Conecte um fio do cátodo comum dos LEDs ao pino GND do Arduino.
Conecte o fio dos resistores ao pino digital “D” do Arduino e ao pino analógico “A” da seguinte forma:
- R1 a D2
- R2 a D3
- R3 a D4
- R4 a D5
- R5 a D6
- R6 a D7
- R7 a D8
- R8 a D9
- R9 a D10
- R10 a D11
- R11 a D12
- R12 a A1
- R13 a A2
- R14 a A3
- R15 a A4
- R16 a A5
Conecte o sensor Hall da seguinte maneira:
- Pino de saída para pino A0 do Arduino.
- Pino VCC para pino Arduino +5V.
- Pino terra do sensor para pino GND do Arduino.
Como toque final:
- Conecte a bateria de 3,7 V e 240 mAh de acordo com o circuito e não se esqueça de adicionar um interruptor deslizante de polo único no fio positivo para operação LIGADA e DESLIGADA do circuito.
- Agora, monte todo o projeto em um aglomerado com a ajuda de um motor DC de brinquedo. Lembre-se de que, se você usar um motor potente para alta velocidade, poderá usar uma bateria de 9 V a 12 V.
- Finalmente, carregue o código do projeto (abaixo) viva o cabo USB e LIGUE o circuito. O ventilador mostrará o relógio na luz LED enquanto estiver em movimento da hélice.
Código do projeto
Você pode fazer as alterações necessárias no seguinte código-fonte do relógio do ventilador LED USB e fazer upload para o Arduino NANO por meio do cabo USB se necessário.
Código via: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; // 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);
}
Como alterar a configuração de hora no relógio do ventilador de LED?
Para IR básico Receptor com o Circuito Principal
Componentes necessários:
- R19 e R20 =10 mil
- LED do fototransistor IR (próximo ao LED nº 13 para configuração de minuto)
- LED do fototransistor IR (próximo ao LED nº 16 para configuração de horas)
Basta conectar o R19 com o primeiro LED IR (próximo ao LED#13 para ajuste de minutos) e R20 com o segundo IR (próximo ao LED#16 para ajuste de hora). Conecte o comum dos LEDs IR e ambos os resistores ao pino GND e 5V do Arduino NANO, respectivamente. Finalmente, conecte o fio jumper do pino A7 entre R19 e o segundo IR. Faça o mesmo para o pino A6 para R20 e primeiro IR.
Para controle remoto IR básico Transmissor
Componentes necessários:
- Bateria de 9V
- Conector de encaixe da bateria
- LED IR (LED infravermelho)
- Resistor de 1kΩ
- Mudança de tato
- Placa PCB
Para fazer um transmissor de controle remoto IR simples para definir e controlar os recursos de configuração de tempo no relógio do ventilador LED USB, basta conectar todos os componentes em série (ou seja, bateria de 9V, LED IR , resistor de 1k ohm e uma chave de tato no terminal positivo). Este transmissor será usado para colocar e enfrentar o LED#13 e o LED#16 para ajustar o tempo.
O código a seguir é usado para alterar e ajustar o fuso de hora e minuto (ponteiros de minutos e horas em relógios de parede comuns e relógios analógicos) do relógio de ventilador LED USB analógico.
Verifique a saída do circuito do detector IR usando o Arduino Serial Monitor. Por exemplo, a leitura com luz ambiente normal é> 500 e a leitura com luz IR é <500. Assim, você pode alterar o código ou os valores aqui de acordo com os sensores usados.
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;
}
Para acertar o ponteiro dos minutos, aponte o controle remoto IR para o marcador de minutos e pressione o botão do controle remoto. Para ajustar o ponteiro das horas, aponte o controle remoto IR para o marcador de horas e pressione o botão do controle remoto.
Assista ao vídeo:
Recursos:
Aparelho do Relógio FAN de Luz LED
Kits e componentes para este projeto
Arduino NANO para este projeto
Tecnologia industrial
- Sequenciador de LED
- Relógio de visão pov do Arduino
- Relógio mestre
- Tech-TicTacToe
- Arduino Quadruped
- Cronômetro de contagem regressiva do Arduino
- Relógio giratório Arduino de matriz de LED único
- RC Porsche Car (Projeto Arduino)
- Trackpad USB controlado por Arduino
- 230 V 50Hz AC (ou 110V 60Hz) Diagrama de circuito de LED de operação principal da LÂMPADA NOITE poderosa.