| Ваш IP: 34.204.191.0 | Online(33) - гости: 27, боты: 6 | Загрузка сервера: 0.71 ::::::::::::


Простые часы на 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

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

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

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

  • Устройство для получения СЕРЕБРЯНОЙ ВОДЫ

    Введение серебра в воду позволяет существенно улучшить ее свойства при длительном хранении. В качестве электродов используется серебро 875…999,9 пробы. Растворяемым электродом является анод, оптимальное межэлектродное расстояние 5-12мм, плотность тока 0,15…5,0 мА\кв.см., проводимое напряжение 3-12В. На рисунке 1 представлен базовый вариант схемы собранный на микросхеме К176ИЕ18. Задающий генератор выполнен на внутренних …Подробнее...
  • УКВ приемник на TDA7000

    УКВ приемник на TDA7000

    На рисунке показан схема УКВ (88…108 МГц) приемника на ИМС TDA7000. УКВ приемник содержит небольшое кол-во внешних элементов, прост в настройке. Выходной сигнал звуковой частоты (моно) подается на вход усилителя ЗЧ или на высокоомные наушники. Перечень элементов: С1, С9, С12, С17 —  0.1мкФ С2, С4, С5, С6, С13 —  0.01мкФ …Подробнее...
  • Инвертор 100Вт

    На рисунке показана схема инвертора с выходной мощностью 100В и выходным напряжением 220В 50 Гц. Питается инвертор от аккумуляторной батареи 12В. VR1  используется для более точной подстройки частоты 50 Гц, при большом расхождении частоты можно подобрать более точно емкость конденсатора Cx.   ИМС CD4047 используется в качестве генератора 50 Гц …Подробнее...
  • Электрические вольфрамовые лампы накаливания

    Электрические вольфрамовые лампы накаливания

    В 1879 году Т.А. Эдисон создал лампу накаливания запустив ее в серийное производство, в качестве нити накаливания он использовал угольную нить, которую он получал обугливанием длинный и тонких бамбуковых волокон. Так же он ввел откачку воздуха из баллона. В 1890 году А.Н. Лодыгин продемонстрировал лампу с нитью накала из тугоплавкого …Подробнее...
  • К140УД5А, К140УД5Б (справочные данные)

    К140УД5А, К140УД5Б (справочные данные)

    К140УД5А, К140УД5Б относят к ОУ средней точности. Электрические параметры: Uпит. ном — 2*12,0В I пот — 12мА Ku — 0,5*10³(А), 10³(Б) Uсм — 10мВ (А), 7мВ(Б) TKUсм — 35(А)мкв/Сº, 10(Б)мкв/Сº Iвх — 5*10³нА(А), 10000нА(Б) ΔIвх — 1000нА(А), 5000нА(Б) Кос.сф — 50дБ(А), 60дБ(Б) f1 — 5МГц(А), 10МГц(Б) Vu — 6В/мкс Uвых.мах …Подробнее...