Библиотека энкодера Encod_er.h
- Войдите на сайт для отправки комментариев
Чт, 08/06/2017 - 15:41
Здравствуйте, при написании скетча столкнулся с проблеммой, не могу понять как вставить условие, точнее какой оператор применить. В 19 и 29 строках вместо вопросов? Этот скетч и библа взяты отсюда: http://mypractic.ru/urok-55-rabota-s-inkrementalnym-enkoderom-v-arduino-biblioteka-encod_er-h.html#comment-5255
#include <TimerOne.h> #include <Encod_er.h> Encod_er encoder( 11, 12, 4); void setup() { Serial.begin(9600); // инициализируем порт, скорость 9600 Timer1.initialize(250); // инициализация таймера 1, период 250 мкс Timer1.attachInterrupt(timerInterrupt, 250); // задаем обработчик прерываний } void loop() { if(encoder.timeRight != 0) { Serial.print("R="); Serial.print(encoder.timeRight); Serial.print(" Pos="); if(encoder.read() >= 4095){ ??? = 4095; } Serial.println(encoder.read()); // вывод текущего положения encoder.timeRight= 0; } if(encoder.timeLeft != 0) { Serial.print("L="); Serial.print(encoder.timeLeft); Serial.print(" Pos="); if(encoder.read() <= 0){ ??? = 0; } Serial.println(encoder.read()); // вывод текущего положения encoder.timeLeft= 0; } } // обработчик прерывания 250 мкс void timerInterrupt() { encoder.scanState(); }
Т.е. Вы скачали скетч и ... вставили туда точки ... ? Зачем? Что Вы ообще делаете и что должен делать этот скетч?
Нет конечно.. Я испульзую этот скетч в своем проекте. Изначально 18-20 и 28-30 строк там нет . Мне нужно сделать ограничение что бы крутя энкодер я не опускался ниже нуля и не поднимался выше 4095. В тексте статьи написано
"long position – текущее положение энкодера. Может быть прочитано или записано.
long read() – метод чтения положения энкодера. Возвращает переменную position."
Но я не пойму какой синтаксис оператора position. При эксперементировании я добавил в свой проект вот такие строки
Вообщем то получилось, но не совсем так как хотелось, действительно ограничивается 0 - 4095, но запоминается количество щелчков сверх лимита и приходится вертеть энкодер в обратную сторону столько раз сколько раз прокрутил лишка. Ранее я пользовался другой библой для энкодера, но сейчас приходится этой так как она нормально без проблемм заработала с другими устройствами у меня на I2C. Если необходимо я могу выложить и весь проек, он небольшой.
Arduino nano +TFT+ ADC +DAC+Encoder. Энкодер задатчик для ЦАП.
Что Вы делаете в строках 110 и 114?
Думаю, там надо писать
encoder.position = ....
...
encoder.position = ....
Пробовал, "Nano_TFT_Encoder:110: error: expected initializer before '.' token
Не понял, как Вы написали? Можно текст программы.
Не понял, как Вы написали? ..
Спасибо, првильно выраженное недоумение.. это и есть ответ. :-)
Так правильно работает.
long encoder.position = 819; Так не правильно.
Странный Вы человек. Я же Вам писал в посте №3 безо всякого long. Зачем Вы его добавили? :)
Конец рабочего дня, пустой желудок.. , да еще долбанный ПЛК "Овен" глюканул остановил котельную..
Понятно, ну удачи Вам! Проблема кочилась? Всё нормально?
Уважаемый друг. Не могли бы вы поделиться со мной библиотекой encod_er.h . Мозг сломал. Не могу понять куда она делась. И найти нигде не могу..