имитация работы энкодера с помощь arduino

dido8884
Offline
Зарегистрирован: 12.07.2013

Хочу зделать веб интерфейс для AV ресивера. Первое, что меня останавливает, как с имитировать алгоритм работы энкодера.

Энкодер регулирует громкость.

Если есть у кого какие идеи помогите:)

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

можно и без ардуины обойтись. Все делается на нескольких триггерах

leshak
Offline
Зарегистрирован: 29.09.2011
dido8884
Offline
Зарегистрирован: 12.07.2013

ардуина все равно нужна, а на триггерах пока не представляю пока как это зделать.

dido8884
Offline
Зарегистрирован: 12.07.2013

с delay у меня не заработала

я как понял в один такт надо зажечь led1 (пусть на секунду) по истечению пол секунды должен загорется led2 и гореть тоже секунду но пока delay не пройдет код не выполняется соответственно LED2 загорится чер секунду.

leshak
Offline
Зарегистрирован: 29.09.2011

Не, понял, а в чем проблема? Если вам нужно что-бы led2 загорелся через пол секунды, ну так и сделайте после зажигания LED1 , delay(500), а потом зажгите LED2

dido8884
Offline
Зарегистрирован: 12.07.2013

все понял спасибо, буду пробовать:)

dido8884
Offline
Зарегистрирован: 12.07.2013

Вот что получилось http://youtu.be/UUT4gEdEtpQ еще раз спасибо, как всегда дело было не в бабине:)

вот скетч :

const int inA = 2;     // кнопка +
const int inB = 3;      // кнопка -
int outA = 4 ;
int outB = 5 ;
int valA = 0;    // переменная +
int valB = 0;    // переменная -


void setup() {
  
  pinMode(outA, OUTPUT);  
  pinMode(outB, OUTPUT);  
  pinMode(inA, INPUT);   
  pinMode(inB, INPUT);   
}

void loop(){
  
  valA = digitalRead(inA);
  valB = digitalRead(inB);
  
  if (valA == HIGH)
  {     
       
    digitalWrite(outA, HIGH);
    delay(40);
    digitalWrite(outB, HIGH);
    delay(40);
    digitalWrite(outA, LOW);
    delay(40);
    digitalWrite(outB, LOW);
  } 
  
 if (valB == HIGH)
  {     
       
    digitalWrite(outB, HIGH);
    delay(40);
    digitalWrite(outA, HIGH);
    delay(40);
    digitalWrite(outB, LOW);
    delay(40);
    digitalWrite(outA, LOW);
  } 

 }

 

leshak
Offline
Зарегистрирован: 29.09.2011

Эмц.... "реле потише"... а зачем там вообще реле-то? Потому что были в загашнике?

dido8884
Offline
Зарегистрирован: 12.07.2013

На реле работает нормально т.е. При удержания кнопки громкость регулируется. А если применять оптопару pc817
То надо нажимать каждый раз .

leshak
Offline
Зарегистрирован: 29.09.2011

Вопрос был не "работает ли реле?" (по видео видно что работает) и не "почему именно реле?". Вопрос был "а зачем вообще реле?". Для чего оно вообще в схеме присутсвует? Какую задачу решает?

Почему вообще нельзя его "выкинуть" и все подсоеденить напрямую?  (понимаю что "нельзя", но вопрос именно в том "почему нельзя" в вашем конкретном случае).

dido8884
Offline
Зарегистрирован: 12.07.2013

Теперь понятно. Надо попробовать.:)

leshak
Offline
Зарегистрирован: 29.09.2011

dido8884 пишет:
Теперь понятно. Надо попробовать.:)

Стоп. Что понятно? Лично мне - ничего не понятно (даже как вы подключили реле. то есть я могу догадыватся, но...).

Я же вопрос задал, а не сказал "сделайте".

Прежде чем что-то делать - нужно понять какую функцию выполняют реле в данный момент. Ну, как минимум померять какие напряжения/ток они коммутируют.

А уж исходя из этого можно задуматся либо о полном их упразнении, либо о более адекватной замене (в любом случае "реле", в данном случае, мне кажется неуклюжим решением).

А "выкинуть их не думая" - это может повезет, а может контроллер упалим :(