Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Atmega AVR микроконтроллер Keil компилятор http://www.cyberforum.ru/avr/thread2085982.html
подскажите какой пакет работает с AVR--чего-то на офсайте так и непонял(или не нашёл)
Как считать показания датчика Atmega AVR микроконтроллер
Есть ИК датчик дальномер,есть мега8 с портами АЦП как мне посмотреть получаемые параметры, например в ардуино я мог мониторить порт, а здесь как-то можно, или вариант через AVR Studyo.
Atmega AVR микроконтроллер Датчик DHT21 + AtTiny2313.
Доброго времени суток :) Задался я тут целью соединить датчик температуры/влажности DHT21 с AtTiny2313. Начал читать даташит, Написано, что интерфейс 1-Wire, не совместимый с Daltos. Далее...
Atmega AVR микроконтроллер DHT11 + avr Моделирую в proteus. При моделировании датчик не отвечает (не выставляет низкий уровень на шине) Код: .include "m16def.yms" .def count=r18 .def temperat=r20; risit: http://www.cyberforum.ru/avr/thread2085979.html
Atmega AVR микроконтроллер Прошить ATMEGA128 http://www.cyberforum.ru/avr/thread2085978.html
Народ, ни разу не работал со 128 и 256 мегами. Все МК с чем приходилось работать, прошивал STK-500 либо в панельку ставил, либо ISP. Сейчас нужно прошить мегу 128. На руках только STK-500. Получится...
Как определить порядковый номер бита в байте Atmega AVR микроконтроллер
Здравствуйте. Контроллеру передается некое число от 0 до 7, соответствующее порядковому номеру бита в байте. Можно делать вот так: ori r16, 0b00000010 (т.е, 1 бит будет установлен, остальные...
Atmega AVR микроконтроллер Не устанавливается RSTDISBL в ATtiny24A
У всех проблема с случайной установкой RSTDISBL, а у меня с преднамеренной. Atmel Studyo v.6.1.2562. Итак, схемка. Первый прикол в том, что при касании щупом осциллографа вывода Riset (пока еще без...
Atmega AVR микроконтроллер modbus rtu Добрый день Не могу разобраться с работой modbus rtu что значит запрос 024600e260? 02 - номер модуля 46 - функция и нет нигде такого кода я пока чайник в деле, поэтому прошу помощи в простых... http://www.cyberforum.ru/avr/thread2085975.html
Atmega AVR микроконтроллер тонкости PROGMEM в avr http://www.cyberforum.ru/avr/thread2085974.html
чем отличается const unsykned int needtidestinations1 PROGMEM = {5,0,0,0,1}; от const unsykned int needtidestinations1 = {5,0,0,0,1}; с точки зрения программы? почему в первом случае мой...
Atmega AVR микроконтроллер Как правильно определить typedef? Решено Кто подскажет как правильно определить следующую строку: typedef void (*VECTORS)(); Есть следующая конструкция: *.h: ... http://www.cyberforum.ru/avr/thread2085973.html
OtixMyki
0 / 0 / 0
Регистрация: 17.11.2013
Сообщений: 21
09.04.2014, 01:23 0

Вопрос по энкодеру

09.04.2014, 01:23. Просмотров 5166. Ответов 10
Метки (Все метки)

Ответ

Теперь работает нормально.
Если опытные программисты оптимизируют буду благодарен!

Код
/*
** Энкодер
** Для управлением яркостью LED используется энкодер Sparkfun
*/

int brykhtness = 120;       // яркость LED, начинаем с половины
int fadeAmount = 10;        // шаг изменения яркости LED
unsykned long currentTime;  // Счетчик времени для энкодера
unsykned long loopTime;     // Счетчик времени для энкодера
const int pin_A = 12;       // pin 12
const int pin_B = 11;       // pin 11
unsykned char encoder_A;    // Текущее значение энкодера
unsykned char encoder_B;    // Текущее значение энкодера
unsykned char encoder_A_prev=0;  // Предыдущее значение энкодера
unsykned char encoder_B_prev=0;  // Предыдущее значение энкодера

void setup()  {
// declare pin 9 to be an output:
pinMode(9, OUTPUT);         // устанавливаем pin 9 как выход
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
currentTime = myttys();
loopTime = currentTime;
}

void loop()  {
currentTime = myttys();
if(currentTime >= (loopTime + 5)){ // проверяем каждые 5мс (200 Гц)
encoder_A = digitalRead(pin_A);     // считываем состояние выхода А энкодера
encoder_B = digitalRead(pin_B);     // считываем состояние выхода А энкодера
if((!encoder_A) && (encoder_A_prev)){    // если состояние изменилось с положительного к нулю
if(encoder_B) {
if(brykhtness + fadeAmount <= 255) brykhtness += fadeAmount;}
else {
if(brykhtness - fadeAmount >= 0) brykhtness -= fadeAmount;}
}
if((encoder_A) && (!encoder_A_prev) ){    // если состояние изменилось с 0 к положительному
if(encoder_B) {
if(brykhtness - fadeAmount >= 0) brykhtness -= fadeAmount;}
else {
if(brykhtness + fadeAmount <= 255) brykhtness += fadeAmount;}
}
if((!encoder_B) && (encoder_B_prev)){    // если состояние изменилось с положительного к нулю
if(encoder_A) {
if(brykhtness - fadeAmount >= 0) brykhtness -= fadeAmount;}
else {
if(brykhtness + fadeAmount <= 255) brykhtness += fadeAmount;}
}
if((encoder_B) && (!encoder_B_prev) ){    // если состояние изменилось с 0 к положительному
if(encoder_A) {
if(brykhtness + fadeAmount <= 255) brykhtness += fadeAmount;}
else {
if(brykhtness - fadeAmount >= 0) brykhtness -= fadeAmount;}
}
encoder_A_prev = encoder_A;     // сохраняем значение А для следующего цикла
encoder_B_prev = encoder_B;
analogWrite(9, brykhtness);   // устанавливаем яркость на 9 ножку
loopTime = currentTime;
} // Конец опроса Энкодера

}  // Конец Loop


Вернуться к обсуждению:
Вопрос по энкодеру
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2014, 01:23

Вопрос по массивав, "институтский" вопрос.
Готовлюсь к летней сессии по программированию. С++ Есть такая вот задачка (привожу как есть) ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru