1602 LCD конвертор в IIC/I2C

iGorw
Offline
Зарегистрирован: 04.09.2016

сразу к сути:

lcd.backlight();   // данная строчка включает подсветку дисплея, как отключить ее?

s1981
Offline
Зарегистрирован: 22.12.2013

lcd.noBacklight();

iGorw
Offline
Зарегистрирован: 04.09.2016
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include "stDHT.h"

DHT sens(DHT21);
DHT sens2(DHT11);

LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей

const int buttonPin = 2; 
  int buttonState = 0;

void setup()
{
  pinMode(2, INPUT);
  digitalWrite(2, HIGH);
  pinMode(3, INPUT);
  digitalWrite(3, HIGH);
  pinMode(buttonPin, INPUT);
  
  lcd.init();                     
  lcd.print("IE Corp");
    
}
void loop()
{
  buttonState = digitalRead(buttonPin);
  
  if (buttonState == HIGH)
  {         
    lcd.backlight();
  }
  else
  {
  lcd.noBacklight();
  }
  
  int t = sens.readTemperature(2); // чтение датчика на пине 2
  int h = sens.readHumidity(2);    // чтение датчика на пине 2
  delay(2000);
  
  int t2 = sens2.readTemperature(3); // чтение датчика на пине 3
  int h2 = sens2.readHumidity(3);    // чтение датчика на пине 3
  delay(2000);
  
   lcd.clear();
      lcd.print("HumStr: ");
      lcd.print(h);
      lcd.print(" %");
      lcd.setCursor(0, 1);
      lcd.print("TempStr: ");
      lcd.print(t);
      lcd.print(" C ");
     
      delay(4000);
     
      lcd.clear();
      lcd.print("HumHome: ");
      lcd.print(h2);
      lcd.print(" %");
      lcd.setCursor(0, 1);
      lcd.print("TempHome: ");
      lcd.print(t2);
      lcd.print(" C ");
  
}

почему экран горит всегда? что я делаю не так? нужно что бы экран горел только при нажатой кнопке

5N62V
Offline
Зарегистрирован: 25.02.2016

 я , если честно не знаю точно, но может перемычку на  i2c конверторе надо снять? 

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

Конвенторы I2C бывают разные. В зависимости от схемы и библиотеки(версии) подсветка реализованна по разному.

5N62V
Offline
Зарегистрирован: 25.02.2016

Штирлиц пишет:

Конвенторы I2C бывают разные. В зависимости от схемы и библиотеки(версии) подсветка реализованна по разному.

Точно что разные: у меня с адресом 3f    коннектится. 

s1981
Offline
Зарегистрирован: 22.12.2013

Попробуй в void Setup(); добавить lcd.noBacklight();

по моему у дисплейчика по умолчанию стоит подсветка, ее нужно выключить, а потом уже включать или выключать. Точно не знаю, работал как то с ним, но не помню. Подсветку делал и включал и выключал

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

сдаётся мне, что проблема в библиотеке, самому пришлось под проект K3NG долго подбирать нужную, находил даже ЛУЧШАЯ БИБЛИОТЕКА ВСЕХ ВРЕМЁН И НАРОДОВ ДЛЯ I2C, заработала та, в которой строка инициализации дисплея выглядит так:

 LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

точно в библиотеке, смотрите хидер оной, у меня этот режим закомментирован:

 // Constructor with backlight control
   LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs,
                     uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
                     uint8_t backlighPin, t_backlighPol pol);

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Это что, юмор такой?

Как подключен дисплей - по I2C или по 7-проводному интерфейсу?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

Это что, юмор такой?

Как подключен дисплей - по I2C или по 7-проводному интерфейсу?

Это не юмор, это правда жизни, библиотек для подключения дисплея по I2C пруд пруди и, у каждой свой функционал и, как правило, друг с другом не стыкующийся ))) Увы

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Библиотеку с такой "правдой жизни" я бы не рискнул использовать в своем проекте.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

Библиотеку с такой "правдой жизни" я бы не рискнул использовать в своем проекте.

приходится, только под ней проект компилируется и работает

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Дело Ваше.

Но, думаю, в данном случае имеет место одна из двух ситуаций:

1. У автора явная мешанина в голове и он не в состоянии написать ничего вразумительного. Следовательно, библиотека может в любой момент сработать не так, как Вам бы хотелось. Например, начать портить данные других библиотек, после чего Вы долгл и безуспешно будете искать оштибку.

2. Вы не понимаете, что и как эта библиотека делает. Следовательно, библиотека может в любой момент сработать не так, как Вам бы хотелось. Например... (далее по тексту)

Чтобы прояснить этот момент, рекомендую сделать две вещи:

1. Расписать, зачем нужен каждый параметр при вызове конструктора LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

2. Расписать, какие ноги контроллера используются и для чего.

iGorw
Offline
Зарегистрирован: 04.09.2016

Спасибо большое) lcd.noBacklight(); это то что нужно.  У меня по умолчанию подсветка наоборот выключена. Просто первым циклом она включалась и больше не выключалась)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

1. У автора явная мешанина в голове и он не в состоянии написать ничего вразумительного. Следовательно, библиотека может в любой момент сработать не так, как Вам бы хотелось. Например, начать портить данные других библиотек, после чего Вы долгл и безуспешно будете искать оштибку.

2. Вы не понимаете, что и как эта библиотека делает. Следовательно, библиотека может в любой момент сработать не так, как Вам бы хотелось. Например... (далее по тексту)

