Форум обсуждения оборудования  

Вернуться   Форум обсуждения оборудования "Умный дом" > Разное > Курилка

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.04.2018, 12:06   #61
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,231
Вес репутации: 9430
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Еще два пина это кнопка, ее тоже можно подключить через резистор
Название: энкодер.png
Просмотров: 33

Размер: 59.1 Кб
Admin вне форума   Ответить с цитированием
Старый 17.04.2018, 13:15   #62
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,231
Вес репутации: 9430
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Хотя кнопку лучше повесить на другой пин. Так как если понадобится вращение с нажатием, то вышеприведенная схема не будет работать в этом режиме
Admin вне форума   Ответить с цитированием
Старый 17.04.2018, 14:39   #63
sana555
Senior Member
 
Регистрация: 22.09.2017
Сообщений: 304
Вес репутации: 0
sana555 is an unknown quantity at this point
По умолчанию

В протеусе не нашел энкодера, поэтому наколхозил такую схему, с помощью моторчика:

Только как применить вашу схему к моей, мне невдомек..

Последний раз редактировалось sana555; 17.04.2018 в 14:47.
sana555 вне форума   Ответить с цитированием
Старый 17.04.2018, 15:47   #64
sana555
Senior Member
 
Регистрация: 22.09.2017
Сообщений: 304
Вес репутации: 0
sana555 is an unknown quantity at this point
По умолчанию

Вот так?:

Кнопка нужна...
sana555 вне форума   Ответить с цитированием
Старый 17.04.2018, 20:07   #65
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,231
Вес репутации: 9430
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Я не представляю как это должно работать
Кнопку можно повесить на любой вход
Хотя тогда экономи всего 1 вывод контроллера и получаем геморой.
Проще тогда как и задумывалось на цифровые пины подключить
Admin вне форума   Ответить с цитированием
Старый 24.04.2018, 14:57   #66
sana555
Senior Member
 
Регистрация: 22.09.2017
Сообщений: 304
Вес репутации: 0
sana555 is an unknown quantity at this point
По умолчанию

Цитата:
Хотя тогда экономи всего 1 вывод контроллера и получаем геморой.
Пока не знаю буду ли использовать нажатие при поворачивании рукоятки (скорее всего нет), поэтому все таки допилил схему и исполнил свою модель энкодера в протеусе. Хотя, экономия даже в один пин - это уже экономия - два энкодера - экономия уже на 2 пина...
Моторчик сейчас служит для имитации крутилки и для включения/отключения двух релюшек. А с релюшек и кнопки уже идут аналоговые сигналы на ардуино. В общем все работает как нужно:


Демонстрационный скейтч (если кому нужен):

Развернуть для просмотра

Код:
byte EncoderRead;
byte EncoderState;
byte EncoderLastState;
byte EncoderCode;
byte EncoderRot;

//демонстрация
byte up;
byte dw;
byte sw;

void setup() {
  Serial.begin(9600); 
}

