Меббит.ру - Самоделки своими руками, сделай сам инфа

Непопулярный дисплей LCD Nokia 1202

Прочитав мимоходом в сети, что дисплей LCD Nokia 1202 более современный аналог Nokia 5110, посмотрев на цену(но не просмотрев всей информации), тут же быстренько заказал из Поднебесной, и на полтора месяца перешел в режим ожидания. 

 

 

Непопулярный дисплей LCD Nokia 1202

 

 Итак, модель платы HX1230, дисплей Nokia 1202. Напряжение питания 3.3 вольт. Правда поддавал ненадолго 5 вольт – не сгорел, но экран стал сильно контрастным. Буквы вышли в негатив. Разрешение: 96x68, для многих подделок вещь просто незаменимая!

 

Распиновка модуля:

LcdRST _ pin 8

Lcd CE _ pin 7

Lcd N/C _ Not Connected

Lcd DIN _ pin 5

Lcd CLK _ pin 4

Lcd VCC _ +3,3V (+5V)

Lcd BL_ +3,3V (+5V) (LED)

LcdGND _ GND

Это основные моменты. И все плюсы, которые на этом и закончились. Потому что больше информации найти не получилось. Вопросы на форумах без ответов. Ни скетчей, ни проектов, ничего. Начал искать на заграничных сайтах, и набрел на один проект простых часов на модуле часов реального времени DS1307, который у меня был. В общем от этих часов и начал плясать.

 

1. Arduino UNO

2. LCD HX1230

3. DS1307

4. Макетная плата

 

Распиновка модуля DS1307:

SCL _ pin A5

SDA _ pin A4

VCC _ +5V

GND _  GND

 

biblioteki.zip [78,32 Kb] (cкачиваний: 42) Wire, Time, RTClib, graphicsLCD. 

 

 Библиотека Wire используется для связи микроконтроллера с устройствами и модулями через интерфейс I2C, Time - для установки времени с ПК или вручную,  RTClib - библиотека модуля реального времени и graphicsLCD - библиотека дисплея.

 

Ну начнем собирать часики на основе LCD HX1230 и модуля DS1307. Время можно установить вручную и синхронизировать с компютером. Второй быстрее и точнее. В любом случае используется спечиальный скетч. Но до этого надо собрать схему:

 

 

Непопулярный дисплей LCD Nokia 1202

 

вставить батарею в держате модуля часов, подключить ардуино к usb-порту компьютера. В arduino-IDE создаем новый скетч  и заливаем в arduino

 

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include "RTClib.h"
 
RTC_DS1307 rtc;
 
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
 
void setup () {
  while (!Serial); // for Leonardo/Micro/Zero
 
  Serial.begin(57600);
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }
 
  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
 
  }
}
 
void loop () {
    DateTime now = rtc.now();
 
 // время  
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println(); 
// дата 
    Serial.print(now.day(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.year(), DEC);
   
 // день недели  
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.println();
    delay(3000); //каждые три секунды меняются показания в мониторе порта
}

 

Открываем монитор порта и видим, что все работает.

 

 

 {rek}

 

 Данный скетч устанавливает время, дату и день недели автомтически, синхронизируясь с компом, но если время отобразилось неправильно (долго скетч заливался, или системное время было неправильное), то надо отключить плату ардуинки, вытащит батарею, и все повторить заново. 

 

Добавляем плату HX1230

 

Непопулярный дисплей LCD Nokia 1202

 

Заливаем скетч:

 

#include <Wire.h>
#include "RTClib.h"
#include <graphicsLCD.h>
 
#define lcd_RST_pin 8 // LCD HX1230 pins, (no pin6) Change to your desire pins
#define lcd_CS_pin 7
#define lcd_DIN_pin 5
#define lcd_CLK_pin 4
 
graphicsLCD lcd(lcd_RST_pin,lcd_CS_pin,lcd_DIN_pin,lcd_CLK_pin);
 
RTC_DS1307 RTC;
int led = 2;
void setup() {
  pinMode(led,OUTPUT);
  Serial.begin(9600);
  Wire.begin();
  RTC.begin();
 
  lcd.begin(); //
  lcd.clear();
  
}
 
void loop() {
  DateTime now = RTC.now();
    lcd.line(1);
    lcd.print("  ");
    if (now.day() < 10) {
    lcd.print("0");
    }
    lcd.print(now.day());
    lcd.print("/");
    if (now.month() < 10) {
    lcd.print("0");
    }
    lcd.print(now.month());
    lcd.print("/");   
    lcd.print(now.year());
    
  lcd.line(3);
  lcd.print("  ");
  if (now.hour() < 10) {
  lcd.print("0");
  }
  lcd.print(now.hour());
  lcd.print(":");
  if (now.minute() < 10) {
    lcd.print("0");
  }
  lcd.print(now.minute());
  lcd.print(":");
  if (now.second() < 10) {
    lcd.print("0");
  }
  lcd.print(now.second());
  delay(1000);
  }
 

И на выходе получаем полноценные электронные часы. При желании можно вмонтировать в любое устройство, или отдельный корпус.

 

Непопулярный дисплей LCD Nokia 1202

 

Но мы подзабыли, что в первом скетче настраивали часы реального времени еще и на дни недели, которые тоже можно вывести на экран. Для этого добавляем небольшой строчку в начало скетча 

 

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

 

и в конце

 

lcd.line(5);

lcd.print("  ");

lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);

 

 

 Скетм выводящий дни недели:

#include <Wire.h>
#include "RTClib.h"
#include <graphicsLCD.h>
 
#define lcd_RST_pin 8 // LCD HX1230 pins, (no pin6) Change to your desire pins
#define lcd_CS_pin 7
#define lcd_DIN_pin 5
#define lcd_CLK_pin 4
 
graphicsLCD lcd(lcd_RST_pin,lcd_CS_pin,lcd_DIN_pin,lcd_CLK_pin);
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
RTC_DS1307 RTC;
int led = 2;
void setup() {
  pinMode(led,OUTPUT);
  Serial.begin(9600);
  Wire.begin();
  RTC.begin();
 
  lcd.begin(); //
  lcd.clear();
  
}
 
void loop() {
  DateTime now = RTC.now();
    lcd.line(1);
    lcd.print("  ");
    if (now.day() < 10) {
    lcd.print("0");
    }
    lcd.print(now.day());
    lcd.print("/");
    if (now.month() < 10) {
    lcd.print("0");
    }
    lcd.print(now.month());
    lcd.print("/");   
    lcd.print(now.year());
    
  lcd.line(3);
  lcd.print("  ");
  if (now.hour() < 10) {
  lcd.print("0");
  }
  lcd.print(now.hour());
  lcd.print(":");
  if (now.minute() < 10) {
    lcd.print("0");
  }
  lcd.print(now.minute());
  lcd.print(":");
  if (now.second() < 10) {
    lcd.print("0");
  }
  lcd.print(now.second());
  
    lcd.line(5);
    lcd.print("  ");
    lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
    
  delay(1000);
    }

 

 

 

 

Комментарии:
Мы ждем твоих комментариев, Анонимус