Проблемы с LCD-экраном когда одновременно с кодом Ethernet-Shield
- Войдите на сайт для отправки комментариев
Добрый вечер, форум! Подскажите пожалуйста! Когда я отдельно подключаю экран и датчик DHT22 к ардуино - все хорошо показывается на экране (скетч №1), когда отдельно отправляю данные на удаленный сервер - тоже все норм,
как только пытаюсь совместить два данных скетча в один - экран перестает показывать! хотя код тот же! либо ничего не показывает вообще, либо, если вывести какой-то текст в void setup(), то он секунд за 10 потихоньку очищяется до чистого состояния!
В чем может быть проблема? Как вообще так? в чем конфликт? Отдельно от Ethernet-кода экран работает, а вместе с Ethernet кодом - лагает!
Подключил экран точно правильно, ведь скетч №1 работает сколь угодно долго и все нормально показывает, но стоит соеденить код с кодом ethernet - не показывается ничего!
Привожу рабочий скетч № 1 и общий скетч (где экран почемуто перестает работать)
Скетч № 1 только для экрана (рабочий)
#include "DHT.h"
#include <LiquidCrystal.h> //Подключаем библиотеку для работы с LCD
LiquidCrystal lcd(12, 11, 6, 5, 4, 3); // инициализируем LCD, указывая управляющие контакты
DHT dht(2, DHT22);
float h; // Значение температуры
float t;
void setup() {
lcd.begin(20, 4);// задаем размерность дисплея
lcd.print("hello, world!"); // выводим на дисплей традиционную фразу
lcd.setCursor(0, 1);
lcd.print("1234jkjkjk!"); // выводим на дисплей традиционную фразу
}
void loop() {
h = dht.readHumidity();
t = dht.readTemperature();
showData(t,h);
}
void showData(float t, float h) {
lcd.setCursor(0, 0);
lcd.print("Temperature: ");
lcd.print(t);
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(h);
}
Общий скетч для экрана и ethernet shield (экран почему то перестает что либо показывать хотя код тот же!)
#include <SPI.h>
#include <Ethernet.h>
#include "DHT.h"
#include <LiquidCrystal.h>
//Константы
#define DHTPIN 2
DHT dht(DHTPIN, DHT22);
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Мак адрес
EthernetClient client;
LiquidCrystal lcd(12, 11, 6, 5, 4, 3);
//Переменные
unsigned long int timeConn = millis(); // Частота отправки данных о t/h на сервер
float h; // Значение температуры
float t; // Значение влажности
int codeLCD = 0; // Код для LCDisplay()
char server[] = "lydreev.bget.ru";
/*--------------------------------------------------------------
Необходимые настройки
--------------------------------------------------------------*/
void setup()
{
lcd.begin(20, 4);// задаем размерность дисплея
//Старт
lcd.print("hello, world!");
Serial.begin(9600);
Ethernet.begin(mac);
dht.begin();
}
/*--------------------------------------------------------------
Основное тело программы
--------------------------------------------------------------*/
void loop()
{
h = dht.readHumidity();
t = dht.readTemperature();
if (millis() - timeConn > 10000) {
sendData(t,h);
timeConn =millis();
Serial.println("CONNECT SERVER: Send temp/hum");
}
showData(t,h);
}
/*--------------------------------------------------------------
Функция отправляет данные о температуре и влажности на
WEB сервер.
--------------------------------------------------------------*/
void sendData(float t, float h) {
if (client.connect(server, 80)) {
Serial.println("connecting...");
Serial.println("Температура: "+floatToString(t,3));
Serial.println("Влажность: "+floatToString(h,3));
client.print( "GET /arduino/index.php?");
client.print("t=");
client.print(t);
client.print("&");
client.print("h=");
client.print(h);
client.println(" HTTP/1.1");
client.print( "Host: " );
client.println(server);
client.println( "Connection: close" );
client.println();
client.println();
client.stop();
client.flush();
}
}
void showData(float t, float h) {
lcd.setCursor(0, 0);
lcd.print("Temperature: ");
lcd.print(t);
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(h);
}
String floatToString(float value, byte precision){
int intVal = int(value);
unsigned int frac;
if(intVal >= 0){
frac = (value - intVal) * precision;
}
else {
frac = (intVal - value) * precision;
}
return String(intVal) + "." + String(frac);
}
В чем может быть проблема? Как вообще так? в чем конфликт? Отдельно от Ethernet-кода экран работает, а вместе с Ethernet кодом - лагает!
А ничего, что шилд 11-12 ноги тоже использует?