void loop() {  
  EncoderRead = analogRead(A5)/4; // 127(148) (148- примерно центр между 127 и 170) 170(180) (-/-) 191(223) (-/-) 255
                                  // делим на 4 для простоты  
  if (EncoderRead < 223) {sw=0;} //если кнопка не нажата, то обнуляем значение                              
  if (EncoderRead > 25) { //если что то нажато:        
    if (EncoderRead < 148) {EncoderState = 1;} //замкнут первый резистор(2,49В)
    if (EncoderRead >= 148 && EncoderRead < 180) {EncoderState = 2;} //замкнут второй резистор(3,33В)
    if (EncoderRead >= 180 && EncoderRead < 223) {EncoderState = 3;} //замкнуто оба резистора(3.74В)
    if (EncoderRead >= 223) {EncoderState = 4;} //нажата кнопка
    
    if (EncoderState != EncoderLastState) { //если возникло новое состояние
      EncoderCode = EncoderCode * 10 + EncoderState; //записываем в EncoderCode последовательность возникновения EncoderState
      if (EncoderCode == 13 || EncoderCode == 32) { // вычисляется последовательность вправо: 132(13 или 32) или влево: 231(23 или31) 
        EncoderRot = 1;
        EncoderCode = 0;
      }
      if (EncoderCode == 23 || EncoderCode == 31) {
        EncoderRot = 2;
        EncoderCode = 0;
      }      
      if (EncoderCode == 4) { //если нажата кнопка
        EncoderRot = 3;
        EncoderCode = 0;
      } 
      if (EncoderCode > 33) { //если какой то глюк
        EncoderRot = 0;
        EncoderCode = 0;
      }      
      EncoderLastState = EncoderState;
    }
  }
  else { //обнуляем переменные
    EncoderCode = 0;
    EncoderState = 0;
    EncoderLastState = 0;
  }   

//демонстрация: 

  if (EncoderRot == 1) {
    EncoderRot = 0;
    up++;   
  }
  if (EncoderRot == 2) {
    EncoderRot = 0;
    dw++;    
  }  
  if (EncoderRot == 3) {
    EncoderRot = 0;
    sw=1;  
  }

    Serial.print("UP=");
    Serial.print(up);
    Serial.print(" DOWN=");
    Serial.print(dw);
    Serial.print(" SWITCH=");  
    Serial.println(sw);
//    Serial.print("  ");
//    Serial.println(analogRead(A5));
[свернуть]

Последний раз редактировалось sana555; 24.04.2018 в 15:02.
sana555 вне форума   Ответить с цитированием
Старый 24.04.2018, 15:57   #67
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,231
Вес репутации: 9430
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Класс , а я думал что не разберешься как считывать показания энкодера с аналогового входа.
Если вращение с нажатием не нужно, то можно сделать так, нажатие а потом вращение без нажатия. Только нужно отображать на дисплее режим энкодера
Можно оба энкодера повесить на 1 аналоговый вход
И конденсатор лучше поменьше емкость поставить 0,01мкф
Admin вне форума   Ответить с цитированием
Старый 24.04.2018, 16:42   #68
sunny
Senior Member
 
Аватар для sunny
 
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 1,330
Вес репутации: 1390
sunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to all
По умолчанию

Ладно ... с ними с пинами...
Сделали - отлично..
Давайте выкладывайте рецепты домашней колбасы , хлеба, грибов, пива, табака .... и еще чего там есть в наличии с рецептурами и видео
Так как на пенсию ничего не заработано (30 лет "реформ" - ..пта) - будет чем заняться, маленький интернет магазинчик.
И сосиски - Home Made © и табак с подоконника...
===
Какой "Умный дом" - без жратвы , для курилки в самый раз
__________________
Читаю ваши мысли по аватару ...

Последний раз редактировалось sunny; 24.04.2018 в 16:47.
sunny вне форума   Ответить с цитированием
Старый 24.04.2018, 16:52   #69
sana555
Senior Member
 
Регистрация: 22.09.2017
Сообщений: 304
Вес репутации: 0
sana555 is an unknown quantity at this point
По умолчанию

Цитата:
Если вращение с нажатием не нужно, то можно сделать так, нажатие а потом вращение без нажатия. Только нужно отображать на дисплее режим энкодера
Да, действительно, так даже удобнее, чем держать нажатую кнопку и крутить, спасибо за совет..
Цитата:
Можно оба энкодера повесить на 1 аналоговый вход
Теперь представляю как - поиграться с резисторами.
Цитата:
И конденсатор лучше поменьше емкость поставить 0,01мкф
А с этим пока не разобрался, для чего и куда его на моей схеме поставить(перед резистором на аналоговом входе, судя по вашей схеме, которая выше?)?
Цитата:
Давайте выкладывайте рецепты домашней колбасы , хлеба, грибов, пива, табака .... и еще чего там есть в наличии с рецептурами и видео

Если потом действительно будет нужно, на пенсии, я с удовольствием выложу:

Развернуть для просмотра






[свернуть]

Последний раз редактировалось sana555; 24.04.2018 в 17:06.
sana555 вне форума   Ответить с цитированием
Старый 24.04.2018, 17:25   #70
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,231
Вес репутации: 9430
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Цитата:
А с этим пока не разобрался, для чего и куда его на моей схеме поставить(перед резистором на аналоговом входе, судя по вашей схеме, которая выше?)?
Конденсатор должен стоять параллельно аналоговому входу. Он для гашения дребезга контактов. Можно попробовать без него. Большая емкость будет долго заряжаться и тем самым будет не верный результат измерений
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 08:17. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика