Arduino и Serial LCD: перезагрузка раз в 30 секунд.

Borman
Offline
Зарегистрирован: 14.01.2016

Доброго!

Подключил к Ардуине ЖК-дисплей, двухстрочный по I2C. Выводит показания датчика температуры DHT11.

Проблема такая: раз в 30 секунд мигает 3-4 раза зелёный светодиод на Arduino, и ЖК-дисплей перезагружается.

Не могу найти причину перезагрузки.

Скетч:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h> // библиотека ЖК-экрана
#include "DHT.h" // Библиотека датчика

DHT dht(2, DHT11); // Определяем пин датчика

LiquidCrystal_I2C lcd(0x27,20,2);  // установки дисплея

void setup()
{
  lcd.init();                      // инициализация ЖК-экрана
  lcd.backlight();
}


void loop()
{
  int h = dht.readHumidity(); // чтение влажности DTH11
  int t = dht.readTemperature(); // чтение температуры DTH11
  String StrH = String(h);
  String Str1 = String("HYDR: " + StrH + "%");
  String StrT = String(t);
  String Str2 = String("TEMP: " + StrT + "*C");
  lcd.setCursor(0,0);
  lcd.print(Str1);
  delay(1000);
  lcd.setCursor(0,1);
  lcd.print(Str2);
  delay(1000);
}
Radjah
Offline
Зарегистрирован: 06.08.2014

Зачем тебе аж 4 строки и целая куча преобразований?

Объяви одну и используй.

switch
Offline
Зарегистрирован: 07.12.2015

В коде не разбирался, но вполне возможно что просто память кончается.

Borman
Offline
Зарегистрирован: 14.01.2016

Упростил код. !9% памяти устройства, 22% динамической памяти.

То же самое: перезагрузка раз в 30 секунд.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h> // библиотека ЖК-экрана
#include "DHT.h" // Библиотека датчика

DHT dht(2, DHT11); // Определяем пин датчика

LiquidCrystal_I2C lcd(0x27,20,2);  // установки дисплея

void setup()
{
  lcd.init();                      // инициализация ЖК-экрана
  lcd.backlight();
}


void loop()
{
  int hyd = dht.readHumidity(); // чтение влажности DTH11
  int tem = dht.readTemperature(); // чтение температуры DTH11
  lcd.setCursor(0,0);
  lcd.print("H: ");
  lcd.print(hyd);
  lcd.print("% ");
  lcd.print("T: ");
  lcd.print(tem);
  lcd.print("*C");
  delay(1000);
}

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Тогда питание смотри.

Borman
Offline
Зарегистрирован: 14.01.2016

Питание пока по USB

Пробовал отключать подсветку ЖК - то же самое, перезагрузка раз в 30 сек.

Araris
Offline
Зарегистрирован: 09.11.2012

Попробуйте строку 7 как LiquidCrystal_I2C lcd(0x27, 16, 2);

Borman
Offline
Зарегистрирован: 14.01.2016

Araris пишет:

Попробуйте строку 7 как LiquidCrystal_I2C lcd(0x27, 16, 2);

Не помогло.

Проблемму вижу в питании:

1. Поменял провод USB на провод USB с 3-мя RC, проблема перезагрузки осталась.

2. Попробовал запустить от внешнего БП 12В через разъём питания - не стартует.

3. Подал питание +5В по USB-разъёму без подключения к компьютеру - работает, УРА! не перезагружается!

Осталось 2 вопроса:

?1: Почему перезагружается через 30 сек при подключении к компьютеру?

?2: Почему не работает через разъём 12В? Думаю на дохлые конденсаторы, полез искать другую плату Arduino похожей ревизии...

Radjah
Offline
Зарегистрирован: 06.08.2014

Кто-то дергает DTR у com-порта.

Borman
Offline
Зарегистрирован: 14.01.2016

Подключил родную ардуину уно - при подаче питания в 9 вольт всё работает.

Видать, палёный питальник у китайской ардуины :(