- 7-segmentowy i 4-cyfrowy 7-segmentowy moduł wyświetlacza:
- Podłączenie 4-cyfrowego modułu 7-segmentowego do Raspberry Pi:
- Programowanie Raspberry Pi:
- Czas wyświetlania na 4-cyfrowym 7-segmentowym przy użyciu Raspberry Pi:
Wszyscy wiemy, że Raspberry Pi to wspaniała platforma programistyczna oparta na mikroprocesorze ARM. Dzięki dużej mocy obliczeniowej potrafi zdziałać cuda w rękach elektroników lub studentów. Wszystko to jest możliwe tylko wtedy, gdy wiemy, jak sprawić, by współdziałał ze światem rzeczywistym i analizować dane za pomocą jakiegoś urządzenia wyjściowego. Istnieje wiele czujników, które mogą wykrywać określone parametry ze świata czasu rzeczywistego i przenosić je do świata cyfrowego i analizujemy je, oglądając je na ekranie LCD lub innym wyświetlaczu. Jednak używanie ekranu LCD z funkcją PI do wyświetlania niewielkiej ilości danych zawsze byłoby nieekonomiczne. W tym przypadku preferujemy alfanumeryczny wyświetlacz LCD 16x2 lub 7-segmentowy. Dowiedzieliśmy się już, jak korzystać z alfanumerycznego wyświetlacza LCD i jednosegmentowego 7-segmentowego wyświetlacza z Raspberry pi. Dzisiaj będziemyInterfejs 4-cyfrowy siedmiosegmentowy moduł wyświetlacza z Raspberry Pi i wyświetlaniem czasu.
Chociaż alfanumeryczny wyświetlacz LCD 16x2 jest znacznie wygodniejszy niż wyświetlacz 7-segmentowy, istnieje kilka scenariuszy, w których wyświetlacz 7-segmentowy byłby wygodniejszy niż wyświetlacz LCD. LCD ma tę wadę, że ma mały rozmiar znaków i będzie przesadą dla twojego projektu, jeśli planujesz tylko wyświetlić niektóre wartości liczbowe. 7-segmentowe mają również tę zaletę w przypadku słabego oświetlenia i można je oglądać pod większym kątem niż normalny ekran LCD. Więc zacznijmy to wiedzieć.
7-segmentowy i 4-cyfrowy 7-segmentowy moduł wyświetlacza:
Wyświetlacz 7-segmentowy składa się z siedmiu segmentów, a każdy segment ma wewnątrz jedną diodę LED, która wyświetla cyfry, podświetlając odpowiednie segmenty. Jeśli chcesz, aby 7-segmentowy wyświetlał liczbę „5”, musisz zaświecić segment a, f, g, c i d, ustawiając odpowiednie szpilki w górę. Istnieją dwa typy wyświetlaczy 7-segmentowych: ze wspólną katodą i ze wspólną anodą, tutaj używamy siedmiosegmentowego wyświetlacza ze wspólną katodą. Dowiedz się więcej o 7-segmentowym wyświetlaczu tutaj.
Teraz wiemy, jak wyświetlić żądany znak numeryczny na pojedynczym 7-segmentowym wyświetlaczu. Ale jest całkiem oczywiste, że potrzebowalibyśmy więcej niż jednego siedmiosegmentowego wyświetlacza do przekazywania wszelkich informacji zawierających więcej niż jedną cyfrę. Tak więc w tym samouczku będziemy używać 4-cyfrowego 7-segmentowego modułu wyświetlacza, jak pokazano poniżej.
Jak widać, są połączone ze sobą cztery siedmiosegmentowe wyświetlacze. Wiemy, że każdy moduł 7-segmentowy będzie miał 10 pinów, a dla 4 wyświetlaczy siedmiosegmentowych łącznie byłoby 40 pinów i byłoby gorączkowo, gdyby ktoś lutował je na płytce z kropkami, więc gorąco polecam każdemu zakup modułu lub stwórz własną płytkę PCB do korzystania z 4-cyfrowego 7-segmentowego wyświetlacza. Schemat połączeń dla tego samego pokazano poniżej:
Aby zrozumieć, jak działa 4-cyfrowy moduł siedmiosegmentowy, musimy spojrzeć na powyższe schematy, jak pokazano, piny A wszystkich czterech wyświetlaczy są połączone jako jeden A i to samo dla B, C…. aż do DP. Tak więc, w zasadzie, jeśli wyzwalacz A jest włączony, wszystkie cztery A powinny iść wysoko, prawda?
Ale tak się nie dzieje. Mamy dodatkowe cztery piny od D0 do D3 (D0, D1, D2 i D3), za pomocą których możemy kontrolować, który z czterech wyświetlaczy powinien mieć stan wysoki. Na przykład: Jeśli potrzebuję, aby moje wyjście było obecne tylko na drugim wyświetlaczu, to tylko D1 powinno być ustawione wysoko, podczas gdy inne piny (D0, D2 i D3) powinny być niskie. Po prostu możemy wybrać, który wyświetlacz ma być aktywny za pomocą pinów od D0 do D3 i jaki znak ma być wyświetlany za pomocą pinów od A do DP.
Podłączenie 4-cyfrowego modułu 7-segmentowego do Raspberry Pi:
Zobaczmy, jak, jak możemy połączyć ten 4-cyfrowy 7-segmentowy moduł z naszym Raspberry Pi. Moduł 7-segmentowy ma 16 pinów, jak pokazano poniżej. Twój moduł może mieć mniejszą liczbę, ale nie martw się, na pewno nadal będzie zawierał następujące elementy
- 7 lub 8 pinów segmentowych (tutaj piny zaczynające się od 1 do 8)
- Pin uziemienia (tutaj pin 11)
- 4-cyfrowe piny (tutaj piny od 13 do 16)
Poniżej przedstawiony jest schemat zegara cyfrowego Raspberry Pi łącząc 4-cyfrowy siedmiosegmentowy moduł wyświetlacza z Raspberry Pi:
Poniższa tabela pomoże również w wykonaniu połączeń i sprawdzeniu, czy są zgodne ze schematami pokazanymi powyżej.
S.Nr |
Numer GPIO Rsp Pi |
Numer PIN Rsp Pi |
Nazwa 7-segmentu |
7-segmentowy numer pinu (tutaj w tym module) |
1 |
GPIO 26 |
PIN 37 |
Segment a |
1 |
2 |
GPIO 19 |
PIN 35 |
Segment b |
2 |
3 |
GPIO 13 |
PIN 33 |
Segment c |
3 |
4 |
GPIO 6 |
PIN 31 |
Segment d |
4 |
5 |
GPIO 5 |
PIN 29 |
Segment e |
5 |
6 |
GPIO 11 |
PIN 23 |
Segment f |
6 |
7 |
GPIO 9 |
PIN 21 |
Segment g |
7 |
8 |
GPIO 10 |
PIN 19 |
Segment DP |
8 |
9 |
GPIO 7 |
PIN 26 |
Cyfra 1 |
13 |
10 |
GPIO 8 |
PIN 24 |
Cyfra 2 |
14 |
11 |
GPIO 25 |
PIN 22 |
Cyfra 3 |
15 |
12 |
GPIO 24 |
PIN 18 |
Cyfra 4 |
16 |
13 |
Ziemia |
Ziemia |
Ziemia |
11 |
Zidentyfikuj piny w swoim module i możesz kontynuować połączenia. Wykrywanie pinów GPIO w Raspberry pi może być nieco trudnym zadaniem, więc przedstawiłem ci to zdjęcie dla pinów GPIO.
Programowanie Raspberry Pi:
Tutaj używamy języka programowania Python do programowania RPi. Istnieje wiele sposobów programowania Raspberry Pi. W tym samouczku używamy IDE Python 3, ponieważ jest ono najczęściej używane. Kompletny program Python jest podany na końcu tego poradnika. Dowiedz się więcej o Programowaniu i uruchamianiu kodu w Raspberry Pi tutaj.
Porozmawiamy o kilku poleceniach, których będziemy używać w programie PYHTON dla tego projektu, Najpierw zaimportujemy plik GPIO z biblioteki, poniższa funkcja umożliwia zaprogramowanie pinów GPIO PI. Zmieniamy również nazwę „GPIO” na „IO”, więc w programie zawsze, gdy będziemy chcieli odwołać się do pinów GPIO, użyjemy słowa „IO”. Mamy również importowane czas i datetime odczytać wartość czasu od Rsp Pi.
import RPi.GPIO jako czas importu GPIO, data i godzina
Czasami, gdy piny GPIO, których próbujemy użyć, mogą wykonywać inne funkcje. W takim przypadku podczas wykonywania programu będziemy otrzymywać ostrzeżenia. Poniższe polecenie mówi PI, aby zignorował ostrzeżenia i kontynuował program.
IO.setwarnings (fałszywe)
Możemy odnosić się do pinów GPIO PI, albo przez numer pinu na płycie, albo przez numer ich funkcji. Tak jak „PIN 29” na płycie to „GPIO5”. Więc mówimy tutaj albo będziemy reprezentować pinezkę jako „29” lub „5”. GPIO.BCM oznacza, że będziemy reprezentować za pomocą 5 dla pinu 29 GPIO5.
IO.setmode (GPIO.BCM)
Jak zawsze powinniśmy zacząć od inicjalizacji pinów, tutaj zarówno piny segmentu, jak i piny cyfrowe są pinami wyjściowymi. Dla celów programistycznych tworzymy tablice dla pinów segmentów i inicjalizujemy je na '0' po zadeklarowaniu ich jako GPIO.
segment8 = (26,19,13,6,5,11,9,10) dla segmentu w segmencie8: GPIO.setup (segment, GPIO.OUT) GPIO.output (segment, 0)
Podobnie w przypadku pinów cyfrowych deklarujemy je jako piny wyjściowe i domyślnie ustawiamy je na „0”
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) # Początkowo wyłączone #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) # Wyłącz początkowo #Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) # Początkowo wyłączone #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) # Początkowo wyłączone
Musimy utworzyć tablice, aby wyświetlić każdą liczbę na siedmiosegmentowym wyświetlaczu. Aby wyświetlić jeden numer, musimy kontrolować wszystkie 7 segmentów pinów (bez pinezki), to znaczy muszą być albo wyłączone, albo włączone. Na przykład, aby wyświetlić liczbę 5, wykonujemy następujący układ
S.Nr |
Numer GPIO Rsp Pi |
Nazwa 7-segmentu |
Status do wyświetlenia „5”. (0-> WYŁ., 1-> WŁ.) |
1 |
GPIO 26 |
Segment a |
1 |
2 |
GPIO 19 |
Segment b |
1 |
3 |
GPIO 13 |
Segment c |
0 |
4 |
GPIO 6 |
Segment d |
1 |
5 |
GPIO 5 |
Segment e |
1 |
6 |
GPIO 11 |
Segment f |
0 |
7 |
GPIO 9 |
Segment g |
1 |
Podobnie mamy numer porządkowy dla wszystkich liczb i alfabetów. Możesz pisać samodzielnie lub skorzystać z poniższej tabeli.
Na podstawie tych danych możemy utworzyć tablice dla każdej liczby w naszym programie w języku Python, jak pokazano poniżej.
null = zero = jeden = dwa = trzy = cztery = pięć = sześć = siedem = osiem = dziewięć =
Jeśli zastosujemy program będzie funkcją, aby wyświetlić każdy znak dla naszego 7-segmentowego wyświetlacza, ale pozwala pominąć to teraz i dostać się do while nieskończonej pętli. Gdzie odczytaj aktualny czas z Raspberry Pi i podziel wartość czasu między cztery zmienne. Na przykład, jeśli czas wynosi 10,45, to zmienna h1 będzie miała 1, h2 będzie miała 0, m1 będzie miało 4 v, a m2 będzie miało 5.
now = datetime.datetime.now () hour = now.hour minute = now.minute h1 = godzina / 10 h2 = godzina% 10 m1 = minuta / 10 m2 = minuta% 10 print (h1, h2, m1, m2)
Musimy wyświetlić te cztery wartości zmiennych odpowiednio na naszych czterech cyfrach. Aby zapisać wartość zmiennej do cyfry, możemy użyć następujących linii. Tutaj wyświetlamy cyfrę 1, ustawiając ją wysoko, a następnie zostanie wywołana funkcja print_segment (zmienna) , aby wyświetlić wartość zmiennej na wyświetlaczu segmentowym. Możesz się zastanawiać, dlaczego po tym mamy opóźnienie i dlaczego po tym wyłączamy tę cyfrę.
GPIO.output (7, 1) # Włącz cyfrę jeden print_segment (h1) # Drukuj h1 na czas segmentu. Sen (opóźnienie_czas) GPIO.output (7, 0) # Wyłącz cyfrę jeden
Powodem jest to, że, jak wiemy, możemy wyświetlić tylko jedną cyfrę na raz, ale mamy cztery cyfry do wyświetlenia i tylko wtedy, gdy wszystkie cztery cyfry są wyświetlane, pełny czterocyfrowy numer będzie widoczny dla użytkownika.
Jak więc wyświetlić wszystkie 4 cyfry w tym samym czasie ?
Na szczęście dla nas nasze MPU jest znacznie szybsze niż ludzkie oko, więc tak naprawdę robimy: wyświetlamy jedną cyfrę na raz, ale robimy to bardzo szybko, jak pokazano powyżej.
Wybieramy jedną cyfrę wyświetl, czekamy 2ms (zmienna delay_time), aby MPU i 7-segmentowe mogły ją przetworzyć, a następnie wyłączamy tę cyfrę i przechodzimy do kolejnej cyfry i robimy to samo, aż dotrzemy do ostatniej cyfry. To opóźnienie wynoszące 2 ms nie może być zaobserwowane przez ludzkie oko, a wszystkie cztery cyfry wydają się być włączone w tym samym czasie.
Ostatnią rzeczą, jakiej należy się nauczyć, jest wiedzieć, jak działa funkcja print_segment (zmienna) . Wewnątrz tej funkcji używamy tablic, które do tej pory zadeklarowaliśmy. Zatem każda zmienna, którą wyślemy do tej funkcji, powinna mieć wartość między (0-9), znak zmiennej otrzyma tę wartość i porówna ją z wartością rzeczywistą. Tutaj zmienna jest porównywana z „1”. Podobnie porównujemy ze wszystkimi liczbami od 0 do 9. Jeśli jest to dopasowanie, używamy tablic i przypisujemy każdą wartość do odpowiednich pinów segmentu, jak pokazano poniżej.
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
Czas wyświetlania na 4-cyfrowym 7-segmentowym przy użyciu Raspberry Pi:
Użyj schematu i kodu podanego tutaj, aby wykonać połączenia i odpowiednio zaprogramować swoje raspberry pi. Po wykonaniu wszystkich czynności uruchom program, a na siedmiosegmentowym wyświetlaczu powinieneś znaleźć aktualny czas. Ale jest kilka rzeczy, które musisz wcześniej sprawdzić
- Upewnij się, że ustawiłeś Raspberry Pi na aktualny czas na wypadek, gdyby działał w trybie offline.
- Zasilaj swoje Raspberry pi za pomocą adaptera, a nie laptopa / komputera, ponieważ ilość prądu pobieranego przez 7-segmentowy wyświetlacz jest wysoka, a port USB nie może go zasilać.
Jeśli wszystko działa zgodnie z oczekiwaniami, poniżej znajdziesz coś takiego.
Pełne działanie tego malinowego zegara pi można również sprawdzić na wideo podanym poniżej. Mam nadzieję, że spodobał Ci się projekt i podobał Ci się jego projekt. Daj mi znać, co myślisz lub jeśli potrzebujesz pomocy.