Перейти к содержанию

Глюк LCD+Encoder


Гость NameIS

Рекомендуемые сообщения

Здравствуйте. Подскажите пожалуйста почему данный ниже код работает с глюком.

Глюк заключается в том, что если выводить на LCD дисплей так: lcd.print("Param: "); lcd.print(myparam); то в этих строках:

if (encoder.isRight() && myparam < 35) myparam++;
  if (encoder.isLeft()  && myparam > 10) myparam--;

myparam меняется, но не так как нужно. Я пробовал в сериал выводить myparam сразу после этих строк для сравнения с отображением на LCD но и там и там одинаково и неправильно. Если так: lcd.print(myparam); (без предварительного lcd.print("Param: ");) то все нормально.

Неправильно - это меняется ели ели, как-то медленно, т.е. несколько щелчков энкодера что бы сменилось на единицу. И еще при повороте ручки в одну сторону значение myparam может(или нет) меняться и в ту и в другую сторону).

Там в коде последние четыре строки, если оставлять одну любую для проверки то две работают нормально а две нет.

Из-за чего такой неприятный глюк? Может это связано с конкретным моим железом или библиотеками. Название библиотек и их версии я в коде указал.

Скрытый текст

#include <LiquidCrystal_I2C.h>
//name=LiquidCrystal_I2C
//version=1.1.4
//author=Frank de Brabander
//maintainer=Marco Schwartz <marcolivier.schwartz@gmail.com>
//sentence=A library for I2C LCD displays.
//paragraph= The library allows to control I2C displays with functions extremely similar to LiquidCrystal library. THIS LIBRARY MIGHT NOT BE COMPATIBLE WITH EXISTING SKETCHES.
//category=Display
//url=https://github.com/marcoschwartz/LiquidCrystal_I2C
//architectures=avr
#include <GyverEncoder.h>
//name=GyverEncoder
//version=4.8
//author=AlexGyver <beragumbo@ya.ru>
//maintainer=AlexGyver <beragumbo@ya.ru>
//sentence=Advanced library for encoder.
//paragraph=Allows to get maximum uses of encoder: turns, holded turns, fast turns and more.
//category=Sensors
//url=https://github.com/AlexGyver/GyverLibs
//architectures=*

#define CLK 4
#define DT 5
#define SW 3

Encoder encoder(CLK, DT, SW);
LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup() {
  encoder.setType(TYPE2);
  lcd.init();
  lcd.backlight();
}

byte myparam = 10;
#define FLASH_MS 400
uint32_t ms = 0;
bool f = true;
void loop() {

  encoder.tick();
  if (encoder.isRight() && myparam < 35) myparam++;
  if (encoder.isLeft()  && myparam > 10) myparam--;

  if (millis() - ms >= FLASH_MS) {
    f = !f; ms += FLASH_MS;
  }

  lcd.setCursor(0, 0);
  //      lcd.print(myparam);                                 // Работает
        if (!f) lcd.print("   "); else lcd.print(myparam);    // Работает
  //      lcd.print("Param: "); lcd.print(myparam);           // НЕ работает
  //      lcd.print("Param: "); if (!f) lcd.print("   "); else lcd.print(myparam); // НЕ работает

}

 

Или я чего-то не знаю про связку lcd.print и encoder :(

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

I2c и энкодер не работают в паре нормально! Подключайте дисп на 6 проводов и меняйте код. Тогда все должно заработать нормально. В flprog есть такая возможность подключения. И прежде, чем приводить чужой код - читайте там, где вы его взяли! 

Никогда СЮДА не нажимай!!!

надоело из каждого вытаскивать информацию, поэтому:

А ПОДРОБНЕЕ? ГДЕ ФОТО? ГДЕ СХЕМА? ЧТО ЗНАЕШЬ? ЧТО УМЕЕШЬ?

мощные выходные транзисторы перегорают, предохраняя от перегорания плавкие предохранители....

Школа учит читать и писать, институт - пользоваться справочниками и искать ответы

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

43 минуты назад, sanbi4 сказал:

I2c и энкодер не работают в паре нормально!

Если это так, то печально :(

43 минуты назад, sanbi4 сказал:

И прежде, чем приводить чужой код - читайте там, где вы его взяли!

С чего решили что это чужой код? Этот код, который я привел в первом посте, я сделал минимальным для демонстрации ситуации(глюка).

Изначально я начал делать скеч, в которм идет работа с энкодером и дисплеем, но наткнулся на данный глюк. Сначала думал, что это я чего намудрил в своем коде, долго искал и выявил "причину". Код упростил и задал тут вопрос. Так же задал его еще на одном форуме. И там немного прояснилось, что энкодер нужно использовать с прерываниями, но все равно пока нормальной работы не получается. Так же там сказали что библиотека от Гайвера не есть хорошо... Буду пробовать с другими... Или самому мудрить...

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...