ARDUINO Копилка со счётчиком. Задания на доработку проекта

Vh48

✩✩✩✩✩✩✩
4 Мар 2020
12
0
Всем привет, помогите внедрить в скетч энкодер для редактирования суммы денег. Пытался запилить с помощью библиотеки GyverEncoder v4.4 , ни чего не вышло. Прошу помощи, хотя бы советом. SOS!!!!!
 

Вложения

IamNikolay

★✩✩✩✩✩✩
15 Янв 2020
166
30
Бесплатный совет - не пользуйтесь библиотеками для простых функций
 
  • Лойс +1
Реакции: Vh48

IamNikolay

★✩✩✩✩✩✩
15 Янв 2020
166
30
причин много:
  • содержат не нужные функции
  • занимают больше места
  • не видно содержимого (без открытия самой библиотеки)
  • .....
 

Vh48

✩✩✩✩✩✩✩
4 Мар 2020
12
0
Согласен. Но здесь просто нужно изменять одну переменную.
 

Vh48

✩✩✩✩✩✩✩
4 Мар 2020
12
0
Это оригинал. Попытку даже сохранять не стал.
Пытался менять переменную
float summ_money = 0; // сумма монет в копилке
Для меня проблемой стала то что она считается из суммы произведений двух других переменных.
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,652
409
Москва
добавить энкодер получилось ?

допустим это энокодер enc
тогда в loop добавить как то так:
enc.tick();
if (enc.isLeft())
{summ_money=summ_money-1);}
if (enc.isRight())
{summ_money=summ_money+1;}
вставить это надо в бесконечный циклы while (1)

непонятно почему сумма float, там целые и десятые используются ? ттипа рубли и копейки ?

еще после изменения суммы наверное надо вставить такую строку
lcd.setCursor(0, 1); lcd.print(summ_money);
 
Последнее редактирование:

Vh48

✩✩✩✩✩✩✩
4 Мар 2020
12
0
да все так !! Но я менял тип данных чтобы без копеек было. Использовал вот этот пример (соответственно value менял) но на экране ничего не происходило
 

Вложения

Vh48

✩✩✩✩✩✩✩
4 Мар 2020
12
0
Тут еще такая загвоздка то что при каждом запуске будет пересчитываться сумма в старое показание
// при старте системы считать из памяти сигналы монет для дальнейшей работы, а также их количество в банке
for (byte i = 0; i < coin_amount; i++) {
coin_signal = EEPROM.readInt(i * 2);
coin_quantity = EEPROM.readInt(20 + i * 2);
summ_money += coin_quantity * coin_value; // ну и сумму сразу посчитать, как произведение цены монеты на количество
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,652
409
Москва
не уверен, что после обработки isLeft isRight и таких же у сдеражнием isTurn будет тру. он может и сбрасываться при вызове этих isLeft isRight и т.д.

тогда проще ввести old_value и сделать
if (old_value!=value)
{
тут вывод на экран
old_value=value;
}
 

Vh48

✩✩✩✩✩✩✩
4 Мар 2020
12
0
в полне возможно вы правы т.к. копилка в сон не уходила вообще после как изменил скетч. Щас дошло как можно реализовать , но лишиться функции счетчика количества монет. Менять не summ_money а тупо менять количество монет int coin_quantity[coin_amount]
 

Vh48

✩✩✩✩✩✩✩
4 Мар 2020
12
0
сори не так выразился я имел ввиду вот эту сточку
summ_money += coin_value; // к сумме тупо прибавляем цену монетки (дада, сумма считается двумя разными способами. При старте системы суммой всех монет, а тут прибавление
только coin_value[ номер монеты ]
Как то так типо:
  • if (enc1.isRight()) summ_money += coin_value[0]; // если был поворот направо, увеличиваем на 1
  • if (enc1.isLeft()) summ_money -= coin_value[0]; // если был поворот налево, уменьшаем на 1
  • if (enc1.isRightH()) summ_money += coin_value[2]; // если было удержание + поворот направо, увеличиваем на 5
  • if (enc1.isLeftH()) summ_money -= coin_value[2]; // если было удержание + поворот налево, уменьшаем на 5
 

Vh48

✩✩✩✩✩✩✩
4 Мар 2020
12
0
2 дня копался, вообще ни каких результатов. Как товарищ в начале поста подсказал по поводу библиотеки отказался от неё, и снова ни чего .
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,652
409
Москва
Напиши в личку подробно что надо и еще раз именно свой скетч скинь, посмотрю что сделать можно
скетч лучше с уже подключенным энкодером.