помогите доделать скетч.
- Войдите на сайт для отправки комментариев
Чт, 09/07/2015 - 14:47
Проблема вообщем такая,из кусков т.е. 3-х разных скетчей я сделал один.Мне нужно что б на экране выводилось время в верхней полосе после слова Time либо без него не важно,в нижней строке у меня показывается температура.и работает дальномер.Я не могу вывести часы на дисплей в мониторе порта часы идут правильно.прилагаю скетч и ссылку на фото.
file:///C:/Users/michail/Desktop/20150708233416.jpg
#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"
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
RTC_DS1307 RTC;
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(2000); // ждем 2 секунды
lcd.begin(16, 2); //Дисплей 16Х2
lcd.setCursor(1, 0); //Установить 3 символ 0 строки
lcd.print("ARDUINO-clock"); // выводим надпись завтавки ARDUINO-clock
lcd.setCursor(2, 1); //Установить 5 символ 1 строки
lcd.print("temperature"); // выводим надпись завтавки temperature
delay(3000); // удерживаем заставку 3 секунды
pinMode(Trig, OUTPUT); //инициируем как выход
pinMode(Echo, INPUT); //инициируем как вход
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
/* задаем скорость общения. В нашем случае с компьютером */
Serial.begin(9600);
Wire.begin();
RTC.begin();
}
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-");
lcd.setCursor(4, 1); // устанавливаем курсор в 0-ом
// столбце, 1 строке (начинается с 4)
lcd.print("t=");
lcd.print(tempc); // выводим текущую температуру
delay(5*500); // задержка перед повторением измерений
Count++; // инкремент счетчика измерений
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 сантиметром
{
// Определяем время
DateTime now = RTC.now();
// Выводим время в монитор порта
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
else
{
digitalWrite(ledPin, LOW); // иначе не горит
}
delay(100);
/* ждем 0.1 секунды, Следующий импульс может быть излучён, только после исчезновения эха от предыдущего.
Это время называется периодом цикла (cycle period).
Рекомендованный период между импульсами должен быть не менее 50 мс. */
}
001
Вот рабочий скетч,в первом есть ошибки
002
#include <LiquidCrystal.h>
003
#include <Wire.h>
004
#include "RTClib.h"
005
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
// инициализируем LCD, указывая контакты данных
006
// задаем переменные
007
int
Count = 0;
// счетчик обновлений
008
int
tempPin = 0;
// пин куда подключен датчик
009
float
tempc = 0;
// переменная для температуры
010
float
maxi = 0, mini = 30;
// max/min значения температуры
011
#define Trig 9
012
#define Echo 8
013
#define ledPin 13
014
RTC_DS1307 RTC;
015
void
setup
() {
016
// красивая "загрузка" программы при старте :)
017
lcd.begin(16, 2);
018
lcd.print(
"Hello,Sergei"
);
019
delay(1000);
// ждем 1 секунды
020
lcd.print(
"."
);
021
delay(1000);
// ждем 1 секунды
022
lcd.print(
"."
);
023
delay(1000);
// ждем 1 секунды
024
lcd.print(
"."
);
025
delay(2000);
// ждем 2 секунды
026
lcd.begin(16, 2);
//Дисплей 16Х2
027
lcd.setCursor(1, 0);
//Установить 3 символ 0 строки
028
lcd.print(
"ARDUINO-clock"
);
// выводим надпись завтавки ARDUINO-clock
029
lcd.setCursor(2, 1);
//Установить 5 символ 1 строки
030
lcd.print(
"temperature"
);
// выводим надпись завтавки temperature
031
delay(3000);
// удерживаем заставку 3 секунды
032
pinMode(Trig, OUTPUT);
//инициируем как выход
033
pinMode(Echo, INPUT);
//инициируем как вход
034
pinMode(ledPin, OUTPUT);
035
Serial
.begin(9600);
036
/* задаем скорость общения. В нашем случае с компьютером */
037
Serial
.begin(9600);
038
Wire.begin();
039
RTC.begin();
040
}
041
unsigned
int
impulseTime=0;
042
unsigned
int
distance_sm=0;
043
044
void
loop
() {
045
lcd.clear();
//очистка экрана
046
// считываем и вычисляем температуру
047
tempc = ( 4.1 * analogRead(tempPin) * 100.0) / 1024.0;
048
if
(tempc > maxi) {
049
maxi = tempc;
050
}
// max температура?
051
052
if
(tempc < mini) {
053
mini = tempc;
054
}
// min температура?
055
lcd.setCursor(0, 0);
056
lcd.print(
"Time-"
);
057
058
lcd.setCursor(4, 1);
// устанавливаем курсор в 0-ом
059
// столбце, 1 строке (начинается с 4)
060
lcd.print(
"t="
);
061
lcd.print(tempc);
// выводим текущую температуру
062
delay(5*500);
// задержка перед повторением измерений
063
Count++;
// инкремент счетчика измерений
064
digitalWrite(Trig, HIGH);
065
/* Подаем импульс на вход trig дальномера */
066
delayMicroseconds(10);
// равный 10 микросекундам
067
digitalWrite(Trig, LOW);
// Отключаем
068
impulseTime=pulseIn(Echo, HIGH);
// Замеряем длину импульса
069
distance_sm=impulseTime/58;
// Пересчитываем в сантиметры
070
Serial
.println(distance_sm);
// Выводим на порт
071
if
(distance_sm<45)
// Если расстояние менее 45 сантиметром
072
{
073
digitalWrite(ledPin, HIGH);
// Светодиод горит
074
// Определяем время
075
DateTime now = RTC.now();
076
077
// Выводим время в монитор порта
078
Serial
.print(now.year(), DEC);
079
Serial
.print(
'/'
);
080
Serial
.print(now.month(), DEC);
081
Serial
.print(
'/'
);
082
Serial
.print(now.day(), DEC);
083
Serial
.print(
' '
);
084
Serial
.print(now.hour(), DEC);
085
Serial
.print(
':'
);
086
Serial
.print(now.minute(), DEC);
087
Serial
.print(
':'
);
088
Serial
.print(now.second(), DEC);
089
Serial
.println();
090
091
delay(1000);
092
}
093
else
{
094
digitalWrite(ledPin, LOW);
// иначе не горит
095
}
096
delay(100);
097
/* ждем 0.1 секунды, Следующий импульс может быть излучён, только после исчезновения эха от предыдущего.
098
Это время называется периодом цикла (cycle period).
099
Рекомендованный период между импульсами должен быть не менее 50 мс. */
100
}
Повторяю: ссылка ведет на Ваш локальный компьютер :) У нас нет к нему доступа, да он нам, Михаил, и не нужен ;)
file:///C:/Users/michail/Desktop/20150708233416.jpg
сообщи свой айпишник.
file:///C:/Users/michail/Desktop/20150708233416.jpg
сообщи свой айпишник.
127.0.0.1
там на фото экран на нем все выглядит так
Time- (первая строчка)
t=26,43 (вторая строчка)
За чей счёт гуляем?
а сколько стоит нынче погулять?
а сколько стоит нынче погулять?
от 20$ в час.