lcd.setCursor(1, 0); //Установить 3 символ 0 строки
lcd.print("ARDUINO-clock"); // выводим надпись завтавки ARDUINO-RTC
lcd.setCursor(2, 1); //Установить 5 символ 1 строки
Или я чего не понимаю, или одно из двух. Комментарии для запутывания врагов?
=====
lcd.begin(16, 2); //Дисплей 16Х2
Зачем два раза, если есть lcd.clear()
=====
Serial.begin(9600);
/* задаем скорость общения. В нашем случае с компьютером */
Serial.begin(9600);
Опять с первого раза не понимает?
=====
int tempPin = 0; // пин куда подключен датчик
Не делай так. Если хочешь "переименовать" пин, то делай через #define
=====
lcd.clear(); //очистка экрана
Так тоже не делай в loop, лучше в setup сделай шаблон для вывода с пустыми местами под значения и переписывай только значения. Очистка и переписывание всего дисплея приведет к заметному мерцанию.
нет не зря я подкорректировал как вы писали,удалил очистку экрана и так чуть причесал,но ума ни как не могу приложить к тому как написать строки команду которая выводит часы на экран.можете хоть со строчкой помочь.(команду как правильно прописать)
что такое Count?это мой первый скетч,подскажите с чего должна начинатся команда на вывод часов с lcd.print? и нужна ли команда if?и что она обозначает?у меня получилось вывести еще градусы в верхнюю строку,теже показания что на нижней,а вот с часами уже дня 4 колдую и ни как не могу их вывести в верхнюю строку
Посмотрте внимательно свой скетч и найдите там Count... Это переменная, которая объявлена и нигде не используется. Точнее она дальше инкрементируется, но всё равно нигде не используется. Зачем она? Вы невнимательно накопипастили куски кода откуда-то.
Sergik112 пишет:
нужна ли команда if? и что она обозначает?
Оператор if нужен там, где он нужен... Вы предлагаете обучить Вас основам программирования? Нет уж, извольте сами почитать - http://arduino.ru/Reference/If
Проверьте пожалуйста на ошибки мой скетч я все сделал все полностью работает у меня arduino nano,экран 16*2 температурный датчик lm35 и ультразвуковой датчик прилагаю скетч
#include <Wire.h>
#include "RTClib.h"
#include <Wire.h>
#include <LiquidCrystal.h>
RTC_DS1307 rtc;
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); // инициализируем LCD, указывая контакты данных
// задаем переменные
int Count = 0; // счетчик обновлений
int tempPin = 0; // пин куда подключен датчик
float tempc = 0; // переменная для температуры
float maxi = 0, mini = 30; // max/min значения температуры
#define Trig 9
#define Echo 8
#define ledPin 13
void setup() {
// красивая "загрузка" программы при старте :)
lcd.begin(16, 2);
lcd.print("Hello,Sergei");
delay(1000); // ждем 1 секунды
lcd.print(".");
delay(1000); // ждем 1 секунды
lcd.print(".");
delay(1000); // ждем 1 секунды
lcd.print(".");
delay(4000); // ждем 4 секунду
lcd.clear(); //очистка экрана
pinMode(Trig, OUTPUT); //инициируем как выход
pinMode(Echo, INPUT); //инициируем как вход
pinMode(ledPin, OUTPUT);
Serial.begin(57600);
/* задаем скорость общения. В нашем случае с компьютером */
Wire.begin();
rtc.begin();
lcd.begin(16, 2); //Дисплей 16Х2
lcd.setCursor(0, 0); //Установить 3 символ 0 строки
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");}
}
unsigned int impulseTime=0;
unsigned int distance_sm=0;
void loop() {
lcd.clear(); //очистка экрана
// считываем и вычисляем температуру
tempc = ( 4.1 * analogRead(tempPin) * 100.0) / 1024.0;
if(tempc > maxi) {
maxi = tempc;
} // max температура?
if(tempc < mini) {
mini = tempc;
} // min температура?
lcd.setCursor(0, 0);
lcd.print("Time-");
digitalClockDisplay();
DateTime now = rtc.now();
lcd.setCursor(0, 1);
lcd.print("Gradus-");
lcd.print(tempc); // выводим текущую температуру
delay(5*500); // задержка перед повторением измерений
Count++; // инкремент счетчика измерений
lcd.setCursor(13, 1);
lcd.print("C");
digitalWrite(Trig, HIGH);
/* Подаем импульс на вход trig дальномера */
delayMicroseconds(10); // равный 10 микросекундам
digitalWrite(Trig, LOW); // Отключаем
impulseTime=pulseIn(Echo, HIGH); // Замеряем длину импульса
distance_sm=impulseTime/58; // Пересчитываем в сантиметры
Serial.println(distance_sm); // Выводим на порт
if (distance_sm<45) // Если расстояние менее 45 сантиметром
{
digitalWrite(ledPin, HIGH); // Светодиод горит
}
else
{
digitalWrite(ledPin, LOW); // иначе не горит
}
delay(100);
/* ждем 0.1 секунды, Следующий импульс может быть излучён, только после исчезновения эха от предыдущего.
Это время называется периодом цикла (cycle period).
Рекомендованный период между импульсами должен быть не менее 50 мс. */
}
void digitalClockDisplay(){
// digital clock display of the time
DateTime now = rtc.now();
lcd.setCursor(5, 0);
printDigits(now.hour()); // печатает часы
//нарисовали часы и шкалу часов
//рисуем бегающие двоеточие, привязано к секундам, вывод слева или справа двоеточие зависит от четности секунд
lcd.setCursor(7, 0);
if (now.second()%10%2==0){
lcd.print(": ");
}
else
{
lcd.print(" :");
}
//нарисовали двоеточие
//рисуем минуты
lcd.setCursor(9, 0);
printDigits(now.minute());
//стираем бар минут если минуты=0
if(now.minute()<1 ){
lcd.setCursor(11,0);
lcd.print(" ");
}
//нарисовали минуты
//рисуем бегающие двоеточие, привязано к секундам, вывод слева или справа двоеточие зависит от четности секунд
lcd.setCursor(11, 0);
if (now.second()%10%2==0){
lcd.print(": ");
}
else
{
lcd.print(" :");
}
lcd.setCursor(12, 0);
printDigits(now.second());
}
void printDigits(int digits){
// utility function for digital clock display: prints preceding colon and leading 0
if(digits < 10){
lcd.print('0');
}
lcd.print(digits);
}
все работает но мне кажется как то не так оно должно работать.возможно ошибки с delay часы идут но секунды прыгают через две и точки не моргают,а если чисто часики без ультразвука и градусника все идет четинько без тормозов.
1...7 - понятно
8 - для чего ? счётчик обновлений ( каких ? ) на 65535 значений ?
9 - вам уже сказали как нужнее , хотя и так правильно , НО 9 - "#define tempPin 0" экономит память
10 -
11 - уже тревожит , что макс меньше мин ( ваше дело , зеркальный мир тоже существует )
12...18 -
19 -
20 - лучше явно указать куда выводить , а не по сбросу экрана !
20А - lcd.setCursor(0,0); или lcd.clear();
20...27 - красота !
...тогда уж и "П р и в е т , С е р г е й !" выводите по буквам , с задержкой на букву по 1-ой секунде , ещё красившеееееее будет :)
...оно вам нано ?
27 - красота ?
28 - зачем ?!!!!!!!!!!!!!!!!!
29...36
37 - зачем ? ( и коммент кривой ! )
38...41 - отладочное сообщение в Сериал
42 - для чего ?
43 - для чего ?
.....добрались до ЛУПА :)
45 - очистили экран ( зачем это здесЯ ? )
46....47 -
48...53 - обновили "рамки" мин и макс в зависимости от текущей температуры ( зачем ? )
54 - теперь нано !
55 - отображение статического текста
56 - уходим в подпрограмму ( в функцию ничё не возвращаемую )
спасибочки сейчас пересмотрю и подправлю как вы написали.это мой первый проэкт и я тут новичек.простите за ошибки.А подскажите еще если не затруднит,установил часы шли нормально начал все упаковывать в коробочку подключил а на экране нули и в порту нули вообщем они стоят теперь.а как я их запустил не помню.модуль tiny rtc i2c
....он учится :) , спрашивает....
не всех же мордой в землю ?
нет ни лесополосы рядом ( Питер - культурный город, говорят ) , ни лопаты ( тока ардуина ).....
нет ни лесополосы рядом ( Питер - культурный город, говорят ) , ни лопаты ( тока ардуина ).....
нет ни лесополосы рядом ( Питер - культурный город, говорят ) , ни лопаты ( тока ардуина ).....
вам на два уровня выше надо прочитать....
....данное сообщение адресовано не вам :)-
спасибо
конечный код выглядит так и он рабочий
http://arduino.ru/forum/obshchii/sokhranenie-kartinok-na-forume
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
не забываем про "галочку" - свернуть код !
file:///C:/Users/michail/Desktop/20150708233416.jpg
Это типа Вы свой диск Ц расшарили?
у меня просто не получается сюда выложить фотку экраная сделал так
У меня 404 почему-то :(
У меня 404 почему-то :(
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
вопросы ?
у меня просто не получается сюда выложить фотку экраная сделал так
http://arduino.ru/forum/obshchii/sokhranenie-kartinok-na-forume
нужно скопировать ссылку и вставить в поиск и откроется
крайний код нужен - чёбы не листать на много назад и чёбы понять вашу логику !
У меня 404 почему-то :(
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
вопросы ?
Да, нахрена ты это написал?
код из #56
зачем два раза инициадизировать экран ?
строки 016 и 026....
...по крохам разбираем :)
У меня 404 почему-то :(
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
вопросы ?
Да, нахрена ты это написал?
для - "нахрена столько нахреначили ? расхреначивайте нахер !"
У меня 404 почему-то :(
Дохтура позови , он бысссссстр !
Тоньше, еще тоньше.
Тоньше, еще тоньше.
для ТС - не смешно :(
экран выглядит так
Time- (первая строчка)
t=26,43 (вторая строчка)
без кода выглядет или смешно , или непонятно....
код я писал вот еще раз
без кода выглядет или смешно , или непонятно....
Уже нести лопату? :)
Я так понимаю, что #52 я зря писал.
Puhlyaviy
Тут бульдозер нужен :3
нет не зря я подкорректировал как вы писали,удалил очистку экрана и так чуть причесал,но ума ни как не могу приложить к тому как написать строки команду которая выводит часы на экран.можете хоть со строчкой помочь.(команду как правильно прописать)
Я вот так примерно делал для экрана 20x4
Получается "2015/07/10 11:23:30"
спасибо сейчас что нибудь попробую наколдовать
написал уже по другому все равно не выводит изображение на экран из порта
Ну вот опять ты в лупе очищаешь весь дисплей и перерисовываешь его с нуля.
У тебя уже есть время в "now", зачем еще одна переменная "future"? И где у тебя используется "Count"?
что такое Count?это мой первый скетч,подскажите с чего должна начинатся команда на вывод часов с lcd.print? и нужна ли команда if?и что она обозначает?у меня получилось вывести еще градусы в верхнюю строку,теже показания что на нижней,а вот с часами уже дня 4 колдую и ни как не могу их вывести в верхнюю строку
т.е. мне еще нужно добавить строчки int Count = 0; #define 4 и #define5 так? часы падключены к А4 и А5 arduino и нужно еще назначать pinMode?
что такое Count?
Посмотрте внимательно свой скетч и найдите там Count... Это переменная, которая объявлена и нигде не используется. Точнее она дальше инкрементируется, но всё равно нигде не используется. Зачем она? Вы невнимательно накопипастили куски кода откуда-то.
нужна ли команда if? и что она обозначает?
Оператор if нужен там, где он нужен... Вы предлагаете обучить Вас основам программирования? Нет уж, извольте сами почитать - http://arduino.ru/Reference/If
Ну и вообще изучайте всю справку по языку - http://arduino.ru/Reference
Вообщем переделал теперь у меня с таким скетчем в верхней строке Time-0.00 на другой строчке Gradus-27.13
Так, насколько я понял, ты не понимаешь смысла #define.
я только учусь и от этого совсем далек.Спасибо за обьяснения и труды.
Проверьте пожалуйста на ошибки мой скетч я все сделал все полностью работает у меня arduino nano,экран 16*2 температурный датчик lm35 и ультразвуковой датчик прилагаю скетч
если всё работает - зачем искать ошибки ?
1- что должен делать код ?
2 - реализация
3 - поиск ошибок и оптимизация кода
нет ?
все работает но мне кажется как то не так оно должно работать.возможно ошибки с delay часы идут но секунды прыгают через две и точки не моргают,а если чисто часики без ультразвука и градусника все идет четинько без тормозов.
Про мерцание я уже писал.
а вы можете проанализировать свой код из #88 ? пошагово ?
что он делает ....
начну , пока чё да как ....
1...7 - понятно
8 - для чего ? счётчик обновлений ( каких ? ) на 65535 значений ?
9 - вам уже сказали как нужнее , хотя и так правильно , НО 9 - "#define tempPin 0" экономит память
10 -
11 - уже тревожит , что макс меньше мин ( ваше дело , зеркальный мир тоже существует )
12...18 -
19 -
20 - лучше явно указать куда выводить , а не по сбросу экрана !
20А - lcd.setCursor(0,0); или lcd.clear();
20...27 - красота !
...тогда уж и "П р и в е т , С е р г е й !" выводите по буквам , с задержкой на букву по 1-ой секунде , ещё красившеееееее будет :)
...оно вам нано ?
27 - красота ?
28 - зачем ?!!!!!!!!!!!!!!!!!
29...36
37 - зачем ? ( и коммент кривой ! )
38...41 - отладочное сообщение в Сериал
42 - для чего ?
43 - для чего ?
.....добрались до ЛУПА :)
ВАМ ЭТО НАДО ?
моё дармовоё время - ограничено.....
дальше будем разбирать ?
...ой , множественное число - а я пока один :(
45 - очистили экран ( зачем это здесЯ ? )
46....47 -
48...53 - обновили "рамки" мин и макс в зависимости от текущей температуры ( зачем ? )
54 - теперь нано !
55 - отображение статического текста
56 - уходим в подпрограмму ( в функцию ничё не возвращаемую )
кстати - МК делает тоже самое сказанное ПОСЛЕДОВАТЕЛЬНО , но только гораздо быстрее чем моя пишет-говорит :)
спасибочки сейчас пересмотрю и подправлю как вы написали.это мой первый проэкт и я тут новичек.простите за ошибки.А подскажите еще если не затруднит,установил часы шли нормально начал все упаковывать в коробочку подключил а на экране нули и в порту нули вообщем они стоят теперь.а как я их запустил не помню.модуль tiny rtc i2c
спасибо огромное помогли все работает как надо,только часы стоят
как вы код написали - так он и работает , и не ГЛАВНОЕ что как вам нано !
как код написали - так он и работает