Косвенная адресация

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Здравствуйте уважаемые.

Прошу помощи. Есть всем известный экранчик 1602 I2C. Собран он на расширителе портов PCF8574, у которого есть 2 версии: с "А" и без А. Отличаются адресами I2C. Я хочу устанавливать адрес I2C из eeprom.

Стандартный конструктор для lcd выглядит так:

LiquidCrystal_I2C lcd(lcd_adr, lcd_col, lcd_row); // set the LCD address to 0x27 for a 16 chars and 2 line display

Конструктор - глобальный.

Собственно вопрос.  Как подставить "lcd_adr" в конструктор, если она (lcd_adr) иницируется только после вызова функции чтения ееprom?

Т.е. последовательность д.б. такая: 

1 чтение из eeprom 

2 инициализация lcd_adr

3 передача  lcd_adr в конструктор

Спасибо. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, и вызывайте после, какие проблемы? Если он так уж нужен глобально, сделайте глобальный указатель, а там, где уже можно вызывайте конструктор: new LiquidCrystal_I2C(...

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

я пробовал вызывать каждый раз в той функции, которая использует LCD. Получается бардак на индикаторе - строки сливаются в одну, либо в середине одной строки вылазит другая. По поводу глобального указателя можно поподробнее?

negavoid
Offline
Зарегистрирован: 09.07.2016
#include <dht11.h>

dht11 * MyObject;

void setup() { }

void loop()
{
  MyObject = new dht11;
  int chk = MyObject.read();
  delete MyObject;
}

 

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

LiquidCrystal_I2C* lcd;

void setup()
{
  lcd = new LiquidCrystal_I2C(lcd_adr, lcd_col, lcd_row);
  lcd.init();

HMI:23: error: request for member 'init' in 'lcd', which is of pointer type 'LiquidCrystal_I2C*' (maybe you meant to use '->' ?)

   lcd.init();


 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Если объект класса создаётся оператором new, то для доступа к чтенам класса используется оператор "->", а не точка:

lcd->init();
// вместо
lcd.init();

 

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

уже поменял

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

Все получилось! Ура! Ура! Ура! Всем спасибо!!! Вопрос решен. Тема закрыта