Сегодня мне удалось собрать первый функциональный прибор, который может работать без компьютера. Ранее, я уже писал о подключении высокоточных часов и I2C LCD 1602 по шине I2C. Следующей стояла задача совместного использования этих устройств.
В интернете нашел несколько статей по использованию шины I2C. Есть более развернутые статьи, есть менее. Интересующимся рекомендую вот эту статью. Или вот эту. В статье рекомендуют привязывать разъемы SDA и SCL к +5 вольтам. Номинал резисторов от 1кОм до 10 кОм. Я поставил 1кОм (других не нашлось).
Схема сборки | Фотография |
Скетч просто собрал из двух, использовавшихся ранее для часов и экрана
#include Wire.h
#include DS3231.h
#include LiquidCrystal.h
/**
The circuit:
* 5V to Arduino 5V pin
* GND to Arduino GND pin
* SDA (data) to Analog #4
* SCL (clock) to Analog #5
**/
// Connect via i2c, default address #0 (A0-A2 not jumpered)
LiquidCrystal lcd(0);
DS3231 Clock;
bool h12=false;//True is 12-h, false is 24-hour.;
bool PM;
bool Century=false;
void setup() {
// set up the LCD's number of rows and columns:
lcd.begin(16, 2);
lcd.clear();
lcd.setBacklight(LOW);
Wire.begin();
}
void loop() {
int second,minute,hour,date,month,year,temperature;
year=Clock.getYear();
month=Clock.getMonth(Century);
date=Clock.getDate();
hour=Clock.getHour(h12,PM);
minute=Clock.getMinute();
second=Clock.getSecond();
temperature=Clock.getTemperature();
lcd.print("20");
lcd.print(year,DEC);
lcd.print('-');
if (month<10) lcd.print('0');
lcd.print(month,DEC);
lcd.print('-');
if (date<10) lcd.print('0');
lcd.print(date,DEC);
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
if (hour<10) lcd.print('0');
lcd.print(hour,DEC);
lcd.print(':');
if (minute<10) lcd.print('0');
lcd.print(minute,DEC);
lcd.print(':');
if (second<10) lcd.print('0');
lcd.print(second,DEC);
lcd.print(' ');
lcd.print("Temp:");
lcd.print(temperature);
delay(500);
lcd.setCursor(0,0);
}
Вот такие вот часы у меня получились. ;о)
библиотеку
ОтветитьУдалить#include LiquidCrystal.h
заменить на
#include LiquidCrystal_I2С.h
и так далее по тексту
не работает......скетч LiquidCrystal lcd(0); при проверке окрашивает в желтый и дальше не проверяет....менял библиотеки... нет положительного результата..
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьдля чего нужны резисторы к sda и scl ?они ведь и так уже присутствуют в модуле часов. вот схема http://radiolaba.ru/wp-content/uploads/2016/10/DS3231-module-schema.jpg
ОтветитьУдалитьне работает ,горит буква Т =(
ОтветитьУдалить