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

Светодиодные часы POV в аналоговом стиле

Компоненты и расходные материалы

Arduino Nano R3
× 1
LED (общий)
× 17
Датчик эффекта Холла
× 1
Резистор 100 Ом
× 17
Двигатель постоянного тока (общий)
× 1
Регулятор переключения Boost (Step Up), фиксированный
× 1

Необходимые инструменты и машины

Паяльник (общий)

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Дисплеи с постоянным зрением (POV) обычно представляют собой светодиодные дисплеи, которые «показывают» изображения, отображая часть изображения в заданное время в быстрой быстрой последовательности. Человеческий мозг воспринимает это как отображение непрерывного изображения.

На сайте "хобби-проекта" представлены эти относительно простые, но визуально эффектные аналоговые циферблаты. Электронная часть содержит светодиодные диоды Arduino Nano 17 и датчик Холла. Группы светодиодов d1-d11, d12-d16 и d17 имеют разный цвет для лучшего визуального эффекта. Устройство питается от литий-ионной батареи через повышающий преобразователь.

Самым сложным в проектах для меня была механическая устойчивость. В первой попытке батарея была установлена ​​эксцентрично и при более высокой скорости вращения была огромная вибрация. Затем я сделал модификацию и поместил аккумулятор в центр вращения.

Для вращения я использую электродвигатель 12 В, подключенный к источнику переменного тока, поэтому скорость вращения устройства можно легко контролировать. В зависимости от скорости вращения устройства в коде необходимо установить значение «delayMicroseconds» на определенное значение.

Представленное видео недостаточно четкое, потому что для этого мне нужна камера с более высокой частотой кадров в секунду.

Код

  • код
код Arduino
 // хоббипроекты // ArduinoNanoPropellerLEDAnalogClock20190403Aint 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; unsigned int n, ADCvalue, propeller_posn; unsigned long previousTime =0; байтовые часы =12; // устанавливаем часы в байтах минут =15; // устанавливаем минуты байта секунд =00; // установить секунды int val; void setup () {pinMode (LED1, OUTPUT); pinMode (LED2, ВЫХОД); pinMode (LED3, ВЫХОД); pinMode (LED4, ВЫХОД); pinMode (LED5, ВЫХОД); pinMode (LED6, ВЫХОД); pinMode (LED7, ВЫХОД); pinMode (LED8, ВЫХОД); pinMode (LED9, ВЫХОД); pinMode (LED10, ВЫХОД); pinMode (LED11, ВЫХОД); pinMode (LED12, ВЫХОД); pinMode (LED13, ВЫХОД); pinMode (LED14, ВЫХОД); pinMode (LED15, ВЫХОД); pinMode (LED16, ВЫХОД); pinMode (sensorPin, INPUT_PULLUP); если (часы ==12) часы =0;} void loop () {val =digitalRead (sensorPin); в то время как (val ==LOW) {val =digitalRead (sensorPin); } если (миллис ()> =(предыдущее время)) {предыдущее время =предыдущее время + 1000; секунды =секунды + 1; если (секунд ==60) {секунд =0; минуты =минуты + 1; } если (минут ==60) {минут =0; часы =часы + 1; } если (часы ==12) {часы =0; }} propeller_posn =30; п =0; в то время как (n <60) {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 (); если ((propeller_posn ==часы * 5) || ((propeller_posn ==0) &&(hours ==0))) drawHoursHand (); если (propeller_posn ==минут) drawMinutesHand (); если (propeller_posn ==секунд) drawSecondsHand (); delayMicroseconds (140); // для ширины пикселя светодиода (измените значение в соответствии со скоростью двигателя. Увеличьте для низкой скорости, уменьшите для высокой скорости двигателя) displayClear (); drawInner_Circle (); delayMicroseconds (600); // для промежутка между пикселями светодиода / маркерами минут (изменить значение в зависимости от скорости двигателя. Увеличить для низкой скорости, уменьшить для высокой скорости двигателя) n ++; propeller_posn ++; если (propeller_posn ==60) propeller_posn =0; } val =digitalRead (sensorPin); в то время как (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, ВЫСОКИЙ); digitalWrite (LED3, HIGH); digitalWrite (LED4, HIGH); digitalWrite (LED5, HIGH); digitalWrite (LED6, HIGH); digitalWrite (LED7, HIGH); } void drawMinutesHand () {digitalWrite (LED1, HIGH); digitalWrite (LED2, ВЫСОКИЙ); 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, ВЫСОКИЙ); 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, ВЫСОКИЙ); } void drawInner_Circle () {digitalWrite (LED1, HIGH); delayMicroseconds (30); digitalWrite (LED1, LOW); } 

Схема


Производственный процесс

  1. Светодиодный секвенсор
  2. Часы с кукушкой
  3. Музыкальный визуализатор DIY LUMAZOID для Arduino
  4. Часы видения Arduino pov
  5. Устройство измерения расхода воздуха под давлением с аналоговым датчиком
  6. Рулетка DIY 37 LED
  7. Основные часы
  8. 3D RGB Arduclock
  9. Колесо вкладки аналогового триммирования FlightGear
  10. Светодиодная матрица + датчик движения дверной дисплей [Arduino Holiday]