AFON // радиотехник affonya@mail.ru
← Все проекты для дронов

Индикатор газа (VU)

Столбик светодиодов, показывающий текущий уровень газа.

DMC.44 · Индикация и сигнал · ATmega328P

Задача

Отобразить уровень газа (1000..2000 мкс) четырьмя светодиодами.

Алгоритм

Перевод значения газа в число зажжённых светодиодов (0..4) линейной шкалой.

Исходный код (C, avr-gcc)

⇩ Скачать 44-throttle-vu.c

#ifndef F_CPU
#define F_CPU 16000000UL
#endif

#include <avr/io.h>
#include <util/delay.h>
int main(void){
  DDRD|=0x3C;
  volatile uint16_t thr=1000;
  for(;;){
    uint8_t n=(thr-1000)/250; if(n>4)n=4;
    uint8_t mask=0; for(uint8_t i=0;i<n;i++) mask|=(1<<(PD2+i));
    PORTD=(PORTD&~0x3C)|mask;
    thr+=100; if(thr>2000) thr=1000;   // демо-развёртка
    _delay_ms(300);
  }
}

Сборка: avr-gcc -mmcu=atmega328p -DF_CPU=16000000UL -Os файл.c -o файл.elf

Пояснения

Наглядно на стенде и при настройке кривой газа. Светодиоды на PD2..PD5.