Обновить
99
0
Алекс@CyberBot

Инженер электронщик

Отправить сообщение

Еще решением может быть отключением прерывания и последующим включением после полной обработки. Например так:

ISR (PCINT1_vect) //Обработчик прерывания от пинов A1, A2, A3

{

uint8_t comb = bitRead(PINC, 3) << 2 | bitRead( PINC, 2)<<1 | bitRead(PINC, 1);

PCICR = 0b00000000; // PCICR |= (1<<PCIE1); Выключить прерывание PCINT1

INTstate=1;

}

Нужно же было писать в какой функции Вы хотели вставить switch. Я то подумал, что Вы предлагаете в прерывании его вставить. В главном цикле loop этот кусок кода всего лишь демонстрация, он потом выбрасывается от туда

Поэтому в нормальной программе если используется глобальная переменная как enc_state и в обработчике, и в основном теле программы, то код, который изменяет значение переменной в основной части лупа (обнуляет) должен быть закрыт DISABLE_INT() / ENABLE_INT() в противном случае даже в такой простой программе, все может легко сбиваться. То, что работает - подозреваю дело времени.

Так для этого есть специальный тип переменных volatile. Про swich вообще жесть, Вы похоже не в курсе как он работает и стоит ли его применять в этом случие. Прежде чем судить о правильности кода, лучше почитайте основы програмирования

У меня в прерывании обрабатывается вот так:

   if (comb == 7 && lastcomb == 3 && btn_press) //Если было отпускание кнопки, то проверяем ее предыдущее состояние 
   {
    if (millis() - timer > btn_long_push)         // проверяем сколько прошло миллисекунд
    {
      enc_state=4;                              // было длинное нажатие 
    } else {
             enc_state=3;                    // было нажатие 
            }
      btn_press=0;                           //обнулить статус кнопки
    }

Можно так же добавить обработку очень длинных нажатий

Все подвержено износу. Но вот колесики на мышках годами живут, а там инкрементальный энкодер

А Вы сначала сравните мой код с гайверовским, а потом напишите результат. Я проверял его код, работает крайне нестабильно

Я всего одним энкодером выбираю нужный мне режим светильника, регулирую яркость, регулирую температуру цвета и еще длинным нажатием могу выключить светильник. На потенциометре сможете это все сделать?

На видео настольная лампа электронщика с энкодером. В течении 1 недели смонтирую видео про него и выложу

Если в мышь установить потенциометр вместо энкодера, то он умрет через 1 неделю интенсивного использования.
Для исключения дребезга контактов программно нужна задержка и немного дополнительного кода. И это все равно не избавит от ошибок.
Слишком Вы упрощаете. Если посмотреть на библиотеку analogRead повнимательней, да еще добавить обработку всех считанных показаний потенциометра, то быстрее не получится. Тем более при каждом чтении на АЦП программно выдерживается пауза, для того что бы входной конденсатор разрядился

Сам сделал. Кольцо ws2812 на 45 светодиодов

Попробую повторить поделку, только на электромагнитах. Если все получится, то выложу все подробности
Еще можно так управлять калиткой:
Вопрос к установщикам. Мне так установили
Сейчас догадываюсь почему так получилось.
Я соединил одинаковые по цвету провода. черный-черный, коричневый-коричневый
Теперь смотрим на окна гостиной и видим, что выводы у рольставней правый и левый, а это означает, что у них при таком подключении будет вращение в разные стороны. Я когда реле подключал столкнулся с этой делемой.
Теперь Вы можете последовать моему опыту и подключить рольставни через реле
Каким образом? Проводка под напряжением только в момент поднятия и опускания.
Да и нужны они мне только для комфортного сна, так как так их можно автоматичеки открывать и закрывать по будильнику. В Москве летом в 4 утра уже светло
Здесь конкурент скорее «голубая таблетка» — отладочная плата на STM32 начального уровня

Только ценник в несколько раз выше
Вообще-то магнитное поле постоянного магнита не будет «вращаться» вместе с ним.
А как же по Вашему работают электромагнитные генераторы энергии? Как тогда работают синхронные двигатели, СРД?
Я думаю разницы нет какой магнит вращается, тут важна его масса
Шарик «висит» с огромным отклонением от вертикали. Что скажете?

А раскачивание полученного маятника не учитываете? Он же сразу не может стабилизироваться.

Вот доказательства из видео


Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность