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

Цифровые часы TM1637 с функцией настройки времени и будильника

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

Arduino Nano R3
× 1
4-значный дисплей TM1637
× 1
Модуль DS1302 RTC
× 1
SparkFun LilyPad LED Blue (5 шт.)
× 1
Зуммер
× 1

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

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

Вы можете посмотреть весь учебник на

Если вам нравится этот контент и вы хотите поддержать меня в создании похожих видео, перейдите на мою веб-страницу Patreon

https://www.patreon.com/MariosIdeas

Или

https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7PD67JWZ9S3EJ&source=url

Код

  • Отображение времени из модуля RTC, а также функции настройки времени и сигнализации.
Отображение времени из модуля RTC, а также функции настройки времени и сигнализации Arduino
Этот код считывает текущее время из модуля RTC. Затем он также позволяет обновлять текущее время, а также устанавливать время будильника.
Действия по настройке выполняются с помощью 3 кнопок.
 // Идеи Марио // Цифровые часы TM1637 с функциями настройки и будильника # include  #include  #include  //// Объявление модуля RTC // PINS CLK, DAT, RSTvirtuabotixRTC myRTC (A1, A2, A3); // Переменные для хранения предыдущих значений, считываемых из модуля RTC int minutes; int hours; // Переменные для хранения времени, в которое должен сработать сигнал тревоги int Alarm_minutes =05; int Alarm_hours =18; uint8_t Blank [] ={0x0}; int POSITION =0; // Таблица для хранения 4 цифр, используемых во времени и процедуре установки сигнала тревоги int digits [3]; int interval =0; #define Alarm 9 // Кнопка для включения или выключения режима тревоги # define Buzer 13 #define Led 8 // Статусыboolean Alarm_set =false; boolean Alarm_in_progress =false; boolean Setup_on =false; // Выводы подключения 4-значного дисплея (цифровые выводы) #define CLK 4 # define DIO 5 // объявление 4-значного дисплея TM1637Display clock (CLK, DIO); void setup () {attachInterrupt (digitalPinToInterrupt (2), Press_A_Button, RISING); attachInterrupt (digitalPinToInterrupt (3), Press_B_Button, RISING); pinMode (Тревога, ВХОД); pinMode (Зуммер, ВЫХОД); pinMode (светодиод, ВЫХОД); digitalWrite (зуммер, LOW); clock.setBrightness (0x0f); Serial.begin (9600);} void Press_A_Button () {if (interval> 3) {if (Setup_on ==false) {Setup_on =true; если (Alarm_set ==true) {digits [0] =(int) Alarm_hours / 10; цифры [1] =Alarm_hours - ((int) Alarm_hours / 10) * 10; цифры [2] =(int) Alarm_minutes / 10; цифры [3] =Alarm_minutes - ((int) Alarm_minutes / 10) * 10; } еще {цифры [0] =(целое) myRTC.hours / 10; цифры [1] =myRTC.hours - ((int) myRTC.hours / 10) * 10; цифры [2] =(целое) myRTC.minutes / 10; цифры [3] =myRTC.minutes - ((int) myRTC.minutes / 10) * 10; }} else {ПОЛОЖЕНИЕ ++; if (POSITION ==4) {if (Alarm_set ==true) {Alarm_minutes =цифры [3] + цифры [2] * 10; Alarm_hours =цифры [1] + цифры [0] * 10; } else {myRTC.setDS1302Time (0, цифры [3] + цифры [2] * 10, цифры [1] + цифры [0] * 10, myRTC.dayofweek, myRTC.dayofmonth, myRTC.month, myRTC.year); clock.showNumberDec (цифры [0], ложь, 1,0); clock.showNumberDec (цифры [1], ложь, 1,1); clock.showNumberDec (цифры [2], ложь, 1,2); clock.showNumberDec (цифры [3], ложь, 1,3); } ПОЛОЖЕНИЕ =0; Setup_on =false; }}} interval =0;} void Press_B_Button () {if (interval> 3) {if (Setup_on) {цифры [ПОЛОЖЕНИЕ] =цифры [ПОЛОЖЕНИЕ] +1; если (ПОЛОЖЕНИЕ ==0 и цифры [ПОЛОЖЕНИЕ] ==3) цифры [ПОЛОЖЕНИЕ] =0; если (ПОЛОЖЕНИЕ! =0 и цифры [ПОЛОЖЕНИЕ] ==10) цифры [ПОЛОЖЕНИЕ] =0; интервал =0; }} interval =0;} void loop () {if (digitalRead (Alarm) ==HIGH и Alarm_set ==false) {if (interval> 30) {digitalWrite (Led, HIGH); Alarm_set =true; задержка (300); }} else {if (digitalRead (Alarm) ==HIGH и Alarm_set ==true) {if (interval> 30) {Alarm_set =false; Alarm_in_progress =false; digitalWrite (светодиод, НИЗКИЙ); задержка (300); }}} myRTC.updateTime (); если (Setup_on ==true) {clock.showNumberDec (цифры [0], ложь, 1,0); clock.showNumberDec (цифры [1], ложь, 1,1); clock.showNumberDec (цифры [2], ложь, 1,2); clock.showNumberDec (цифры [3], ложь, 1,3); задержка (200); clock.setSegments (Пробел, 1, ПОЛОЖЕНИЕ); задержка (200); clock.showNumberDec (цифры [0], ложь, 1,0); clock.showNumberDec (цифры [1], ложь, 1,1); clock.showNumberDec (цифры [2], ложь, 1,2); clock.showNumberDec (цифры [3], ложь, 1,3); } else {if (myRTC.minutes ==Alarm_minutes и myRTC.hours ==Alarm_hours и Alarm_set ==true и Setup_on ==false) {Alarm_in_progress =true; } если (Alarm_in_progress) {digitalWrite (Buzer, HIGH); задержка (1000); digitalWrite (зуммер, LOW); задержка (1000); } if (myRTC.minutes! =минуты) {clock.showNumberDecEx ((int) myRTC.hours / 10 * 1000 + (myRTC.hours - ((int) myRTC.hours / 10) * 10) * 100 + (int) myRTC.minutes / 10 * 10 + myRTC.minutes - ((int) myRTC.minutes / 10) * 10, (0x80>> 1), true); минут =myRTC.minutes; часы =myRTC.hours; }} if (interval <200) interval ++;} 

Схема


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

  1. Типы аналоговых и цифровых датчиков с приложениями
  2. Сигнализация о воде Raspberry Pi 2 с t сапожником плюс
  3. Создание роботов с Raspberry Pi и Python
  4. Изучение цифровой трансформации с Fiix и IDC
  5. Экономия времени и денег с помощью мониторинга состояния
  6. 8 способов сократить расходы на обслуживание и увеличить доход с помощью программного обеспечения для обслуж…
  7. Датчик Portenta и термопары (с MAX6675)
  8. Ускорение цифровой трансформации с помощью данных Интернета вещей благодаря Cisco и IBM
  9. Простой будильник с DS1302 RTC
  10. Функциональность и усовершенствование подшипника