Добрый день.
Есть проблема с дисплеем 16х2 (подключен через I2C) и выводом на него показаний с потенциометра и энкодера. Суть в следующем: при одновременном выводе значений на экран, нормально отображается изменение показаний с энкодера , изменение показаний потенциометра отображается только при повороте энкодера. Да, вывод значений находится в enc1.isTurn(), но если вынести из условия вывод значений потенциометра, то изменение обоих значений на экране отображается нормально, только энкодер начинает вести себя странно - пропускать шаги и увеличивать (или не меняет) значение при вращении в любую сторону. Энкодер и потенциометр подключены правильно, т.к. в мониторе порта и энкодер и потенциометр по отдельности ведут себя нормально.
Собственно как быть ?
используемые библиотеки во вложении
#define CLK 7
#define DT 8
#define SW 9
#define potpin 0
#include "GyverEncoder.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
Encoder enc1(CLK, DT, SW);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int value = 0;
int Fan = 0;
void setup() {
lcd.init();
lcd.backlight();
enc1.setType(TYPE2);
}
void loop() {
enc1.tick();
if (enc1.isRight()) value--;
if (enc1.isLeft()) value++;
if (enc1.isRightH()) value -= 5;
if (enc1.isLeftH()) value += 5;
value = constrain(value, 0 , 100);
Fan = analogRead(potpin);
Fan = map(Fan, 0, 1023, 0, 100);
if (enc1.isTurn()) {
lcd.setCursor(0, 0);
lcd.print("Time");
lcd.setCursor(5, 0);
lcd.print(value);
lcd.setCursor(0, 1);
lcd.print("Fan");
lcd.setCursor(5, 1);
lcd.print(Fan);
}
/*
lcd.setCursor(0, 1);
lcd.print("Fan");
lcd.setCursor(5, 1);
lcd.print(Fan);
*/
}
Есть проблема с дисплеем 16х2 (подключен через I2C) и выводом на него показаний с потенциометра и энкодера. Суть в следующем: при одновременном выводе значений на экран, нормально отображается изменение показаний с энкодера , изменение показаний потенциометра отображается только при повороте энкодера. Да, вывод значений находится в enc1.isTurn(), но если вынести из условия вывод значений потенциометра, то изменение обоих значений на экране отображается нормально, только энкодер начинает вести себя странно - пропускать шаги и увеличивать (или не меняет) значение при вращении в любую сторону. Энкодер и потенциометр подключены правильно, т.к. в мониторе порта и энкодер и потенциометр по отдельности ведут себя нормально.
Собственно как быть ?
используемые библиотеки во вложении
#define CLK 7
#define DT 8
#define SW 9
#define potpin 0
#include "GyverEncoder.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
Encoder enc1(CLK, DT, SW);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int value = 0;
int Fan = 0;
void setup() {
lcd.init();
lcd.backlight();
enc1.setType(TYPE2);
}
void loop() {
enc1.tick();
if (enc1.isRight()) value--;
if (enc1.isLeft()) value++;
if (enc1.isRightH()) value -= 5;
if (enc1.isLeftH()) value += 5;
value = constrain(value, 0 , 100);
Fan = analogRead(potpin);
Fan = map(Fan, 0, 1023, 0, 100);
if (enc1.isTurn()) {
lcd.setCursor(0, 0);
lcd.print("Time");
lcd.setCursor(5, 0);
lcd.print(value);
lcd.setCursor(0, 1);
lcd.print("Fan");
lcd.setCursor(5, 1);
lcd.print(Fan);
}
/*
lcd.setCursor(0, 1);
lcd.print("Fan");
lcd.setCursor(5, 1);
lcd.print(Fan);
*/
}
Вложения
-
24.8 KB Просмотры: 0