1 Nazwa implementacji: Wyświetlanie figur - e-Swoi

Transkrypt

1 Nazwa implementacji: Wyświetlanie figur - e-Swoi
Nazwa implementacji: Wyświetlanie figur geometrycznych, wyświetlanie bitmap Autor: Łukasz Ciężki Opis implementacji:
Implementacja zawiera zastosowanie funkcji rysowania figur geometrycznych i bitmap do wyświetlenia obrazu w systemie PAL z
wykorzystaniem Arduino lub AVR
Wyświetlaliśmy już tekst i zmienne, czemu nie wyświetlić prostych figur geometrycznych?
Do wyboru mamy funkcje:
TV.draw_line(x1,y1,x2,y2,kolor) - rysuje linie od punktu(x1,y1) do punktu (x2,y2), przy czym dla koloru 0 - czarny, 1 - biały, 2 - inwersja
TV.draw_column(nr_kolumny,y1,y2,kolor) - rysuje kolumnę (pionową linię) od punktu y1 do y2 TV.draw_row(nr_linii,x1,x2,kolor) - rysuje wiersz
(poziomą linię) od punktu x1 do x2 TV.draw_rect(x,y,wysokosc,szerokosc,kolor_obramowania,kolor_wypełnienia) - rysuje prostokąt na pozycji
(x,y). Jeżeli kolor_wypełnienia jest nieokreślony, prostokąt nie ma wypełnienia
TV.draw_circle(x,y,promien,kolor_obramowania,kolor_wypelnienia) - rysuje koło na pozycji (x,y). Jeżeli kolor_wypelnienia jest nieokreślony,
koło nie ma wypełnienia (rysowany jest okrąg) TV.bitmap(x,y,nazwa_bitmapy) - rysuje określoną bitmapę
Drobna uwaga - pozycja (x,y) kwadratu to punkt w jego lewym-górnym rogu, zaś pozycja (x,y) koła to jego środek.
Przykładowo: chcemy narysować kwadrat, w którym jest wpisane koło. Kwadrat jest oddalony od lewej krawędzi ekranu o 30 pikseli i od
górnej o 10 pikseli. Kwadrat ma bok równy 20 pikselom.
#include <TVout.h>
#include <fontALL.h>
TVout TV;
void setup() {
TV.begin(PAL,120,96);
}
void loop() {
TV.draw_rect(30,10,20,20,1);
TV.draw_circle(40,20,10,1,1);
for(;;);
}
Efekt:
1
Projekt “Strategia Wolnych i Otwartych Implementacji jako innowacyjny model zainteresowania kierunkami informatyczno-technicznymi oraz wspierania uczniów i uczennic w
kształtowaniu kompetencji kluczowych” współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego.
Zauważmy, że ekran jest rozciągnięty poziomo - wynika to z określonej przez nas roździelczości. Oczywiście możemy zmodyfikować ją, jednak
musimy pamiętać o naszej pamięci RAM - przy wyższej roździelczości może jej zabraknąć.
Przejdźmy teraz do bitmap - jedna bitmapa jest już zawarta w bibliotekach (TVOlogo), możemy ją teraz narysować:
void loop() {
TV.bitmap(0,0,TVOlogo);
for(;;);
}
Efekt:
2
Projekt “Strategia Wolnych i Otwartych Implementacji jako innowacyjny model zainteresowania kierunkami informatyczno-technicznymi oraz wspierania uczniów i uczennic w
kształtowaniu kompetencji kluczowych” współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego.
Możemy równie dobrze rysować swoje bitmapy:
void loop() {
TV.bitmap(20,22,rufus);
for(;;);
}
Efekt:
3
Projekt “Strategia Wolnych i Otwartych Implementacji jako innowacyjny model zainteresowania kierunkami informatyczno-technicznymi oraz wspierania uczniów i uczennic w
kształtowaniu kompetencji kluczowych” współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego.
Bitmapy można albo pisać (co jest dość pracochłonne) albo rysować w programie graficznym, a następnie konwertować bitmapę MSB LSB
Pozostałe funkcje biblioteki TVout do rysowania:
• set_pixel(x,y,kolor) - ustawia piksel o pozycji (x,y) na dany kolor (0 - czarny, 1 - biały, 2 - inwersja)
• get_pixel(x,y) - zwraca wartość koloru piksela o pozycji (x,y)
• fill(kolor) - wypełnia cały ekran jednym kolorem
• shift(odleglosc,kierunek) - przesuwa ekran o odleglosc w wyznaczonym kierunku (góra - 0, dół - 1, lewo - 2, prawo - 3
4
Projekt “Strategia Wolnych i Otwartych Implementacji jako innowacyjny model zainteresowania kierunkami informatyczno-technicznymi oraz wspierania uczniów i uczennic w
kształtowaniu kompetencji kluczowych” współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego.