Счётчик с интервалом

Aklay
Offline
Зарегистрирован: 17.03.2018

Здравствуйте коллеги. Прошу помощи в написании кода для ардуино так как я новичок и только учусь писать скетчи. Нужно сделать счётчик от  до 0 с -1 через каждый 2000мкс или направьте на похожую тему если таковой есть в форуме

Aklay
Offline
Зарегистрирован: 17.03.2018

Aklay пишет:

Здравствуйте коллеги. Прошу помощи в написании кода для ардуино так как я новичок и только учусь писать скетчи. Нужно сделать счётчик от  до 0 с -1 через каждый 2000мкс или направьте на похожую тему если таковой есть в форуме

Кстати все это надо сделать без использование delay

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015
qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Aklay. Я понимаю что вы гений. Но пожалуста попробуй-те внятно написать ,что вам надо. А то у вас получилось тоже самое что у кота. https://www.youtube.com/watch?v=MS4BHYn4wHs

Aklay
Offline
Зарегистрирован: 17.03.2018

qwone пишет:

Aklay. Я понимаю что вы гений. Но пожалуста попробуй-те внятно написать ,что вам надо. А то у вас получилось тоже самое что у кота. https://www.youtube.com/watch?v=MS4BHYn4wHs

 

Есть диммер который меняет свое значение от 255 до 0 (мин 255, макс 0 для нагрузки). Хочу сделать так что бы каждый 2000мкс от 255 отнималось 1, перезаписывал текущее значение то есть 254, через 2000мкс еще раз -1 и так до 0-а

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
/**/
unsigned long mill; // переменная под millis()
//--------------------------------
//---Компоновка-----------------------------
const byte pin = 9;
byte state;
unsigned long past = 0;

//---main-----------------------------
void setup() {
  analogWrite(pin, state = 255);
}
void loop() {
  mill = millis();
  if (mill - past >= 2) {
    past = mill;
    if (state == 0)state = 255;
    else --state;
    analogWrite(pin, state);
  }
}
/*Скетч использует 1042 байт (3%) памяти устройства. Всего доступно 30720 байт.
  Глобальные переменные используют 18 байт (0%) динамической памяти, оставляя 2030 байт для локальных переменных. Максимум: 2048 байт.
*/

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Зачем для uint8_t делать if (state == 0)state = 255; ?