Цитата:
Сообщение от dk-fsb
а поподробней схему сборки и прошивку. если не трудно  я думаю многим бы пригодилось
|
это скетч поправленный вместо сворачиваний по ссылке
PHP код:
//GENMC.ru управление мультимедиа при помощи энкодера
#define BTN_pin 8 // pin 8 кнопка энкодера SW
const int pin_A = 10; // pin 10 нога энкодера CLK
const int pin_B = 9; // pin 9 нога энкодера DT
unsigned char encoder_A; //переменная
unsigned char encoder_B; //переменная
unsigned char encoder_A_prev=0; //переменная
#define BTN_pin1 5 // pin 5 кнопка энкодера SW1
const int pin_A1 = 6; // pin 6 нога энкодера DT1
const int pin_B1 = 7; // pin 7 нога энкодера CLK1
unsigned char encoder_A1; //переменная1
unsigned char encoder_B1; //переменная1
unsigned char encoder_A_prev1=0; //переменная1
uint32_t vibor = 0; //Здесь будем хранть время
int perek = 0; //переменная переключатель
void setup() {
digitalWrite(BTN_pin, 1); //подтяжка кнопки энкодера
pinMode(pin_A, INPUT); //пины энкодера объявляем входами
pinMode(pin_B, INPUT); //пины энкодера объявляем входами
digitalWrite(BTN_pin1, 1); //подтяжка кнопки энкодера1
pinMode(pin_A1, INPUT); //пины энкодера объявляем входами1
pinMode(pin_B1, INPUT); //пины энкодера объявляем входами1
}
void loop()
{
//////////////ЭНКОДЕР 1///////////
{ encoder_A = digitalRead(pin_A); // считываем состояние выхода А энкодера
encoder_B = digitalRead(pin_B); // считываем состояние выхода B энкодера
if((!encoder_A) && (encoder_A_prev)){ // если состояние изменилось с положительного к нулю
if(encoder_B)
{
Remote.increase(); //отправляем команду громкость выше
Remote.clear(); //очищаем команду
}
else {
Remote.decrease(); //отправляем команду громкость ниже
Remote.clear(); //очищаем команду
}
}
encoder_A_prev = encoder_A; // сохраняем значение А для следующего цикла
}
if(digitalRead(BTN_pin)==LOW) //Если кнопка нажата то делаем то что ниже.
{
Remote.mute(); //отправляем команду убрать звук
Remote.clear(); //очищаем команд
delay(500); //Делаем небольшую задержку чтоб не засыпало командами.
}
//////////ЭНКОДЕР 2//////////////
{ encoder_A1 = digitalRead(pin_A1); // считываем состояние выхода А энкодера
encoder_B1 = digitalRead(pin_B1); // считываем состояние выхода B энкодера
if((!encoder_A1) && (encoder_A_prev1)){ // если состояние изменилось с положительного к нулю
if(encoder_B1)
{
Remote.next(); //отправляем команду слудующая песня
Remote.clear(); //очищаем команду
}
else {
Remote.previous(); //отправляем команду предыдущая песня
Remote.clear(); //очищаем команду
}
}
encoder_A_prev1 = encoder_A1; // сохраняем значение А для следующего цикла
}
if(digitalRead(BTN_pin1)==LOW) //Если кнопка нажата то делаем то что ниже.
{
Remote.play_pause(); //отправляем команду плей пауза
Remote.clear(); //очищаем команд
delay(500); //Делаем небольшую задержку чтоб не засыпало командами.
}
}