====== ARM07 - Maticový LED zobrazovač ====== ^ Možný bodový zisk | 3+2+3 b | ^ Vzorový program | {{ :courses:b2m37mam:homeworks:arm07_led.matrix_example.zip | ARM07_LED.Matrix.zip}} | ^ Vzorový program - rozšíření | {{ :courses:b2m37mam:homeworks:arm07_led.matrix_example.zip | ARM07_LED.Matrix.zip}} | ===== Zadání a kritéria ===== * Navrhněte v jazyce C program ovládající maticový displej s 8x8 LEDkami * Na displeji zobrazte jeden z obrázků níže, 'X' značí svítící LED, případně si vymyslete vlastní tvary * Vykreslování na displej bude řídit časovač. Periodu obnovení zvolte takovou, aby se displej jevil statický tj. min 50 Hz na celý displej. XXXXXXXX -----X-- XXXXX--- XX------ X------X ----XXX- XXX--X-- X--XX--- X------X XXXX---X XXX---X- XX-X---- X------X X----X-X X------X X--XX-X- X------X X------X X------X X--X--X- X------X X-XX---X -X----X- ---XX-X- X------X X-XX---X --X--X-- ------X- XXXXXXXX XXXXXXXX ---XX--- ------XX Při volbě pinů zkontrolujte, zda-li jsou volné. Například k pinu PA5, který může být použit jako SCK pro SPI1, je již připojena LED1. Po připojení pinu ke vstupu ''DIN'' desky bude LEDkou limitováno napětí na přibližně 2 V (záleží na pull-up odporu), což je pod minimální úrovní logické jedničky a deska se zobrazovačem tak nebude reagovat. ===== Rozšíření A ===== * Základní program * Krátkým stiskem USER tlačítka (B1) budete přepínat mezi obrázky (1 b) * Dlouhým stiskem USER tlačítka aktivujte automatické přepínání mezi obrázky (1 b) * Přepínání deaktivujete následovným stiskem tlačítka (dlouhý nebo krátký) Pro snadnější detekci krátkých a dlouhých stisků můžete využít Input Capture módu některého z časovačů. Tlačítko USER sice není připojené k žádnému časovači, ale můžete ke vstupu některého časovače připojit propojkou. ===== Rozšíření B ===== * Rozšíření A * Přepínání obrázku bude animované. Obrázek se začne posouvat a prázdné místo doplněno pixely z dalšího obrázku (jako v zobrazovače v MHD). (1 b) * Přidejte ovládání pomocí UART (1 b) * Umožněte vložit nový obrázek nebo přepsat stávající. (1 b) * Navrhněte vlastní API pro příjem dat. Například: * Následující obrázek ''n'' (znak 'n' následovaný klávesou enter/znakem nového řádku) * Zapni animaci ''a'' * Nahraj obrázek ''uXXXXXXXXX------XX--...--XXXXXXXXX'' (znak 'u' následován 64 znaky s hodnotou pixelu). ===== Popis vzorového řešení ===== * Pinout: MATRIX --- Nucleo * VCC --- 5 V * GND --- GND * DIN --- PA7/D11 * CS --- PB6/D10 * CLK --- PB3/D3 * Ovládání * User Button (B1) * Krátký stisk --- přepni na další obrázek * Dlouhý stisk --- zapni/vypni automatické přepínání * Uart (115200n8) * ''h'' nápověda k ovládání * ''a'' zapni/vypni animování změny obrázku * ''n'' přepni na další obrázek * ''uIMG'' nahraj obrázek, ''u'' následováno 64 znaky bitmapy obrázku ''IMG'', ''X'' nebo ''x'' značí rozsvícený pixel, jakýkoliv jiný znak značí zhasnutý pixel