Программирование

Вопросы по программированию Arduino.

Измерение времени прерывания

Имеется такой вопрос: как посчитать время, в течении которого программа выполняет внешние прерывание, в микросекундах?

Азы - debounce

Добрый день, недавна начал изучать ардуино по книге Джеремми Блума. Повторно вернулся к теме дребезга контактов, хочу попросить разъеснения простым языком следующей части кода...

 

Вот весь супер код дебоунса :

Как установить 0 (ноль) вольт на DAC

Добрый!

Есть Дуе. 

Надо установить 0 на ЦАП. 

int i = 0;
void setup() {
Serial.begin(9600);
analogWriteResolution(12);
}
void loop() {
    if (Serial.available() > 0) {
      i = Serial.parseInt ();
      Serial.println ( i );
      analogWrite ( DAC1,i);
      delay (3000);
      analogWrite ( DAC1,0);
    }
}

Ожидал, что при analogWrite ( DAC1,0); напряжение между землей и ДАС1 будет равно 0 (нулю), но минимильное мапряжение равно 0.557 в. 

Вытянуть из байта полубайт или сложить полубайты

Задача такая. Имеем сообщение допустим из 4 байт :  0x02  0x10  0xB3  0x3A

Опытным путем выяснил, что в него забита проверка контрольной суммы. Контрольной суммой является правый полубайт (как правильно младший?) последнего байта, т.е. полубайт "A"

этот "A" должен быть равен последнему правому полубайту (младшему) результата выражения:   полубайт E минус сумма всех предыдущих полубайт, т.е. Е - (0+2+1+0+B+3+3)=E-14=FFFFFFFFFFFFFFFA, вот он младший полубайт "А" - совпадает. 

Снятие показаний с датчика Холла автомобиля

volatile float lastflash;
int RPM;

void setup() {
  Serial.begin(9600);  //открыть порт
  attachInterrupt(0,sens,RISING); //подключить прерывание на 2 пин при повышении сигнала

}
void sens() {
  

  RPM=(15000000/(micros()-lastflash));   //4 сигнала за один оборот
    lastflash=micros();  //запомнить время последнего оборота
}

void loop() {
  if ((micros()-lastflash)>1000000){ //если сигнала нет больше секунды
    RPM=0;  //считаем что RPM 0
  }
  Serial.println(RPM);   //вывод в порт

}

Регулировка громкости зуммера

Как можно программно регулировать громкость зуммера.

Библиотека toneAC не подходит занят 16 битный таймер.

Почему не читает G и B

При попытке закинуть число в виде R200 оно записывается и работает а G и B ждет пока считается но не считывается. 

Подскажиет как сделать, чтобы правильно работала схема?

Здравствуйте, подскажите как написать скетч?

Нужно подать внешнее питание (в размере 5 вольт постоянного тока) на два пина, на каждый из пинов  ардуино через резистор на 10кОМ допустим к цифровому пину 2 и к пину 4, "плюс" подать на вход а "минус" на GND ардуино. При этом когда на оба пина подается пять вольт на выходе 9 должен быть шим сигнал но не сплошным тоном.

Первое условие, если пропадают 5 вольт на пине №2, то подать "еденицу" на выход 7 и одновременно на выход 9 подать шим сигнал.

Часы на ГРИ. Как прикрутить некоторые функции?

Как в этот скетч прикрутить подачу сигнала каждый полный час? Хочу сделать меню чтобы биппер включался от логической еденицы. Например: часы на ГРИ 4 индикатора при начатии кнопки SET сначало включаслось: 1. Настройка времени, 2. Установка биппера вкл/выкл, 3. Отображение формата времени 12/24, 4. Защита от выгорания катодов.

RFID аутентификация или 1001 проблема

Здравствуйте.

Нужно было сделать так, чтобы ардуинка записывала кое-какие данные на nfc карту, нашёл в интернетах исходник, схожий по назначению с моей целью и попытался переделать.

Что изменил: добавил либы для взаимодействия с экраном и переделал стандарный 12 F ключ на тот, который используется конкретно у меня в карте (тот костыль на switch'e). 

Итак, тот костыль вводит ключ B для сектора 8, a = 786D80C7B832, b = 86FD651B5E98

Проблема: в мониторе порта выходит ошибка аутентификации