• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Непонятное поведение переменных

mishgan

Member
Есть достаточно большой скетч с кучей переменных
работал до сегоднешнего дня правильно без глюков
сегодня начались странные глюки с переменными

Код:
#include <EEPROM.h>
int st[15];
byte dm[3];
....
void setup() {
Serial.begin(9600);
EEPROM.begin (101);
st[0] = EEPROM.read(0);
...
Serial.println(st[0]); //1й
for(byte j = 1; j <=3 ; j++)  {
dm[j] = EEPROM.read(j+21); delay(4);
}
Serial.println(st[0]); //2й
....
EEPROM.end();
}
в нулевой ячейке EEPROM записан 0. В каждой ячейке 22,23,24 записана цифра 100. Первый Serial.println(st[0]); выведет как положено 0. Второй Serial.println(st[0]); выведет 100. Весь мозг съел... Не пойму в чем проблема. Помогите добрые люди...
 
Последнее редактирование:

AndrF

Active member
Индексация массива начинается с 0. По крайней мере с массивом dm[3] вы уже работаете неправильно.
 

Юрий Ботов

Moderator
Команда форума
Ответа не знаю.. НО st у вас массив INT (двухбайтовый) а eeprom.read возвращает однобайтовое ЗНАЧЕНИЕ а никак не массив. Что означает ваше троеточие после этой команды - я не в курсе. К тому же длина st у вас 15 а в dm вы читаете с 21... Ввиду полного бардака просьба ПОДРОБНО описать а чего вы собственно от кода хотите и выложить код без купюр в виде троеточий (явки и пароли выкладывать не обязательно)
 

mishgan

Member
Сам ничего не понял... изменил тип некоторых переменных с byte на int и все заработало нормально.
 

CodeNameHawk

Moderator
Команда форума
У вас все просто, выход за пределы массива.
Массив у вас byte dm[3]; возможные его элементы dm[0], dm[1], dm[2], а вы записываете в элемент dm[3], которого нету.
 
Сверху Снизу