| Ваш IP: 18.208.126.130 | Online(33) - гости: 19, боты: 14 | Загрузка сервера: 1 ::::::::::::


Простые часы на LCD2004 (Arduino)

На платформе Arduino используя дисплей LCD2004 (I2C) и часы реального времени DS3231 можно собрать простые часы с цифрами во всю высоту экрана дисплея.

I2C модуль на базе микросхем PCF8574 позволяют подключить символьный дисплей 2004 к плате Arduino всего по двум проводам SDA и SCL (А4 и А5), что дает возможность не использовать цифровые выходы Arduino при подключении дисплея.

Выход SQW часов реального времени DS3231 используется для мигания двоеточия в так секундам. Установка времени часов реального времени происходит по времени компиляции, для этого необходимо раскомментировать строчку:

//clock.setDateTime(__DATE__, __TIME__);// установка времени

залить скетч, а затем закомментировать эту строчку и по новой залить скетч.

#include <Wire.h> 
  #include <LiquidCrystal_I2C.h> //Библиотека -  http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
  #include <DS3231.h>//https://github.com/jarzebski/Arduino-DS3231/archive/master.zip // DS3231.zip
      DS3231 clock;RTCDateTime DateTime;
      LiquidCrystal_I2C lcd(0x27,20,4);  // Устанавливаем дисплей    
      byte v1[8] = {31,31,31,31,31,31,31,31};
      byte v3[8] = { 0, 0, 0, 0, 31,31,31,31};
      byte v8[8] = { 31, 31,31,31,0,0,0, 0};
      byte v2[8] = {0,0,0,0,0,0,0b00011,0b00011};  
      byte v4[8] = {0b00011,0b00011,0,0,0,0,0,0};
      byte v5[8] = {0,0,0,0,0,0,0b11000,0b11000};  
      byte v6[8] = {0b11000,0b11000,0,0,0,0,0,0};
      byte v7[8] = {0,0,0,0,0,0,0,0};      
      int a[4];
      byte i,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,e1,e2,e3,e4;
 
   void setup(){ Wire.begin(); clock.begin();clock.setOutput(DS3231_1HZ);
    pinMode(2,INPUT); // SQW
    //clock.setDateTime(__DATE__, __TIME__);// установка времени 
    lcd.init();lcd.backlight();// Включаем подсветку дисплея
    lcd.createChar(1, v1);lcd.createChar(2, v2);lcd.createChar(3, v3);lcd.createChar(4, v4);
    lcd.createChar(5, v5);lcd.createChar(6, v6);lcd.createChar(7, v7);lcd.createChar(8, v8);
   }
 
   void loop(){
    DateTime=clock.getDateTime();
     a[0]=DateTime.hour/10;
     a[1]=DateTime.hour%10;
     a[2]=DateTime.minute/10;
     a[3]=DateTime.minute%10;
 
  if(digitalRead(2)==HIGH){
   lcd.setCursor(9,0);lcd.write((uint8_t)2);lcd.setCursor(9,1);lcd.write((uint8_t)4);lcd.setCursor(10,0);lcd.write((uint8_t)5);lcd.setCursor(10,1);lcd.write((uint8_t)6);
   lcd.setCursor(9,2);lcd.write((uint8_t)2);lcd.setCursor(9,3);lcd.write((uint8_t)4);lcd.setCursor(10,2);lcd.write((uint8_t)5);lcd.setCursor(10,3);lcd.write((uint8_t)6);
 
 
 for(i=0;i<4;i++){
      switch(i){
        case 0: e1=0,e2=1,e3=2;e4=3;break;
        case 1: e1=5,e2=6,e3=7;e4=8;break;
        case 2: e1=11,e2=12,e3=13;e4=14;break;
        case 3: e1=16,e2=17,e3=18;e4=19;break; 
        }
 
      switch(a[i]){
        case 0: d1=1,d2=8,d3=8,d4=1, d5=1,d6=7,d7=16,d8=1, d9=1,d10=7,d11=7,d12=1, d13=1,d14=3,d15=3,d16=1; break;
        case 1: d1=16,d2=8,d3=1,d4=7, d5=7,d6=7,d7=1,d8=7, d9=16,d10=7,d11=1,d12=7, d13=16,d14=3,d15=1,d16=3; break;
        case 2: d1=1,d2=8,d3=8,d4=1, d5=7,d6=7,d7=7,d8=1, d9=1,d10=8,d11=8,d12=8, d13=1,d14=3,d15=3,d16=3; break;
        case 3: d1=8,d2=8,d3=8,d4=1, d5=7,d6=3,d7=3,d8=1, d9=7,d10=7,d11=7,d12=1, d13=3,d14=3,d15=3,d16=1; break;
        case 4: d1=1,d2=7,d3=16,d4=1, d5=1,d6=3,d7=3,d8=1, d9=7,d10=7,d11=7,d12=1, d13=7,d14=16,d15=7,d16=1; break;
        case 5: d1=1,d2=8,d3=8,d4=8, d5=1,d6=3,d7=3,d8=3, d9=7,d10=7,d11=7,d12=1, d13=1,d14=3,d15=3,d16=1; break;
        case 6: d1=1,d2=8,d3=8,d4=8, d5=1,d6=3,d7=3,d8=3, d9=1,d10=7,d11=7,d12=1, d13=1,d14=3,d15=3,d16=1; break;
        case 7: d1=1,d2=8,d3=8,d4=1, d5=7,d6=7,d7=16,d8=1, d9=7,d10=7,d11=7,d12=1, d13=7,d14=7,d15=7,d16=1; break;
        case 8: d1=1,d2=8,d3=8,d4=1, d5=1,d6=3,d7=3,d8=1, d9=1,d10=7,d11=7,d12=1, d13=1,d14=3,d15=3,d16=1; break;
        case 9: d1=1,d2=8,d3=8,d4=1, d5=1,d6=3,d7=3,d8=1, d9=7,d10=7,d11=7,d12=1, d13=3,d14=3,d15=3,d16=1; break;
    }
 
      lcd.setCursor(e1,0);lcd.write((uint8_t)d1);lcd.setCursor(e2,0);lcd.write((uint8_t)d2);lcd.setCursor(e3,0);lcd.write((uint8_t)d3);lcd.setCursor(e4,0);lcd.write((uint8_t)d4);
      lcd.setCursor(e1,1);lcd.write((uint8_t)d5);lcd.setCursor(e2,1);lcd.write((uint8_t)d6);lcd.setCursor(e3,1);lcd.write((uint8_t)d7);lcd.setCursor(e4,1);lcd.write((uint8_t)d8);
      lcd.setCursor(e1,2);lcd.write((uint8_t)d9);lcd.setCursor(e2,2);lcd.write((uint8_t)d10);lcd.setCursor(e3,2);lcd.write((uint8_t)d11);lcd.setCursor(e4,2);lcd.write((uint8_t)d12);
      lcd.setCursor(e1,3);lcd.write((uint8_t)d13);lcd.setCursor(e2,3);lcd.write((uint8_t)d14);lcd.setCursor(e3,3);lcd.write((uint8_t)d15);lcd.setCursor(e4,3);lcd.write((uint8_t)d16);
   }
   }// if sqw==1
  if(digitalRead(2)==LOW){
   lcd.setCursor(9,0);lcd.write((uint8_t)7);lcd.setCursor(9,1);lcd.write((uint8_t)7);lcd.setCursor(10,0);lcd.write((uint8_t)7);lcd.setCursor(10,1);lcd.write((uint8_t)7);
   lcd.setCursor(9,2);lcd.write((uint8_t)7);lcd.setCursor(9,3);lcd.write((uint8_t)7);lcd.setCursor(10,2);lcd.write((uint8_t)7);lcd.setCursor(10,3);lcd.write((uint8_t)7);
   }
   }//loop

