#include <GyverOLED.h>
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
#include "GyverEncoder.h"
#define ENCODER_CLK 2
#define ENCODER_DT 11
#define ENCODER_SW 12
Encoder enc1(ENCODER_CLK, ENCODER_DT, ENCODER_SW);
//Переключатель
#define switchPin_Rotation_Free 5
#define switchPin_Rotation_Cyclic 4
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
//Энкодер
attachInterrupt(0, isr, CHANGE); // прерывание на 2 пине! CLK у энка
oled.init(); // инициализация
oled.clear(); // очистка
oled.setScale(1); // масштаб текста (1..4)
//oled.home(); // курсор в 0,0
//oled.print("Режим:"); //1 строка 6 символов
//oled.setCursor(60, 0);
//oled.print("Свободный");
//oled.setCursor(0, 1);
//oled.print("012345678901234567890123456789"); //20 символов хорошо видно
////oled.setCursor(0, 2);
////oled.print(""); //20 символов хорошо видно
//oled.setCursor(0, 3);
//oled.print("Вращение - Вправо"); //20 символов хорошо видно
//oled.setCursor(0, 4);
//oled.print("Вращение - Влево"); //20 символов хорошо видно
//oled.setCursor(0, 5);
//oled.print("Режим - Свободный"); //20 символов хорошо видно
//oled.setCursor(0, 6);
////oled.print("Режим - Принудительный"); //20 символов хорошо видно
//oled.print("Режим - Цикличный"); //20 символов хорошо видно
//oled.setCursor(0, 7);
//oled.print("Режим - Программный"); //20 символов хорошо видно
//delay(5000); //1000 миллисекунд в 1 секунде
//oled.clear(); // очистка
//Переключатель Энкодер - Потенциометр
pinMode(switchPin_Rotation_Free, INPUT_PULLUP); // Set the switch pin as an input with a pullup resistor
pinMode(switchPin_Rotation_Cyclic, INPUT_PULLUP); // Set the switch pin as an input with a pullup resistor
}
void isr() //Функция Энкодера
{
enc1.tick(); // отработка в прерывании
}
void loop()
{
// put your main code here, to run repeatedly:
enc1.tick(); // отработка
//if (enc1.isRight()) Serial.println("Right"); // если был поворот
//if (enc1.isLeft()) Serial.println("Left");
//if (enc1.isRightH()) Serial.println("Right holded"); // если было удержание + поворот
//if (enc1.isLeftH()) Serial.println("Left holded");
if (digitalRead(switchPin_Rotation_Free) == HIGH && digitalRead(switchPin_Rotation_Cyclic) == HIGH)
{
//switchPin_Rotation_Programmed
oled.home(); // курсор в 0,0
oled.print("Режим:"); //1 строка 6 символов
oled.setCursor(60, 0);
oled.print("Программный ");
}
if (digitalRead(switchPin_Rotation_Free) == LOW && digitalRead(switchPin_Rotation_Cyclic) == HIGH)
{
//switchPin_Rotation_Free
oled.home(); // курсор в 0,0
oled.print("Режим:"); //1 строка 6 символов
oled.setCursor(60, 0);
oled.print("Свободный ");
if (enc1.isRight()) // если был поворот направо
{
oled.setCursor(0, 3);
oled.print("Вращение - Вправо "); //20 символов хорошо видно
Serial.println("Right");
//delay(10000);
}
if (enc1.isLeft()) // если был поворот налево
{
oled.setCursor(0, 3);
oled.print("Вращение - Влево "); //20 символов хорошо видно
Serial.println("Left");
//delay(10000);
}
else
{
//oled.setCursor(0, 3);
//oled.print(" "); //20 символов хорошо видно
//Serial.println("None");
}
//oled.setCursor(0, 3);
//oled.print("Вращение - Вправо"); //20 символов хорошо видно
//oled.setCursor(0, 4);
//oled.print("Вращение - Влево"); //20 символов хорошо видно
}
if (digitalRead(switchPin_Rotation_Free) == HIGH && digitalRead(switchPin_Rotation_Cyclic) == LOW)
{
//switchPin_Rotation_Cyclic
oled.home(); // курсор в 0,0
oled.print("Режим:"); //1 строка 6 символов
oled.setCursor(60, 0);
oled.print("Цикличный ");
}
if (digitalRead(switchPin_Rotation_Free) == LOW && digitalRead(switchPin_Rotation_Cyclic) == LOW)
{
//NONE
oled.home(); // курсор в 0,0
oled.print("Режим:"); //1 строка 6 символов
oled.setCursor(60, 0);
oled.print("Отсутствует ");
}
if (digitalRead(ENCODER_SW) == LOW)
{
oled.setCursor(0, 5);
oled.print("Тест ENCODER_SW LOW "); //20 символов хорошо видно
}
if (digitalRead(ENCODER_SW) == HIGH)
{
oled.setCursor(0, 5);
oled.print("Тест ENCODER_SW HIGH "); //20 символов хорошо видно
}
}