DS1302&lcd1602

osele
osele аватар
Offline
Зарегистрирован: 12.11.2016
Мужики как убрать бегане символов по экрану подсажите плиз . Вот таким скейчем удалось запустить DS 1302 и вывести на lcd16*2

 

#include <stdio.h>
#include <DS1302.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2); 
 
namespace {
 
const int kCePin   = 5;  // Chip Enable
const int kIoPin   = 6;  // Input/Output
const int kSclkPin = 7;  // Serial Clock
 
// Create a DS1302 object.
DS1302 rtc(kCePin, kIoPin, kSclkPin);
 
String dayAsString(const Time::Day day) {
  switch (day) {
    case Time::kSunday: return "Sunday";
    case Time::kMonday: return "Monday";
    case Time::kTuesday: return "Tuesday";
    case Time::kWednesday: return "Wednesday";
    case Time::kThursday: return "Thursday";
    case Time::kFriday: return "Friday";
    case Time::kSaturday: return "Saturday";
  }
  return "(unknown day)";
}
 
void printTime() {
  // Get the current time and date from the chip.
  Time t = rtc.time();
 
  // Name the day of the week.
  const String day = dayAsString(t.day);
 
  // Format the time and date and insert into the temporary buffer.
  char buf[50];
  snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
           day.c_str(),
           t.yr, t.mon, t.date,
           t.hr, t.min, t.sec);
 
  // Print the formatted string to serial so we can see the time.
  Serial.println(buf);
   lcd.println(buf);
}
 
}  // namespace
 
void setup() {
  Serial.begin(9600);
    lcd.init(); 
  // Initialize a new chip by turning off write protection and clearing the
  // clock halt flag. These methods needn't always be called. See the DS1302
  // datasheet for details.
  rtc.writeProtect(false);
  rtc.halt(false);
  lcd.backlight();
  lcd.print("t");
  // Make a new time object to set the date and time.
  // Sunday, September 22, 2013 at 01:38:50.
  Time t(2016, 11, 12, 19, 38, 00, Time::kSunday);
 
  // Set the time and date on the chip.
  rtc.time(t);
}
 
// Loop and print the time every second.
void loop() {
  printTime();
  delay(1000);
}

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Вот здесь что-то поправить )))

void loop() {
  printTime();
  delay(1000);
osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

ua6em пишет:

Вот здесь что-то поправить )))

void loop() {
  printTime();
  delay(1000);

менял на 10000 и на 100 херня какая-то всё равно бегущая строка

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

воспользоваться этой командой

lcd.setCursor(0, 0) ;

lcd.println(buf);

пс:http://arduino.ua/ru/prog/LiquidCrystalSetCursor

osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

qwone пишет:

воспользоваться этой командой

lcd.setCursor(0, 0) ;

lcd.println(buf);

пс:http://arduino.ua/ru/prog/LiquidCrystalSetCursor

не совсем помогло чёто день недели и дата есть а время нет .

хотелось как раз видеть время 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

тогда сделайте 2 строчки. buf1 и buf2. У вас время просто осталось за границей отображения.

cd.setCursor(0, 0) ;

lcd.println(buf1);

cd.setCursor(0, 1) ;

lcd.println(buf2);

osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

qwone пишет:

тогда сделайте 2 строчки. buf1 и buf2. У вас время просто осталось за границей отображения.

cd.setCursor(0, 0) ;

lcd.println(buf1);

cd.setCursor(0, 1) ;

lcd.println(buf2);

buf1 и buf2 как то указать нужно ???

сейчас только buf

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

та, да... именно lcd.println - так победим глюки!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

и всё же х у й сосали" комбайнёры"

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

osele пишет:

чёто день недели и дата есть а время нет .

– Какие странные у вас часы, – сказала Алиса, с большим интересом наблюдавшая за манипуляциями Зайца. – Показывают число, а который час – не показывают! 
– А с какой стати? – буркнул Шляпник. – Разве часы обязаны все показывать? 
osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

ЕвгенийП пишет:

osele пишет:

чёто день недели и дата есть а время нет .

– Какие странные у вас часы, – сказала Алиса, с большим интересом наблюдавшая за манипуляциями Зайца. – Показывают число, а который час – не показывают! 
– А с какой стати? – буркнул Шляпник. – Разве часы обязаны все показывать? 

Совершено верно . или бегущая строка по 1 строке потом на вторую переходит .

Самое атвратное , что часики ds1302 с микрухой ds1302 0029a3 183AA   бля как на ютубе с ихними скейтчами не работает запустил примером из библиотеки часы+дисплей чуть подкоректировал адреса и пины экрана , а как убрать бегущую строку невыходит вобщем аленький цветок .

Пойду модуль часов в помойку кину и закажу 1307 

потому как решение не найдено.

osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

Благодарю всех кто подсказывал решение проблемы

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Не торопитесь выкидывать, у меня же выводится время на LCD1602 и ничего не блымает, вывожу конкретные данные в конкретную позицию )))

osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

так работает с этим скейчем?

про железо : ардуино нано ds1202 lsd1602

Kest430
Offline
Зарегистрирован: 21.06.2016

скеч финальный покажи.

osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

а собственно скейч в верху

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

osele пишет:

про железо : ардуино нано ds1202 lsd1602

Блин, да что ж вас всех так на ЛСД-то тянет? Мож травкой обойтись? Всяко не так убийственно :))))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Вот так поменяйте две функции.

В первой длины строк выровнены.

Во второй вывод на экран двух строк: день недели и дата, а во второй - время

 
String dayAsString(const Time::Day day) {
  switch (day) {
    case Time::kSunday: return "  Sun";
    case Time::kMonday: return "  Mon";
    case Time::kTuesday: return " Tues";
    case Time::kWednesday: return "  Wed";
    case Time::kThursday: return        "Thurs";
    case Time::kFriday: return       "  Fri";
    case Time::kSaturday: return "Satur";
  }
  return "unknw";
}
 
void printTime() {
  // Get the current time and date from the chip.
  Time t = rtc.time();
 
  // Name the day of the week.
  const String day = dayAsString(t.day);
 
  // Format the time and date and insert into the temporary buffer.
  char buf[20];
  snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d",
           day.c_str(),
           t.yr, t.mon, t.date);
 
  // Print the formatted string to serial so we can see the time.
  Serial.println(buf);
  lcd.setCursor(4,1); 
  lcd.print(buf);
  snprintf(buf, sizeof(buf), "%02d:%02d:%02d", t.hr, t.min, t.sec);
  // Print the formatted string to serial so we can see the time.
  Serial.println(buf);
  lcd.setCursor(0,0); 
  lcd.print(buf);
}

и loop()  поменяйте так:

void loop() {
static uint32_t om = millis();
uint32_t nm=millis();
 
if (nm-om > 999) {
  om = nm;
  printTime();
  }
 
}

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

и реально задолбало уже!

Программа для Ардуино называется "sketch" - скетч, значит "эскиз" и никак иначе, можно "т" пропустить - это не страшно.

Но, жеваный же крот! Откуда вы берете "сейч" и все такое прочее? Ну, мать его ити, откуда "Й"? Так "более по-английски звучит", штоль?

Тут в "исполнителях" есть еще один кадр с "мосфИтами", это, блин, что-то из фитотерапии, так?

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

Тоже бесит нереально!!!, на каком  языке такое произношение ???  Кстати поправлю коллегу WДракулу -правильное написание  Sketch.   Забейте уже это слово в любую говорилку, например http://myefe.ru/anglijskaya-transkriptsiya.html  и послушайте как правильно произносить.  По-русски принято писать через букву "т" -скетч.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

dimax пишет:

 Кстати поправлю коллегу WДракулу -правильное написание  Sketch.

Исправил. Мой грех. Спасибо.

Wdrakula, потому, что родители Владиславом назвали. Грех не вспомнить тезку.

А так я - Влад.

osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

дык дёшево 

osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

бля бля бля англичане не заё.....те, суть для новечков не меняется.

osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

Спасибо за помощь . Есть же люди со светлой головой, а есть лингвисты помощи 0 только форум засерают.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Не, ну трудно помочь людям, если они не владеют терминологией и вместо ЖК применяют ЛСД.

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

osele пишет:

бля бля бля англичане не заё.....те, суть для новечков не меняется.

Спасибо за помощь . Есть же люди со светлой головой, а есть лингвисты помощи 0 только форум засерают.

Очередной ник в список тех, кто никакой помощи здесь больше не получит. От меня по крайней мере.

osele
osele аватар
Offline
Зарегистрирован: 12.11.2016

ЕвгенийП пишет:

osele пишет:

бля бля бля англичане не заё.....те, суть для новечков не меняется.

Спасибо за помощь . Есть же люди со светлой головой, а есть лингвисты помощи 0 только форум засерают.

Очередной ник в список тех, кто никакой помощи здесь больше не получит. От меня по крайней мере.

От вас госпадин профессор всё равно в этой теме толку не было.

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

osele пишет:

От вас госпадин профессор всё равно в этой теме толку не было.

И слава Богу! А то мне пришлось бы об этом пожалеть.