Ви не увійшли.
Сторінки 1
Ура, заработало !!!
закомментировал строку и все Ок.
// lcd.begin(16, 2);
г0сть, спасибо за помощь !!!
Эта што?
Напрямую загрузить сюда не дает, только в архиве. Это скетч - исходник, где надо заменить вывод на 1602 с I2C
Я добавил строки библиотеку
#include "src/LiquidCrystal_I2C.h"
// LiquidCrystal lcd(10, 11, 12, 13, A0, A1); // RS,E,D4,D5,D6,D7
LiquidCrystal_I2C lcd(0x3F, 16, 2); // LCD I2C
Выдает ошибку. Исходник загружается нормально, но информации на дисплее нет.
Константин М пише:Предполагаю, что этого мало ?
Чего мало? Совета взять библиотеку с і2с? Тогда еще один совет - открыть идущие с библиотекой примеры
Библиотеку установил,
Посветило строку lcd.begin(16, 2); и выдало ошибку:
no matching function for call to 'LiquidCrystal_I2C::begin(int, int)'
А сюда скетч можно вставить ?
Константин М пише:Здравствуйте!
Помогите вот с таким вопросом. Есть программа с выводом на дисплей 1602 без контроллера I2C.
в ней такие строки - LiquidCrystal lcd(10, 11, 12, 13, A0, A1); // RS,E,D4,D5,D6,D7
А у меня дисплей с контролером I2C. Как изменить код для вывода информации ? Это сложно ?Взять библиотеку с і2с
Предполагаю, что этого мало ? Хотя, попробую.
Попробовал, ругнулось на этой строке - lcd.begin(16, 2);
Здравствуйте!
Помогите вот с таким вопросом. Есть программа с выводом на дисплей 1602 без контроллера I2C.
в ней такие строки - LiquidCrystal lcd(10, 11, 12, 13, A0, A1); // RS,E,D4,D5,D6,D7
А у меня дисплей с контролером I2C. Как изменить код для вывода информации ? Это сложно ?
вот отличный магазинчик
http://diyshop.com.ua/index.php?route=product/category&path=60_105&page=2
сам там брал. доволен
Спасибо !!!
Только вчера искал в продаже на вот такой станочек - https://www.youtube.com/watch?v=0rfhMnnnVhw
А еще направляющие для точилки для ножей типа Apex pro.
Накормил внука и уложил спать, есть время продолжить.
Еще раз ( десятый ) перепроверил подключение. Запустил скетч ( очередной проверочный )
/*
Rotary Encoder - Interrupt Example
The circuit:
* encoder pin A to Arduino pin 2
* encoder pin B to Arduino pin 3
* encoder ground pin to ground (GND)
*/
#include "Rotary.h"
Rotary r = Rotary(2, 3);
void setup() {
Serial.begin(57600);
r.begin();
PCICR |= (1 << PCIE2);
PCMSK2 |= (1 << PCINT18) | (1 << PCINT19);
sei();
}
void loop() {
}
ISR(PCINT2_vect) {
unsigned char result = r.process();
if (result == DIR_NONE) {
// do nothing
}
else if (result == DIR_CW) {
Serial.println("ClockWise");
}
else if (result == DIR_CCW) {
Serial.println("CounterClockWise");
}
}
Если меняю CLK и DT местами, меняется
ClockWise
CounterClockWise
Без подключения + не работает совсем.
Подключение кнопки ( CW ) в данном варианте ни на что не влияет.
В другом скетче кнопкой можно обнулять показания. Обнуляет.
#define pin_CLK 2
#define pin_DT 3
#define pin_Btn 4
unsigned long CurrentTime, LastTime;
enum eEncoderState {eNone, eLeft, eRight, eButton};
int EncoderA, EncoderB, EncoderAPrev, counter;
bool ButtonPrev;
eEncoderState GetEncoderState() {
// Считываем состояние энкодера
eEncoderState Result = eNone;
CurrentTime = millis();
if (CurrentTime >= (LastTime + 5)) {
// Считываем не чаще 1 раза в 5 мс для уменьшения ложных срабатываний
LastTime = CurrentTime;
if (digitalRead(pin_Btn) == LOW ) {
if (ButtonPrev) {
Result = eButton; // Нажата кнопка
ButtonPrev = 0;
}
}
else {
ButtonPrev = 1;
EncoderA = digitalRead(pin_DT);
EncoderB = digitalRead(pin_CLK);
if ((!EncoderA) && (EncoderAPrev)) { // Сигнал A изменился с 1 на 0
if (EncoderB) Result = eRight; // B=1 => энкодер вращается по часовой
else Result = eLeft; // B=0 => энкодер вращается против часовой
}
EncoderAPrev = EncoderA; // запомним текущее состояние сигнала A
}
}
return Result;
}
void setup() {
pinMode(pin_DT, INPUT);
pinMode(pin_CLK, INPUT);
pinMode(pin_Btn, INPUT_PULLUP); // Кнопка не подтянута к +5 поэтому задействуем внутренний pull-up резистор
Serial.begin(115200);
counter = 0;
}
void loop() {
switch (GetEncoderState()) {
case eNone: return;
case eLeft: {
counter--;
break;
}
case eRight: {
counter++;
break;
}
case eButton: {
counter = 0;
break;
}
}
Serial.println(counter);
}
Но во всех вариантах показания меняются только на каждом втором повороте энкодера.
На Ардуино еще по шине I2C подключен дисплей 1602 и синтезатор.
Все.
Собрал синтезатор на Si5351A + Ардуино Уно+ энкодер KY-040 + дисплей.
Подключил, прошил, все заработало, НО ! Повернул энкодер на один шаг - ничего, на второй шаг - данные изменились. И так все время. Что вправо, что влево. Показания изменяются только на каждый второй поворот энкодера.
Я обратился к автору программы, он ответил, что у него и у всех, кто повторял эту схему, все работает. Прислал мне несколько программ для проверки энкодера - на всех их энкодер работает точно также. Я заменил энкодер на точно такой же ( купил их 3 штуки ) - ничего не поменялось. Все работает четко, не сбоит, нет ложных срабатываний, но показания изменяются только на каждый второй поворот энкодера.
Можете чем-то помочь ?
Сторінки 1