17.04.2018, 12:06 | #61 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Еще два пина это кнопка, ее тоже можно подключить через резистор
|
17.04.2018, 13:15 | #62 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Хотя кнопку лучше повесить на другой пин. Так как если понадобится вращение с нажатием, то вышеприведенная схема не будет работать в этом режиме
|
17.04.2018, 14:39 | #63 |
Senior Member
Регистрация: 22.09.2017
Сообщений: 338
Вес репутации: 442 |
В протеусе не нашел энкодера, поэтому наколхозил такую схему, с помощью моторчика:
Только как применить вашу схему к моей, мне невдомек.. Последний раз редактировалось sana555; 17.04.2018 в 14:47. |
17.04.2018, 15:47 | #64 |
Senior Member
Регистрация: 22.09.2017
Сообщений: 338
Вес репутации: 442 |
|
17.04.2018, 20:07 | #65 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Я не представляю как это должно работать
Кнопку можно повесить на любой вход Хотя тогда экономи всего 1 вывод контроллера и получаем геморой. Проще тогда как и задумывалось на цифровые пины подключить |
24.04.2018, 14:57 | #66 | |
Senior Member
Регистрация: 22.09.2017
Сообщений: 338
Вес репутации: 442 |
Цитата:
Моторчик сейчас служит для имитации крутилки и для включения/отключения двух релюшек. А с релюшек и кнопки уже идут аналоговые сигналы на ардуино. В общем все работает как нужно: Демонстрационный скейтч (если кому нужен): Развернуть для просмотраКод:
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. |
|
24.04.2018, 15:57 | #67 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Класс , а я думал что не разберешься как считывать показания энкодера с аналогового входа.
Если вращение с нажатием не нужно, то можно сделать так, нажатие а потом вращение без нажатия. Только нужно отображать на дисплее режим энкодера Можно оба энкодера повесить на 1 аналоговый вход И конденсатор лучше поменьше емкость поставить 0,01мкф |
24.04.2018, 16:42 | #68 |
Senior Member
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 1,534
Вес репутации: 1601 |
Ладно ... с ними с пинами...
Сделали - отлично.. Давайте выкладывайте рецепты домашней колбасы , хлеба, грибов, пива, табака .... и еще чего там есть в наличии с рецептурами и видео Так как на пенсию ничего не заработано (30 лет "реформ" - ..пта) - будет чем заняться, маленький интернет магазинчик. И сосиски - Home Made © и табак с подоконника... === Какой "Умный дом" - без жратвы , для курилки в самый раз
__________________
Читаю ваши мысли по аватару ... Последний раз редактировалось sunny; 24.04.2018 в 16:47. |
24.04.2018, 16:52 | #69 | ||||
Senior Member
Регистрация: 22.09.2017
Сообщений: 338
Вес репутации: 442 |
Цитата:
Цитата:
Цитата:
Цитата:
Если потом действительно будет нужно, на пенсии, я с удовольствием выложу: Последний раз редактировалось sana555; 24.04.2018 в 17:06. |
||||
24.04.2018, 17:25 | #70 | |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Цитата:
|
|
Здесь присутствуют: 10 (пользователей: 0 , гостей: 10) | |
|
|