#include <Servo.h>
#include <Encoder.h>
const int CLK = 2;
const int DT = 3;
const int SW = 4;
int push = 5;
int counter = 0;
int lastStateClk;
Servo myServo;
void setup() {
Serial.begin(9600);
myServo.attach(9);
pinMode(CLK, INPUT);
pinMode(DT, INPUT);
pinMode(push, INPUT_PULLUP);
lastStateClk = digitalRead(CLK);
}
void loop() {
int currentStateCLK = digitalRead(CLK);
if (currentStateCLK != lastStateClk) {
if (digitalRead(DT) != lastStateClk){
counter++;
}
else {
counter --;
}
}
lastStateClk = currentStateCLK;
if (counter > 180) {
counter = 180;
}
if (counter < 0) {
counter = 0;
}
myServo.write(counter);
int button = digitalRead(push);
if (button != HIGH) {
counter = 0;
}
Serial.println(counter);
}
//Задание 1
//Цифровые порты вывода позволяют управлять состоянием внешних устройств, они являются основным способом взаимодействия с внешними устройствами
//Цифровые порты могут находиться в одном из двух состояний HIGH(включено), LOW(Выключено). Настройка порта осуществляется
//с помощью функции PinMode - OUTPUT. Управление с помощью функций digitalWrite. Или analogWrite для аналоговых.
//Задание 2
//Кроме стандартных функций в библиотеке ардуино существуют и дугие библиотеки для управления внешними устройстввами и считывания с них данных
//Библиотека FastLED и NeoPixel позволяет управлять адресными светодиодами. Библиотека Servo серводвигателем, библиотека wire позволяет управлять устройствами I2C,
//библиотека SPI используется для связи с высокоскоростными устройствами(дисплеи, карты памяти), Adafruit GFX для работы с TFT и сенсорными дисплеями
//для сложных устройств намного практичнее использовать специальные библиотеки