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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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