Скетчи можно скачать в теме поддержки на форуме. Там же все вопросы по работе схемы: forum.cxem.net/index.php?/topic/177136-подключаем-энкодер-к-ардуино/ Раздел с сотнями проектов на Arduino на сайте: cxem.net/arduino/arduino.php
Энкодер, который крутится вручную, - не такой критически важный и скоростной элемент, чтобы использовать прерывания. На платах Arduino прерывания можно навесить чаще всего только на 2 пина.
тут я немного не соглашусь - если основной задачей ардуино будет обработка энкодера - то тогда да - смысла использовать прерывания нет - но если написать скетч который выполняет очень много задач в цикле, а энкодер используется допустим для подстройки и очень редко - то лучше использовать прерывание иначе реакция на энкодер будет очень медленной - но и ограничение в 2 прерывание в принципе можно обойти
Ваш код не эффективен, т.к. прибавление и вычитание у вас происходит в основном цикле и счёт происходит не быстрее чем частота циклов. Это должно быть к коде прерывания вместо того, что у вас. Вывод на экран нет необходимости делать каждый цикл, достаточно раз в 100-200 мс. У вас это сильно тормозит цикл.
Заходим в ардуино.иде управление библиотеками, набираем "encoder", находим encoder step counter, ставим и наслаждайтесь. Да vcc надо подключить к +5v тоже.
А выложите пожалуйста урок про решение уравнений равновесия схемы на основе законов Ома и Кирхгофа. А то в интернете не нашёл информации на примитивно-понятном языке. Заранее спасибо
А как быстро можно крутить что бы Ардуино смог считать импульсы без пропусков? мне нужно сделать счётчик импульсов, и энкодер в нём будет крутиться очень быстро. Точно не знаю, но несколько десятков килогерц думаю точно будет... Сможет ли он считать эти данные на таких скоростях? И вообще какая максимальная скорость считывания у Ардуино? Видео полезное. 👍👍👍. Спасибо за него. Ставлю большой ЛАЙК
Проверил все варианты, не подходят для моего энкодера. У моего не 4е шага за раз, а два, то есть фиксированные позиции 00 и 11. По приведённым кодам у меня счет по два шага с кодом для плавного и с последним кодом считает не на каждый тик, а через один. Как подправить? Разобрался. Надо в LOOP добавить делитель int enc_value = value/2; или просто закомментить valueDec(); и valueInc(); в первом и третьем блоках. Вариант с делителем предпочтительнее, не дает ложного прибавления или вычитания. Второй вариант будет прибавлять или вычитать при не полном шаге.
я сам не знаю что не пошло, я поставил кнопку тоже на прерывание с параметром FALLING и контроллер стал подвисать. Честно, я даже не стал разбираться что не так ибо в моем проекте кнопка не нужна и я просто плюнул на это. А вот сам энкодер работает хорошо. А так просто интересуюсь на будущее.
Здравствуйте, в чем может быть проблема, повторяю второй скетч из видео( энкодер с фиксированными позициями), у меня идет отсчет только в отрицательную сторону, считает только в одну сторону. Думал энкодер поломанный, загрузил первый скетч, все работает, считает и в плюс и в минус но считает не корректно, если медленно крутить. Короче энкодер рабочий, а все равно только в 1 сторону считает. Где искать решение ?
есть ещё проще обработчик энкодера . любой из концевиков энкодера цепляем на аппаратное прерывание ардуинки. а в обработчике прерывания смотрим на значения со второго концевика , если там ноль то крутили в одну сторону а если один то в другую . и ничего запоминать не надо , и в цикле опрашивать тоже , а если поставить аппаратный тригер на концевик который на прерывание работает , то можно и мотором крутить ни разу не собъется ------------- сори не заметил пост Дениса
Вот как раз при использовании прерываний дребезг проявляет себя во всей красе, ибо не фильтруется низкой частотой опроса. Я проводил много экспериментов перед тем, как усложнять обработку (в видео это не попало). Ну и такая примитивная обработка уменьшает разрешение для многих энкодеров. В видео пример есть.
в современных мышках колесо мыши выполнено либо в исполнении энкодера либо стоит оптопара( светодиод и фотодиод) между которыми колесо на котом прорези. при вращении колеса получаются импульсы.
В общем у меня задача сделать прибор для измерения микрон... я думал применить для этого энкодер от струйного принтера (тот, что прозрачным диском сделан)...
Скетчи можно скачать в теме поддержки на форуме. Там же все вопросы по работе схемы: forum.cxem.net/index.php?/topic/177136-подключаем-энкодер-к-ардуино/
Раздел с сотнями проектов на Arduino на сайте: cxem.net/arduino/arduino.php
Хорошо и познавательно. А на счёт управление блоком реле с помощью энкодера. Подскажите?
Спасибо за видео
есть ещё способ использование энкодера в ардуино - используя прерывание, мне кажется это более правильный способ
#include
LiquidCrystal_I2C lcd(0x3F, 20, 4);
int Count=0;
const int PinCLK = 2;
const int PinDT = 4;
volatile boolean TurnDetected;
volatile boolean up;
void encoder(){
volatile boolean CLK = digitalRead(PinCLK);
volatile boolean DT = digitalRead(PinDT);
up=((!CLK && DT)||(CLK && !DT));
TurnDetected = true;
}
void setup() {
lcd.begin();
lcd.clear();
lcd.home();
pinMode(PinCLK, INPUT);
pinMode(PinDT, INPUT);
attachInterrupt(0,encoder,CHANGE);
}
void loop() {
lcd.setCursor (0,0);
lcd.print(Count);
lcd.print(" ");
if (TurnDetected) {
if (up){
Count++;
}
else
Count--;
TurnDetected = false;
}
}
Энкодер, который крутится вручную, - не такой критически важный и скоростной элемент, чтобы использовать прерывания. На платах Arduino прерывания можно навесить чаще всего только на 2 пина.
тут я немного не соглашусь - если основной задачей ардуино будет обработка энкодера - то тогда да - смысла использовать прерывания нет - но если написать скетч который выполняет очень много задач в цикле, а энкодер используется допустим для подстройки и очень редко - то лучше использовать прерывание иначе реакция на энкодер будет очень медленной - но и ограничение в 2 прерывание в принципе можно обойти
Если ввод начинает тормозить, то опрос устройств ввода по прерываниям таймера.
@@СанСаныч-я8о, можете на примере скетча научить как это делать? Начинающий. Еще не сталкивался с этим финтом.
Ваш код не эффективен, т.к. прибавление и вычитание у вас происходит в основном цикле и счёт происходит не быстрее чем частота циклов. Это должно быть к коде прерывания вместо того, что у вас. Вывод на экран нет необходимости делать каждый цикл, достаточно раз в 100-200 мс. У вас это сильно тормозит цикл.
В прямом направлении по положительному фронту, а в обратном - по отрицательному?
Спасибо. Только ваш код и заработал как надо!
Заходим в ардуино.иде управление библиотеками, набираем "encoder", находим encoder step counter, ставим и наслаждайтесь. Да vcc надо подключить к +5v тоже.
Что необходимо изменить в скетче для появления десятичного значения? То есть надо изменять значения шагом 0,25.
Чем отличаются предоставленные вами энкодеры ?
А выложите пожалуйста урок про решение уравнений равновесия схемы на основе законов Ома и Кирхгофа. А то в интернете не нашёл информации на примитивно-понятном языке. Заранее спасибо
А как быстро можно крутить что бы Ардуино смог считать импульсы без пропусков?
мне нужно сделать счётчик импульсов, и энкодер в нём будет крутиться очень быстро.
Точно не знаю, но несколько десятков килогерц думаю точно будет...
Сможет ли он считать эти данные на таких скоростях?
И вообще какая максимальная скорость считывания у Ардуино?
Видео полезное. 👍👍👍.
Спасибо за него.
Ставлю большой ЛАЙК
Проверил все варианты, не подходят для моего энкодера. У моего не 4е шага за раз, а два, то есть фиксированные позиции 00 и 11. По приведённым кодам у меня счет по два шага с кодом для плавного и с последним кодом считает не на каждый тик, а через один. Как подправить? Разобрался. Надо в LOOP добавить делитель int enc_value = value/2; или просто закомментить valueDec(); и valueInc(); в первом и третьем блоках. Вариант с делителем предпочтительнее, не дает ложного прибавления или вычитания. Второй вариант будет прибавлять или вычитать при не полном шаге.
а можно Вас попросить о помощи???мне нужно управлять шаговым двигателем с помощью энкодера и выставлять шаг и скорость???
Автор ответь пожайлуста !!!!
Как подключить энкодер к Arduino pro micro???я начинающий ничего не понимаю
Пж скажи что такое двигатель с энкодером (в нем 5 контактов)
А кнопка на энкодере? Я делал через прерывания и для борьбы с дребезгом использовал триггер Шмидта. А вот с кнопкой что то не пошло :(
Для кнопки код будет в одном из следующих видео на нашем канале.
я сам не знаю что не пошло, я поставил кнопку тоже на прерывание с параметром FALLING и контроллер стал подвисать. Честно, я даже не стал разбираться что не так ибо в моем проекте кнопка не нужна и я просто плюнул на это. А вот сам энкодер работает хорошо. А так просто интересуюсь на будущее.
У меня проблема с энкодером на муз. центре. Работал, спустя некоторое время стал отскакивать назад. Причина в нем или в коде?
Роман Ионов контакты стерлись. Можно разобрать и немного подогнуть их
хорошо, попробую
Здравствуйте, в чем может быть проблема, повторяю второй скетч из видео(
энкодер с фиксированными позициями), у меня идет отсчет только в
отрицательную сторону, считает только в одну сторону. Думал энкодер
поломанный, загрузил первый скетч, все работает, считает и в плюс и в
минус но считает не корректно, если медленно крутить. Короче энкодер
рабочий, а все равно только в 1 сторону считает. Где искать решение ?
там есть. 3 типа
здравсвуйте скаже пажалуста как замерить ток трансформатора тестором ?
провода самодельные или готовые? у меня тока f-f
Готовые.
есть ещё проще обработчик энкодера . любой из концевиков энкодера цепляем на аппаратное прерывание ардуинки.
а в обработчике прерывания смотрим на значения со второго концевика , если там ноль то крутили в одну сторону а если один то в другую . и ничего запоминать не надо , и в цикле опрашивать тоже , а если поставить аппаратный тригер на концевик который на прерывание работает , то можно и мотором крутить ни разу не собъется
-------------
сори не заметил пост Дениса
Вот как раз при использовании прерываний дребезг проявляет себя во всей красе, ибо не фильтруется низкой частотой опроса. Я проводил много экспериментов перед тем, как усложнять обработку (в видео это не попало).
Ну и такая примитивная обработка уменьшает разрешение для многих энкодеров. В видео пример есть.
Как заменить 2 кнопки "-" и "+" энкодера?!
В компьютерных мышах тоже энкодер есть?
qwe qwe да, колесо мыши на энкодере
В старых с колесиками. В оптических нет.
есть и в новых,точнее в очень новых, где есть еще колесико сверху.
Паяльник TV Мы про одни и те же колесики говорим?Про те,которыми,например, страницы в браузере вверх вниз крутить?
в современных мышках колесо мыши выполнено либо в исполнении энкодера либо стоит оптопара( светодиод и фотодиод) между которыми колесо на котом прорези. при вращении колеса получаются импульсы.
В общем у меня задача сделать прибор для измерения микрон...
я думал применить для этого энкодер от струйного принтера (тот, что прозрачным диском сделан)...
Может пригодится ua-cam.com/video/E-AIr5Sfj9E/v-deo.html на 16:50 в видео говорится о импульсах
Сейчас хотя бы узнал, как он называется. А то резисторами кличал)
Такая же фигня
а в скетче делить на 4))))