Имя устройства, как массив
- Войдите на сайт для отправки комментариев
Чт, 15/08/2019 - 00:09
Доброго времени. Нужен ваш совет.
Делаю проект с внешней еепром. По проекту еепром должно быть 2 штуки.
Использую библиотеку I2C_eeprom
В чем суть проблемы:
Есть большой блок в цикле loop, который одинаковый для еепром №1 и №2
Цикл for так и напрашивается сам собой, но столкнулся со следующей проблемой - как корректно задать имя устройства?
Если копипастить (код упрощен):
#include <Wire.h>
#include <I2C_eeprom.h>
I2C_eeprom myEEPROM_1 (0x50, 0x256); // имя устройства (адрес, количество байт в плате)
I2C_eeprom myEEPROM_2 (0x50, 0x256);
setup()
{
// настраиваем пины и прочее
pinMode(A1, INPUT);
}
loop()
{
// кусок кода
myEEPROM_1.writeByte(1, analogRead(A1));
myEEPROM_2.writeByte(1, analogRead(A1));
}
Подскажите, пожалуйста, как можно выразить имя устройств (myEEPROM_1, myEEPROM_2) через массив, чтобы в будущем можно было использовать цикл for?
Спасибо
З.Ы. Уже какой день пытаюсь решить проблему
Ну твой код вообще нормально работать не должен, поскольку адреса для обоих EEPROM одинаковые.
А через массив можно так:
I2C_eeprom *myEEPRarray[2]; void setup() { myEEPRarray[0] = new I2C_eeprom(0x50, 0x256); myEEPRarray[1] = new I2C_eeprom(0x51, 0x256); pinMode(A1, INPUT); } void loop() { myEEPRarray[0]->writeByte(1, analogRead(A1)); myEEPRarray[1]->writeByte(1, analogRead(A1)); }Кстати не уверен, что 0x256 это правильно. Перепроверь размер.
Ну твой код вообще нормально работать не должен, поскольку адреса для обоих EEPROM одинаковые.
Спасибо большое. Опробую.
Да, я увидел ошибку в адресе, но слишком поздно. А кнопку "редактировать" не нашел ((
Подскажите, а стрелка (->) что означает?
Хотелось бы более детально об этом погуглить-почитать.
Подскажите, а стрелка (->) что означает?
Хотелось бы более детально об этом погуглить-почитать.
https://www.google.com/search?q=си+оператор+стрелка