Форум — http://forum.rcl-radio.ru/viewtopic.php?id=127


http://forum.rcl-radio.ru/viewtopic.php?pid=911#p911


http://forum.rcl-radio.ru/viewtopic.php?pid=916#p916


http://forum.rcl-radio.ru/viewtopic.php?pid=917#p917

Комментарии

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • LM2700 — повышающий преобразователь DC-DC

    LM2700 — повышающий преобразователь DC-DC

    На рисунках показаны примеры применения повышающего преобразователя LM2700, схемы содержать минимальный набор компонентов и отлично подходят при работе с литий-ионными аккумуляторами. LM2700 может работать на частотах 600 кГц и 1,25 МГц, обеспечивая легкую фильтрацию и низкий уровень шума. Выходное напряжение может быть настроено до 17 В, при входном напряжении от …Подробнее...
  • 4-х канальное реле времени Arduino + Android HC-06

    4-х канальное реле времени Arduino + Android HC-06

    При помощи Bluetooth модуля HC-06 и платы Arduino можно осуществить управление различными исполнительными механизмами c помощью смартфона. В данной статье речь пойдет об управлении при помощи смартфона 4-я реле. Каждому реле можно задать свое время включения и выключения, вся информация и управление реле времени осуществляется при помощи Android приложения. Передача …Подробнее...
  • Миниатюрный радиоприемник на ZN414

    Миниатюрный радиоприемник на ZN414

    На микросхеме ZN414 (аналоги — TA7642, MK484) можно собрать простой, миниатюрный АМ приемник СВ-ДВ диапазона. Микросхема имеет всего три вывода и похожа на транзистор, она представляют собой высокочастотный тракт приемника прямого усиления, содержащий усилитель радиочастоты (УРЧ), детектор и систему автоматической регулировки усиления (АРУ). УРЧ имеет большой коэффициент усиления и высокое входное сопротивление, что позволяет …Подробнее...
  • Восьми тональная сирена

    Особенность этого варианта сирены в том, что с изменением тона меняется длительность звучания этого участка. Если тон участка выше то время звучания будет меньше и наоборот. В данной схеме есть свои особенности — дело в том что для тактового опроса мультиплексора, переключающего частоту выходного сигнала служит один мультивибратор на D1. …Подробнее...
  • Коммутатор аналоговых сигналов на четыре положения на ВА7604N

    Коммутатор аналоговых сигналов на четыре положения на ВА7604N

    На рисунке показана схема коммутатора на BA7604N, он имеет 4- положения (4-е входа по 2-а канала (стерео)), переключение входов происходит подачей десятичного кода на входы 1-4 коммутатора. Коммутатор питается напряжением 5В и не требует источника отрицательного напряжения в отличии от других схем коммутаторов. Данный коммутатор применим не только в звукотехнике, …Подробнее...