Светодиодные вентиляторные часы с пропеллером USB — принципиальная схема и код проекта
USB LED Light Fan Аналоговые часы с использованием Arduino NANO — код проекта и принципиальная схема с функцией настройки времени
Если вы смотрели видео о знаменитом гаджете Веерные часы со светодиодной подсветкой Mini USB, будьте готовы, поскольку мы разработаем такие же аналоговые часы со светодиодной подсветкой на основе Arduino NANO, датчика Холла. , резисторы, аккумулятор, двигатель постоянного тока и светодиоды.
Светодиоды будут вращаться по кругу и отображать аналоговые часы на пропеллерном дисплее со всеми тремя стрелками для часов, минут и секунд соответственно, а также закругленную (круглую) форму, например обычные наручные или настенные часы.
Лучшее в этом проекте то, что вы можете изменить настройку времени как для минут, так и для секунд, загрузив исходный код в Arduino NANO через USB-кабель. Давайте посмотрим, как это сделать.
Проверьте гаджет со светодиодной подсветкой FAN Clock
Необходимые компоненты:
- Ардуино НАНО
- Датчик Холла W130
- R1–R16 =330 Ом
- R17 =2,2 кОм
- R18 =10 кОм
- Индикаторы 1–11 =красный свет.
- Индикаторы 12–16 =зеленый свет.
- Индикатор 17 =синий свет.
- Аккумулятор =3,7 В, 240 мА·ч (от 9 В до 12 В в случае мощного двигателя для работы на высокой скорости)
- Переключатель =ВКЛ/ВЫКЛ Однополюсный (ползунковый переключатель)
- Другие компоненты:печатная плата, игрушечный двигатель постоянного тока, провода и кабели, паяльник и т. д.
Электросхема и принципиальная схема
Ниже приведена принципиальная схема аналоговых часов с пропеллерным USB-вентилятором со светодиодной подсветкой. Если вы хотите сделать тот же проект с функцией установки времени, проверьте вторую принципиальную схему, приведенную внизу этого поста.
Процедура:
- Отрежьте небольшой кусок печатной платы в соответствии со схемой.
- Вставьте зеленый светодиод в отверстия длинной ножкой с левой стороны. Теперь со стороны меди согните ножки в одну сторону (зеленый светодиод, т.е. светодиод 12 — светодиод 16 через R12 к R16 и A5 к A1 соответственно).
- Таким же образом вставьте оставшиеся красные светодиоды (светодиод 1 – светодиод 11 через R1 до R11 и D2 до D12 соответственно).
- Вставьте синий светодиод над зеленым, как показано на рис. (Синий светодиод 17 через R17 и A7). Подключите R17 как 2,2 кОм и соедините катод этого светодиода с катодом других светодиодов. Теперь подключите положительную ногу этого светодиода к одному концу резистора R17, а другой конец к контакту Arduino + 5V.
- Все катодные соединения светодиодов соединены вместе. При необходимости отрежьте лишние лиды.
- Теперь вставьте резисторы и согните их выводы так же, как вы делали это для светодиода. Соответственно обрежьте лишние лиды.
- Теперь припаяйте компоненты в соответствии со схемой.
- Теперь припаяйте разъемы к Arduino NANO.
- Подключите провод от общего катода светодиодов к контакту GND Arduino.
Подключите провод от резисторов к цифровому контакту «D» и аналоговому контакту «A» Arduino следующим образом:
- R1–D2
- R2–D3
- R3–D4
- R4–D5
- R5–D6
- R6–D7
- R7–D8
- R8–D9
- R9–D10
- R10–D11
- R11–D12
- R12–A1
- R13–A2
- R14–A3
- R15–A4
- R16–A5
Подключите датчик Холла следующим образом:
- Выходной контакт на контакт Arduino A0.
- Вывод VCC к выводу +5V Arduino.
- Контакт заземления датчика к контакту GND Arduino.
И последний штрих:
- Подключите батарею 3,7 В, 240 мАч в соответствии со схемой и не забудьте добавить однополюсный тумблер на положительный вывод для включения и выключения схемы.
- Теперь смонтируйте весь проект на ДСП с помощью игрушечного двигателя постоянного тока. Имейте в виду, что если вы используете мощный двигатель для высокой скорости, вы можете вместо него использовать батарею от 9 В до 12 В.
- Наконец, загрузите код проекта (приведенный ниже) на 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 и R20 =10 тысяч
- ИК-светодиод фототранзистора (рядом со светодиодом №13 для установки минут)
- ИК-светодиод фототранзистора (рядом со светодиодом №16 для настройки часов)
Просто соедините R19 с первым ИК-светодиодом (возле светодиода № 13 для настройки минут) и R20 со вторым ИК-светодиодом (рядом со светодиодом № 16 для настройки часов). Подключите общий провод ИК-светодиода и обоих резисторов к контактам GND и 5V Arduino NANO соответственно. Наконец, подключите перемычку от контакта A7 к R19 и второму IR. Сделайте то же самое для контакта A6 с R20 и первым IR.
Для базового ИК-пульта дистанционного управления Передатчик
Необходимые компоненты:
- Батарея 9 В
- Коннектор аккумулятора
- ИК-светодиод (инфракрасный светодиод)
- Резистор 1 кОм
- Тактильный переключатель
- Плата для печатных плат
Чтобы сделать простой ИК-пульт дистанционного управления для установки и управления функциями установки времени в 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 для этого проекта
Промышленные технологии
- Светодиодный секвенсор
- Часы видения Arduino pov
- Основные часы
- Tech-TicTacToe
- Четвероногий Arduino
- Таймер обратного отсчета Arduino
- Перекидные часы Arduino с одной светодиодной матрицей
- Радиоуправляемый автомобиль Porsche (проект Arduino)
- USB-трекпад, управляемый Arduino
- 230 В 50 Гц переменного тока (или 110 В 60 Гц) Сетевой светодиод Мощный НОЧНОЙ СВЕТИЛЬНИК Принципиальная схема.