Пишу код на ардуино, раз в 1 мс подаю ток на нужный мне пин пусть это делает функция pin()
function pin(){
digitalWrite(x,HIGH); delay(1); digitalWrite(x,LOW);
}
bool fade = true;
byte PAUSE_FADE = 255;
long lastFade = 0;
function show(bool fade0 = false){
if(fade0) fade = fade0;
if(fade){
if ((millis() - lastFade) > PAUSE_FADE){
lastFade = millis();
PAUSE_FADE--;
pin();
if(PAUSE_FADE == 0) {
fade = false;
PAUSE_FADE = 255;
}
}else delay(1);
}else pin();
}
Необходимо записать в глобальную переменную данные для активности Fade(плавной подачи импульса).
Долгий delay() использовать нельзя.
Задача в том чтобы при изменении какого то значения я мог вызвать функцию show(true) с параметром true один раз, то в дальнейшем импульсы подавались реже чем раз в 1мс (появлялись пропуски) и с течением времени плавное увеличение частоты выполнения функции pin(); , но тем неменее функция show() без параметров вызывается в цикле программы.
Нужно использовать прерывание по таймеру.
Задаём квант приращения. Например, 1 мс. Удобно, если он будет равен времени высокого уровня на пине.
Задаём минимальное и максимальное время между импульсами.
Задаём флаг состояния: 0 - ничего не делать, 1 - увеличивать время, -1 - уменьшать.
Устанавливаем время срабатывания таймера, равное кванту приращения.
Разрешаем прерывания.
В обработчике прерывания от таймера проверяем состояние и либо увеличиваем, либо уменьшаем время, либо ничего не делаем. И переводим пин в высокий или низкий уровень, в зависимости от того, в каком он состоянии сейчас (это вместо вызова функции pin()).
Теперь можно из основного цикла скетча вызывать фейды, меняя состояние переменной состояния.
Добрый деньЯ начинаю осваивать Android Api и хочу вывести строку на экране телефона через консоль ПК, связанные через USB
Всем саламВ приложения для загрузки и вывода изображений использую picasso
занёс в базу три строки, помогите вытянуть их таким методом из базы в три textView
В методе Main в цикле While есть вызывается класс proverkaВ этом классе есть break, который выводит нас из цикла, если возвращается true