Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Tecnologia industrial

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:

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:

  1. Corte um pequeno pedaço de placa PCB de acordo com o circuito.
  2. 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).
  3. Da mesma forma, insira os LEDs vermelhos restantes (LED 1 – LED 11 via R1 a R11 e D2 a D12, respectivamente).
  4. 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.
  5. Todas as conexões catódicas dos LEDs são unidas. Corte os fios em excesso, se necessário.
  6. Agora insira os resistores e dobre seus terminais da mesma forma que você fez para os LEDs. Corte os leads extras de acordo.
  7. Agora solde os componentes de acordo com o diagrama de circuito.
  8. Agora, solde os conectores no Arduino NANO.
  9. 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:

Conecte o sensor Hall da seguinte maneira:

Como toque final:

  1. 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.
  2. 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.
  3. 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:

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:

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

  1. Sequenciador de LED
  2. Relógio de visão pov do Arduino
  3. Relógio mestre
  4. Tech-TicTacToe
  5. Arduino Quadruped
  6. Cronômetro de contagem regressiva do Arduino
  7. Relógio giratório Arduino de matriz de LED único
  8. RC Porsche Car (Projeto Arduino)
  9. Trackpad USB controlado por Arduino
  10. 230 V 50Hz AC (ou 110V 60Hz) Diagrama de circuito de LED de operação principal da LÂMPADA NOITE poderosa.