Ostatnio pracowałem hobbystycznie nad sterownikiem pasków ledowych RGB i przy okazji opracowałem wyświetlanie bargraphów na wyświetlaczach HD44780. No i właśnie tym chcę się z Wami podzielić ( za darmo ). Pewnie można będzie to i owo poprawić, ale to już pozostawiam dociekliwym. Poniżej prezentuję ciało funkcji:
Kod: Zaznacz cały
void HD44780_bargraph(int8_t x, int8_t y, uint8_t length, uint16_t value, uint16_t max)
{
uint32_t strips = length * 5;
uint32_t valPerStrip = max * 100UL / strips;
uint32_t barLength = value * 100UL / valPerStrip;
HD44780_goto(x, y);
HD44780_putc('['); //left margin
do
{
if (barLength > 4)
{
HD44780_putc(5);
barLength -= 5;
}
else
{
HD44780_putc(barLength);
barLength -= barLength;
}
} while (--length);
HD44780_putc(']'); //right margin
}
Ok, a więc x i y to współrzędne początkowe bargraphu. Length to długość bargraphu. Do długości należy doliczyć prawy znak ograniczający bargraph.
Następny parametr to value, czy wartość, którą chcemy wyświetlić. Ostatni parametr (max) określa, jaka wartość value będzie uznawana jako maksymalna.
Miłego korzystania z tego kawałka kodu.