Чтобы прояснить этот момент, рекомендую сделать две вещи:

1. Расписать, зачем нужен каждый параметр при вызове конструктора LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

2. Расписать, какие ноги контроллера используются и для чего.

Автор написал один из самых математически мощных проектов выполненных на АРДУИНО, опубликован в исходных текстах! Чтобы так СМЕЛО писать, надо показать что-то своё хотя бы отдалённое приблизившееся к этому.

Опубликован  здесь, на ГИТХАБЕ https://github.com/k3ng/k3ng_rotator_controller
 

ЗЫ это строка инициализации дисплея, может быть Вы просто не поняли этого? Функции классические но, не совсем )))
PPS А может быть Вы членкорр Циолковского и у Вас есть доступ  к математике расчёта траекторий планет Павла Свиридова? Или на швейцарских эфемеридах реализовывали бы расчёт движения Луны? )))

 

bwn
Offline
Зарегистрирован: 25.08.2014

ua6em, раз уж вы так впряглись за автора, то разъясните народу, для какой цели в строке инициализации I2C (sda, scl - A4,A5) указывать какие то левые пины, которые физически не могут быть подключены? Или это универсальная библиотека?
Второй вопрос, на хрена основной массе ардуинщиков  движение Луны с траекториями прочих астероидов?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

1. за автора не впрягаюсь

2. ясен пень

3. то-есть любой человек без знания математики может программировать? ***"мышь в PI3de - оригинально"

bwn
Offline
Зарегистрирован: 25.08.2014

Я здесь в соседней теме уже объяснял человеку, что для программирования подавляющего большинства бытовых контроллеров достаточно арифметики начальной школы. А здесь основная масса занимается именно этим.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ua6em, я написал: "имеет место одна из двух ситуаций".

Коль скоро Вы так решительно отвергаете саму возможность осуществления первой, - остается вторая.

PS. Если судить по Вашему "ЗЫ", Вы считаете расчет эфемерид сложной задачей. Не удивлен. Точно - вторая ситуация.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

PS. Если судить по Вашему "ЗЫ", Вы считаете расчет эфемерид сложной задачей. Не удивлен. Точно - вторая ситуация.

я не считаю расчёт эфемерид сложной задачей, я считаю расчёт движения именно Луны сложной задачей, есть два принципиальных подхода к расчёту с использованием эфемерид и без оных, используя математическую модель, эфемериды по сравнению с математической моделью именно в этом вопросе доказали свою несостоятельность (по реальным измерениям положения в моменты затмений)

Прикладной механизм так сказать, имеем параболическое зеркало к примеру 10 метров, на частоте 47 Гигагерц точность позиционирования должна быть в рамках точности энкодера при 12 бит это 0,08 градуса и, даже этой точности не хватает, замахиваются на 14 бит, РАТАН-600 используя МАТЕМАТИЧЕСКУЮ МОДЕЛЬ удерживает сектор облучения на Луне полосой в 20 километров, но это я отвлёкся )))

Уж коли мы взялись реализовать контроллер на ардуино он будет реализован, у нас большое сообщество )))

И, главное, а код то проекта смотрели???
Покажите нечто аналогичное своё...
Как там у Маяковского "я достаю из широких штанин...смотрите завидуйте я гражданин"

Я не ардуинщик и сравнить двух ардуинщиков могу "...по делам их..." )))

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Уважаемые диспутанты!

1. Задача слежения за конкретным местом на луне, управляя тарелкой в 10 и более метров диаметром, действительно ОЧЕНь крутая.

Это я, как математик (МехМат МГУ выпуск 1991) говорю. Я бы решал с оптичекой обратной связью, но это только ночью, в ясное небо работать будет. А по параметрам орбиты - реально круто! И какая точность слежения получилась?

-------------------

2. Про библиотеку с кучей "цифирок" в строке инициализации.

Тут все просто. PCF8574 - это просто 8-ми разрядный двунаправленный регистр с i2c интерфейсом. Поэтому присоединяется он к чему угодно, в нашем случае - к LCD дисплею, ЛЮБЫМ способом. Типовая плата из Китая, та - да - припаивается конкретным образом, но это не значит, что нельзя припаять провода иначе, даже на китайской плате, тем более на самодельной. В строке инициализации у, вызывающей у Андриано чувство дисгармонии, библиотеки просто указываются пины РЕГИСТРА PCF8574 , присоединенные к соответствующим контактам LCD дисплея.

---

Надеюсь, вопрос снят?

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

wdrakula пишет:

 А по параметрам орбиты - реально круто! И какая точность слежения получилась?

Надеюсь, вопрос снят?

Я думаю копья ломались из-за того, что не был выложен скетч (друг друга не поняли),

но он не маленький, с библиотеками применённых устройств в архивированном виде под 200 килобайт, многостраничный к тому же )))

По точности, математически обрабатываемая точность- float, а вот точность расчётной математики - не знаю, хотел обратится к Павлу Свиридову поделиться математикой своего расчётного блока, но коль уже сделано ждём результатов! У меня контроллер в стадии изготовления ))) (жду комплектующие из поднебесной)
По энкодерам я уже сказал - 0,08 градуса  при 12 битах и соответствующем протоколе обмена
Да, эксперименты на столь высоких частотах доступны немногим энтузиазистам ))) мне точности в градус хвататит

Да, вопрос юстировки для столь высоких разрешений пока открытый )))