[MBED] STM32 i SSD1306 – sterowanie dwukolorowym OLED [2]
Po każdym wyświetleniu jednego znaku na podstawie informacji o maksymalnych współrzędnych ekranu wyświetlacza (SSD1306_WIDTH i SSD1306_HEIGHT), oraz wartości argumentu size są wyliczane współrzędne kolejnego znaku. Jeżeli kolejny znak nie zmieści się w całości w linijce, to tekst jest automatycznie przenoszony na początek kolejnej linijki (CR, LF). Efekt działania krótkiego fragmentu programu z listingu 11 pokazano na fotografii 9.
List. 11. Wyświetlanie w trybie tekstowym
int main (void)
{
InitSSD1306 ();
DispTxt(0,0,"Test wyswietlacz",16,1);//znaki 16pikseli – obszar żółty
DispTxt(0,16,"Test wyswietlacz OLED",12,0);//znaki 12 pikseli – negatyw
DispTxt(0,32,"Sterownik ",16,1);//znaki 16 pikseli
DispTxt(76,36,"SSD1306",12,1);//znaki 12 pikseli
RefreshRAM(); //przepisz do sterownika SSD1306
while(1);
}
Wyświetlanie bitmap
Każda czcionka wyświetlana w trybie tekstowym jest bitmapą rysowaną na ekranie. Te bitmapy – wzorce znaków umieszczane są w tablicy generatora znaków i mają jednakowe wymiary. Jednak często zachodzi konieczność wyświetlania bitmap o różnych rozmiarach. Pewnym problemem jest konwertowanie monochromatycznych. Ja używam prostego programu bmp2c.exe potrafiącego konwertować monochromatyczne mapy o niewielkich rozmiarach na tablicę w języku C. Kiedy już mamy skonwertowana bitmapę, to procedura jej wyświetlania jest stosunkowo prosta – listing 12.
List. 12. Wyświetlenie bitmapy
//********************************************************************************
//rysuj bitmapę
//argumenty
//x,y współrzędne początku bitmapy
//*bmp wskaźnik na tablicę z przekonwertowaną bitmapą
//width - szerokość bitmapy
//height - wysokość bitmapy
//*********************************************************************************
void DrawBmp(uint8_t x, uint8_t y, const uint8_t *bmp, uint8_t width, uint8_t height)
{
uint16_t i, j, byteWidth = (width + 7) / 8;
for(j = 0; j < height; j ++){
for(i = 0; i < width; i ++) {
if(*(bmp + j * byteWidth + i / 8) & (128 >> (i & 7))) {
DrawPoint(x + i, y + j, 1);
}
}
}
}
Na fotografii 10 pokazano wyświetloną bitmapę, a na fotografii 11 kilka małych bitmap – ikon wyświetlanych w żółtym obszarze matrycy.




Technologie End of Life i bezpieczeństwo sieci – wyzwania Europy związane z tzw. długiem technologicznym
Najczęstsze błędy firm przy wyborze dostawcy energii i jak ich uniknąć
Fotorezystor, czyli czujnik światła dwojakiego działania. Przykład innowacji w automatyce i elektronice możliwej dzięki technologii fotooporników 



