Страница 1 из 1

Считывание данных из массива по счетчику 0123210

Добавлено: 07.02.2016{, 17:08}
taras20
Стоит счетчик от максимума(4) через 0 к максимуму (циклический по кругу). Стрелки влево вправо. По его значению по индексу из массива считываются переменные и выводятся на экран. Так вот когда 0 1 2 3 4 3 2 1 нормально. Но когда дохожу до 0 и влево (назад счетчик переходит на 4) тут-то на экране "конец света". Что это и как победить?
test_mas.rar
(323.63 КБ) 79 скачиваний
сначала всё хорошо
4818096.jpg
потом +1
2907098.jpg
проект прикреплен
видео

Считывание данных из массива по счетчику 0123210

Добавлено: 07.02.2016{, 18:11}
HAyMOB
Здравствуйте. Как вариант проблема в пользовательском блоке. Графическое представление его есть?

Считывание данных из массива по счетчику 0123210

Добавлено: 07.02.2016{, 18:33}
kossn93
сделал себе простейший контроллер отопления дома, управляет старым котлом, используется нано,экран 20*4по I2C, релюшки,4 датчика далас(котла, подачи,уличной температуры и комнатной), переодически, может раз в два дня, а может и в неделю не разу, наблюдаю такой же точно конец света на экране)) ребут все решает, но защита от завесания в этом случае не срабатывает... в проекте нет ни массивов ни счетчиков, проблема у меня конечно от вашей отличается, но экран точь в точь также себя ведет... может решение вашей проблемы поможет и мне)

Добавлено (07.02.2016, 18:33)
---------------------------------------------
только у вас на видео четко различимые знаки, а у меня ровно как камера ваша видит на фото...

Считывание данных из массива по счетчику 0123210

Добавлено: 07.02.2016{, 19:10}
taras20
HAyMOB писал(а):Здравствуйте. Как вариант проблема в пользовательском блоке. Графическое представление его есть?
Графическое представление модуля счетчика (кстати на разных пробовал с этого сайта -то же самое) Даже разработчику написал - можно ли а модуле чтения из массива защиту поставить - он в архив кинул)
7600973.jpg
вот сам пользовательский модуль

Считывание данных из массива по счетчику 0123210

Добавлено: 07.02.2016{, 23:08}
Alex16
Посмотри, возможно решит проблему

Считывание данных из массива по счетчику 0123210

Добавлено: 08.02.2016{, 05:53}
support
taras20 писал(а):Даже разработчику написал - можно ли а модуле чтения из массива защиту поставить - он в архив кинул)
Я в комментарии описал почему я не принял это как багу. Я могу сделать программную проверку на соответствие запрашиваемого элемента размеру массива. Но этот код будет вызываться всегда,  и когда он нужен и когда не нужен. Это не оправданное увеличение размера программы, а размер памяти ардуино ограничен. Поэтому предлагаю в проекте сделать проверку значения

Считывание данных из массива по счетчику 0123210

Добавлено: 08.02.2016{, 10:56}
taras20
Alex16 писал(а):Посмотри, возможно решит проблему
Спасибо за попытку получилось то же самое. вот видео

Считывание данных из массива по счетчику 0123210

Добавлено: 08.02.2016{, 11:05}
taras20
support писал(а):Поэтому предлагаю в проекте сделать проверку значения
Спасибо. Я делал проверку. Но она почему-то не срабатывала. Пробовал MAX(0,Значение) но при отладке ошибка
7846632.png
Пробовал сравнивать
7610732.png
Всё тоже самое.
Как Вы порекомендуете сравнивать?
Моё предположение, что в модуле счетчика при переходе от 0 к -1 есть какое-то мгновение, когда индекс -1. Может счетчик сделать от 1 до макс?

Сейчас попробовал сделать счётчик от 1 (а не от 0) до макс. Эффет "конца света" пропал. Только счетчик по кольцу неправильно считает. Но это можно поправить.

Считывание данных из массива по счетчику 0123210

Добавлено: 08.02.2016{, 11:45}
taras20
Как удалось победить. Подсмотрел "закольцованный" счетчик на форуме. Там стояло разрешение записи выходной переменной.
В ИТОГЕ:
В модуле счётчика сделал разрешение на запись
6237124.png
и вроде всё заработало. Правда промигивает максимальное+1 значение при переходе от 0 к макс. Но это не критично - главное нет "конца света"