Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Светодиодные вентиляторные часы с пропеллером USB — принципиальная схема и код проекта

USB LED Light Fan Аналоговые часы с использованием Arduino NANO — код проекта и принципиальная схема с функцией настройки времени

Если вы смотрели видео о знаменитом гаджете Веерные часы со светодиодной подсветкой Mini USB, будьте готовы, поскольку мы разработаем такие же аналоговые часы со светодиодной подсветкой на основе Arduino NANO, датчика Холла. , резисторы, аккумулятор, двигатель постоянного тока и светодиоды.

Светодиоды будут вращаться по кругу и отображать аналоговые часы на пропеллерном дисплее со всеми тремя стрелками для часов, минут и секунд соответственно, а также закругленную (круглую) форму, например обычные наручные или настенные часы.

Лучшее в этом проекте то, что вы можете изменить настройку времени как для минут, так и для секунд, загрузив исходный код в Arduino NANO через USB-кабель. Давайте посмотрим, как это сделать.

Проверьте гаджет со светодиодной подсветкой FAN Clock

Необходимые компоненты:

Электросхема и принципиальная схема

Ниже приведена принципиальная схема аналоговых часов с пропеллерным USB-вентилятором со светодиодной подсветкой. Если вы хотите сделать тот же проект с функцией установки времени, проверьте вторую принципиальную схему, приведенную внизу этого поста.

Процедура:

  1. Отрежьте небольшой кусок печатной платы в соответствии со схемой.
  2. Вставьте зеленый светодиод в отверстия длинной ножкой с левой стороны. Теперь со стороны меди согните ножки в одну сторону (зеленый светодиод, т.е. светодиод 12 — светодиод 16 через R12 к R16 и A5 к A1 соответственно).
  3. Таким же образом вставьте оставшиеся красные светодиоды (светодиод 1 – светодиод 11 через R1 до R11 и D2 до D12 соответственно).
  4. Вставьте синий светодиод над зеленым, как показано на рис. (Синий светодиод 17 через R17 и A7). Подключите R17 как 2,2 кОм и соедините катод этого светодиода с катодом других светодиодов. Теперь подключите положительную ногу этого светодиода к одному концу резистора R17, а другой конец к контакту Arduino + 5V.
  5. Все катодные соединения светодиодов соединены вместе. При необходимости отрежьте лишние лиды.
  6. Теперь вставьте резисторы и согните их выводы так же, как вы делали это для светодиода. Соответственно обрежьте лишние лиды.
  7. Теперь припаяйте компоненты в соответствии со схемой.
  8. Теперь припаяйте разъемы к Arduino NANO.
  9. Подключите провод от общего катода светодиодов к контакту GND Arduino.

Подключите провод от резисторов к цифровому контакту «D» и аналоговому контакту «A» Arduino следующим образом:

Подключите датчик Холла следующим образом:

И последний штрих:

  1. Подключите батарею 3,7 В, 240 мАч в соответствии со схемой и не забудьте добавить однополюсный тумблер на положительный вывод для включения и выключения схемы.
  2. Теперь смонтируйте весь проект на ДСП с помощью игрушечного двигателя постоянного тока. Имейте в виду, что если вы используете мощный двигатель для высокой скорости, вы можете вместо него использовать батарею от 9 В до 12 В.
  3. Наконец, загрузите код проекта (приведенный ниже) на USB-кабель viva и включите цепь. Вентилятор будет показывать часы светодиодной подсветкой во время вращения пропеллера.

Код проекта

Вы можете внести необходимые изменения в следующий исходный код вентиляторных часов с USB-подсветкой и при необходимости загрузить их в Arduino NANO через USB-кабель.

Код через:хоббипроекты

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 с первым ИК-светодиодом (возле светодиода № 13 для настройки минут) и R20 со вторым ИК-светодиодом (рядом со светодиодом № 16 для настройки часов). Подключите общий провод ИК-светодиода и обоих резисторов к контактам GND и 5V Arduino NANO соответственно. Наконец, подключите перемычку от контакта A7 к R19 и второму IR. Сделайте то же самое для контакта A6 с R20 и первым IR.

Для базового ИК-пульта дистанционного управления  Передатчик

Необходимые компоненты:

Чтобы сделать простой ИК-пульт дистанционного управления для установки и управления функциями установки времени в USB-часах вентилятора со светодиодной подсветкой, просто подключите все компоненты последовательно (т. е. батарея 9 В, ИК-светодиод , резистор 1 кОм и тактовый переключатель на положительной клемме). Этот передатчик будет использоваться для размещения светодиода № 13 и светодиода № 16 для регулировки времени.

Следующий код используется для изменения и настройки часовой и минутной оси (минутной и часовой стрелок в обычных настенных часах и аналоговых часах) аналоговых вентиляторных часов с USB-подсветкой.

Проверьте выход схемы ИК-детектора с помощью последовательного монитора Arduino. Например, показания при обычном комнатном освещении составляют> 500, а показания при ИК-подсветке <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;
  }

Чтобы настроить минутную стрелку, наведите ИК-пульт на минутную метку и нажмите кнопку на пульте. Чтобы установить часовую стрелку, направьте ИК-пульт на часовую стрелку и нажмите кнопку на пульте.

Посмотрите видео:

Ресурсы:

Гаджет часов со светодиодной подсветкой ВЕНТИЛЯТОР

Наборы и компоненты для этого проекта

Arduino NANO для этого проекта


Промышленные технологии

  1. Светодиодный секвенсор
  2. Часы видения Arduino pov
  3. Основные часы
  4. Tech-TicTacToe
  5. Четвероногий Arduino
  6. Таймер обратного отсчета Arduino
  7. Перекидные часы Arduino с одной светодиодной матрицей
  8. Радиоуправляемый автомобиль Porsche (проект Arduino)
  9. USB-трекпад, управляемый Arduino
  10. 230 В 50 Гц переменного тока (или 110 В 60 Гц) Сетевой светодиод Мощный НОЧНОЙ СВЕТИЛЬНИК Принципиальная схема.