Помогите с кодом вывода времени

aleksjetav
Offline
Зарегистрирован: 23.11.2012

Собираю устройство с часами при выводе времени после секунд в следующей строке выходит || ||| как это убрать не знаю 

#include <DS1307.h> // Подключаем библиотеку управления модулем реального времени 
#include <LiquidCrystalExt.h> // Подключаем библиотеку управления экраном 
#include <LineDriver.h> // Далее вспомогательные библиотеки для реализации интерфейса SPI 
#include <SPI.h> 
#include <SPI_Bus.h> 
#include <Wire.h> 
SPI_Bus shreg(_8bit, 10); // Подключаем сдвиговый регистр 
LiquidCrystal lcd(1, 2, 3, 4, 5, 6, &shreg, 7); // Инициализируем дисплей 

void setup() // инициализация основных данных 
{ 
Serial.begin(9600); // Инициализируем COM-порт 
lcd.begin(16,2); // устанавливаем размеры экрана  
} 

void loop() // зацикливание (код управляющей программы) 
{ 
int Hour = RTC.get(DS1307_HR,true); // Получаем значение текущего часа 
int Minute = RTC.get(DS1307_MIN,false); 
int Second = RTC.get(DS1307_SEC,false); 
lcd.setCursor(0,0); // устанавливаем позицию курсора на экране (на один символ правее левого верхнего угла) 
lcd.print(addZero(Hour));lcd.print(":");lcd.print(addZero(Minute));lcd.print(":");lcd.println(addZero(Second)); // Выводим время
} 

void SetTime() // установка времени из шаблона tчч:мм 
{ 
if (Serial.read() == 't') // Если первый символ t, то установим указанное время 
{ 
int h = (Serial.read() - '0') * 10 + (Serial.read() - '0'); 
Serial.read(); 
int m = (Serial.read() - '0') * 10 + (Serial.read() - '0'); 
RTC.stop(); 
RTC.set(DS1307_SEC,0); //set the seconds 
RTC.set(DS1307_MIN,m); //set the minutes 
RTC.set(DS1307_HR,h); //set the hours 
RTC.start(); 
} 
Serial.flush(); 
} 

String addZero(int val) 
{ 
if (val<10) return "0" + String(val);else return String(val); 
} 

 

maksim
Offline
Зарегистрирован: 12.02.2012

Попробуйте очищать дисплей lcd.clear();

aleksjetav
Offline
Зарегистрирован: 23.11.2012

А по подробней я мало что понимаю в этом 

 

aleksjetav
Offline
Зарегистрирован: 23.11.2012

Просто очиттить эту клетку ? в дисплее ? 

 

Borland
Offline
Зарегистрирован: 17.05.2012

lcd.clear() чистит экран

чтобы чистить чуток чправа от выводимого, достаточно напечатать лишний пробел

 

aleksjetav
Offline
Зарегистрирован: 23.11.2012

тоесть просто дописать пару пробелов и все 

Borland
Offline
Зарегистрирован: 17.05.2012

Ага, вдруг пропадет

но я чистил каждый loop lcd.clear

aleksjetav
Offline
Зарегистрирован: 23.11.2012

Пробелы не помогли 

 

aleksjetav
Offline
Зарегистрирован: 23.11.2012

спасибо проблемка была в 

lcd.println(addZero(Second))

мне подсказали сделать lcd.print(addZero(Second)) и проблема решилась