Teraz postaram się dodać obsługę dużej ilości sprzętu i interfejsów. Aktualnie pracuję nad ukończeniem obsługi wyświetlaczy segmentowych oraz nad przepisaniem ich do języka C.
Zasada działania takich wyświetlaczy nie jest skomplikowana: Jest 7 LEDów i w zależności od tego do
którego LEDa wyślemy sygnał, ten się zaświeci. Wyświetlacze segmentowe dzielą sie na:
> Ze wspólną anodą
> Ze wspólną katodą
W wyświetlaczach ze wspólną anodą, występują dwa piny odpowiedzialne za zasilanie wyświetlacza(wspólna anoda) a reszta odpowiada za wysterowanie odpowiedniego segmentu. Aby takim wyświetlaczem sterować wykorzystując Arduino potrzeba podłączyć wspólną anodę do pinu 5V a resztę do pinów wejścia/wyjścia. Mając tak podłączony wyświetlacz możemy przystąpić do pisania kodu. Nie będzie to trudne, zwykłe wyprowadzanie sygnałów, jednak trzeba mieć na uwadze, to że w wyświetlaczach ze wspólną anodą stan niski zapali dany segment a wysoki zgasi. Wynika to, z budowy pinu. Może on będąc w stanie niskim może "ciągnąć ładunek", czyli pełnić rolę pinu GND.
Kod będzie wyglądał tak(zapalenie segmentu A):
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int a = 13; | |
pinMode(a, OUTPUT); // inicjacja pinu | |
digitalWrite(a, LOW); // oddanie stanu niskiego | |
delay(100); // 100ms przerwy | |
digitalWrite(a, HIGH); | |
delay(100); // 100ms przerwy |
Jak widać steruje się nim tak jak LED RGB ale z wspólną anodą. Sytuacja się odwraca w wyświetlaczach ze wspólną katodą. Tutaj podłączamy wspólną katodę do GND a resztę to pinów we/wy. Jeśli stan jest wysoki to segment się zapali, jak niski - zgaśnie. Tutaj zamiast "ciągnąć ładunek", Arduino oddaje, tworząc pełny obwód elektryczny. Kod nie zmieni się znacznie:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int a = 13; | |
pinMode(a, OUTPUT); // inicjacja pinu | |
digitalWrite(a, HIGH); // oddanie stanu wysokiego | |
delay(100); // 100ms przerwy | |
digitalWrite(a, LOW); // oddanie stanu niskiego | |
delay(100); // 100ms przerwy |
Link do commita(niedługo dodam jeszcze jeden): Klik me!
Co do zmian w projekcie dodałem nowe gałęzie: Release---C i Debug---C. Będe tam umieszczał kod w czystym C. Bez bibliotek od Arduino. Pozwoli mi to na zmniejszenie rozmiaru projektu, przez co więcej będe mógł dodać.
Brak komentarzy:
Prześlij komentarz