Proszę Jacku, zaznaczyłem odpowiedzialną za to część czerwoną elipsą:
To będzie lekcja 8 :
Nasz programik potrafi wyswietlać na LCD tylko pojedyńcze znaki - korzystamy w tym celu oczywiście z funkcji bajt_lcd()
Przydałaby się funkcja wyświetlająca całe wyrazy ... żeby to zrobić musicie poznać Tablice ... Przykłady zapisu deklaracji tablicy:Pierwsze to tablica o nazwie "tablica" składająca sie z 10 elementów char (czyli 8 bitowych),
Drugie to tablica, o któej nic nie wiadomo z ilu elementów sie składa, wiadomo natomiast że składa się z wartości int (czyli 16 bitowych).
Przy zapisie wyrazów(a nawet zdań) będziemy korzystać z tablic, które składają się ze znaków czyli char.
tworzy tablicę o nazwie tab 12 elementową, bo jest 11 znaków + ostatni dodawany automatycznie - znacznik końca tablicy "\0" - specjalnie napisałem \0 to nie pomyłka. 0 (samo zero) potraktowane zostanie jako kolejny element tablicy - czyli znak ASCII o kodzie 48 (jeśli nie wiecie co to tablica znaków ASCII to poszukajcie w necie - przyda sie wam).
Wracamy do naszego ostatniego przykładu tablicy ... Jesli w kodzie swojego programu umieścicie definicje tej tablicy a po niejto wyświetli wam czwarty znak tablicy (bo numeracja zaczyna sie od "0" ) - czyli literę i.
Jeśli umieścicie w kodzieto Atmega prześle do wyświetlacza pierwszy znak tablicy (czyli "j"), a następnie ósmy znak z tablicy (czyli "y").
Czyli już wiecie że liczba w nawiasie kwadratowym określa nam który znak z tablicy będzie brany pod uwagę.
Co zrobic by wyświetlały się całe tablice znaków (czyli całe napisy). Wklejcie na samym końcu kodu progrramu (przed ostatnim nawiasem klamrowym) to :skompilujcie i uruchomcie, a zobaczycie efekt. Tłumaczę linijka po linijce co to znaczy:
1. definiujemy tablice znaków o nazwie tab i treści to jest napis (+ znacznik końca tablicy czyli zero, którego tu nie widzimy - ale zawsze na końcu każdej tablicy jest)
2. deklarujemy, że będziemy używac zmiennej i która początkowa wartość będzie równa 0
3. pętla while będzie wykonnywać polecenia pomiędzy nawiasami klamrowymi do momentu kiedy i-ty element tablicy będzie zerem - czyli znacznikiem końca tablicy. Dokładnie zappis ten oznacza "wykonaj jesli i-ty element tab jest różny od zera. != oznacza "różny" (nierówny)
5. wyślij do lcd i-ty element tablicy (pamiętamy że przy deklaracji ustawiliśmy wartość i na 0, więc zacznie wyświetlać od pierwszego (zerowego dla Atmegi) elementu tablicy
6. zwiększ wartość i o 1.
Potem pętla wraca do ponownego sprawdzenia warunku czy i-ty (następny) element tablicy nie jest już zerem czyli znacznikiem końca tablicy. Mam nadzieję że to zrozumiecie ... Spróbujcie to uruchomic u siebie a ja jutro wstawie nowa wersję obsługi wyświetlacza. Jesli wstawicie zamiast i=i+1; to: i=i+2; to wyświetli Wam oczywiście co drugi znak tablicy ... jednak może przeoczyć znacznik końca tablicy !
To będzie lekcja 8 :
Nasz programik potrafi wyswietlać na LCD tylko pojedyńcze znaki - korzystamy w tym celu oczywiście z funkcji bajt_lcd()
Przydałaby się funkcja wyświetlająca całe wyrazy ... żeby to zrobić musicie poznać Tablice ... Przykłady zapisu deklaracji tablicy:
Kod:
char tablica[10];
int liczby[];Drugie to tablica, o któej nic nie wiadomo z ilu elementów sie składa, wiadomo natomiast że składa się z wartości int (czyli 16 bitowych).
Przy zapisie wyrazów(a nawet zdań) będziemy korzystać z tablic, które składają się ze znaków czyli char.
Kod:
char tab[]="jakis_wyraz"Wracamy do naszego ostatniego przykładu tablicy ... Jesli w kodzie swojego programu umieścicie definicje tej tablicy a po niej
Kod:
bajt_lcd(tab[3]);Jeśli umieścicie w kodzie
Kod:
bajt_lcd(tab[0]);
bajt_lcd(tab[7]);Czyli już wiecie że liczba w nawiasie kwadratowym określa nam który znak z tablicy będzie brany pod uwagę.
Co zrobic by wyświetlały się całe tablice znaków (czyli całe napisy). Wklejcie na samym końcu kodu progrramu (przed ostatnim nawiasem klamrowym) to :
Kod:
char tab[]="to jest napis";
int i=0;
while(tab[i]!=0)
{
bajt_lcd(tab[i]);
i=i+1;
}1. definiujemy tablice znaków o nazwie tab i treści to jest napis (+ znacznik końca tablicy czyli zero, którego tu nie widzimy - ale zawsze na końcu każdej tablicy jest)
2. deklarujemy, że będziemy używac zmiennej i która początkowa wartość będzie równa 0
3. pętla while będzie wykonnywać polecenia pomiędzy nawiasami klamrowymi do momentu kiedy i-ty element tablicy będzie zerem - czyli znacznikiem końca tablicy. Dokładnie zappis ten oznacza "wykonaj jesli i-ty element tab jest różny od zera. != oznacza "różny" (nierówny)
5. wyślij do lcd i-ty element tablicy (pamiętamy że przy deklaracji ustawiliśmy wartość i na 0, więc zacznie wyświetlać od pierwszego (zerowego dla Atmegi) elementu tablicy
6. zwiększ wartość i o 1.
Potem pętla wraca do ponownego sprawdzenia warunku czy i-ty (następny) element tablicy nie jest już zerem czyli znacznikiem końca tablicy. Mam nadzieję że to zrozumiecie ... Spróbujcie to uruchomic u siebie a ja jutro wstawie nowa wersję obsługi wyświetlacza. Jesli wstawicie zamiast i=i+1; to: i=i+2; to wyświetli Wam oczywiście co drugi znak tablicy ... jednak może przeoczyć znacznik końca tablicy !

