Mrugająca dioda LED: Różnice pomiędzy wersjami
m |
(dodany link do pełnego opisu pinów) |
||
Linia 21: | Linia 21: | ||
=== Gdzie tą sondę podłączyć? === | === Gdzie tą sondę podłączyć? === | ||
+ | |||
+ | |||
<div class="thumb"><div class="thumbinner"><div class="thumbcaption"><span style="color:#bb0044">'''Zacznijmy od ostrzeżenia:''' Podłączanie czegoś do płytki Maliny wywołuje konkretne obciążenia elektryczne. Złącze 40 pinowe nie zostało pomyślane jako "publicznie" dostępne (takie jak np. różne złącza w komórce) i zakłada się, że korzysta z niego świadomy użytkownik, który '''wie co robi'''. Łącząc przypadkowe piny '''bez wielkiego wysiłku można spalić płytkę''' i w ten sposób pozbyć się jej. Biorąc pod uwagę, że na nowe dostawy Maliny Zero trzeba czekać zwykle około miesiąca, efekt może być średnio przyjemny. | <div class="thumb"><div class="thumbinner"><div class="thumbcaption"><span style="color:#bb0044">'''Zacznijmy od ostrzeżenia:''' Podłączanie czegoś do płytki Maliny wywołuje konkretne obciążenia elektryczne. Złącze 40 pinowe nie zostało pomyślane jako "publicznie" dostępne (takie jak np. różne złącza w komórce) i zakłada się, że korzysta z niego świadomy użytkownik, który '''wie co robi'''. Łącząc przypadkowe piny '''bez wielkiego wysiłku można spalić płytkę''' i w ten sposób pozbyć się jej. Biorąc pod uwagę, że na nowe dostawy Maliny Zero trzeba czekać zwykle około miesiąca, efekt może być średnio przyjemny. | ||
<br /> | <br /> | ||
− | '''Oczywiście od razu dodajmy, że lepiej spalić płytkę i się czegoś dowiedzieć niż siedzieć i patrzyć jak inni się bawią!''' | + | '''Oczywiście od razu dodajmy, że lepiej spalić płytkę i się czegoś dowiedzieć niż siedzieć i patrzyć jak inni się bawią!''' Najwygodniej bawić się nie psując sobie narzędzi, ale znów bez tej przesady, którą różni ludzie zawierają w słowach "Nie dotykaj bo zepsujesz". Odwrotnie! Dotykaj i ucz się! |
</span> | </span> | ||
</div></div> | </div></div> | ||
+ | |||
Piny złącza 40 pinowego liczy się zaczynając od kwadratowego (numer 1), a dalej "zygzakiem". Poniżej numeracja z zaznaczonym miejscem podłączenia diody tak jak na filmie powyżej. | Piny złącza 40 pinowego liczy się zaczynając od kwadratowego (numer 1), a dalej "zygzakiem". Poniżej numeracja z zaznaczonym miejscem podłączenia diody tak jak na filmie powyżej. | ||
Linia 74: | Linia 77: | ||
|style="padding-left:0.5em;"| | |style="padding-left:0.5em;"| | ||
|} | |} | ||
+ | |||
+ | Na stronie [[Trzykołowiec#Opis wyprowadzeń łącza 40 pinowego|trzykołowca]] znajduje się pełny opis wszystkich pinów. | ||
=== Włączanie i wyłączanie diody w pythonie === | === Włączanie i wyłączanie diody w pythonie === |
Wersja z 20:44, 15 sty 2019
Prosty projekt elektroniczno-programowy na start. Przed rozpoczęciem programowania mrugającej diody warto zajrzeć na stronę o podstawach pythona.
Spis treści
Do czego zmierzamy
Chcemy uzyskać taki efekt jak na filmie poniżej, czyli swobodną kontrolę nad jednym z cyfrowych wyjść Maliny. Stan wyjścia będziemy testowali diodą LED.
Dioda do wykrywania stanów logicznych - trochę elektroniki
Żeby przygotować naszą sondę logiczną kładziemy elementy jak na zdjęciu obok. Następnie -- najlepiej dociskając z góry ramionami pęsety każdy z elementów -- dotykamy obu środkowych styków jednocześnie rozgrzanym grotem lutownicy z niewielką ilością cyny, im krócej tym lepiej, sekunda powinna starczyć. Stopiona cyna powinna spłynąć między elementy i stworzyć połączenie (zarówno elektryczne jak i mechaniczne).
Teraz przygotowujemy krótkie odcinki kabelków miedzianych. Najlepiej jeśli jeden z nich, który przylutujemy od strony masy diody LED (od strony zielonych markerów) był czarny bo tego koloru używa się zwykle do oznaczania masy i przyjęcie takiej konwencji ułatwia szybką orientację, który kabel gdzie przytknąć. Kabelki mniej więcej takiej długości jak na filmie. Ściągamy izolację na małym odcinku na końcach (2mm wystarczy) i cynujemy rozgrzaną lutownicą jeszcze przed lutowaniem do pary dioda-opornik. Takie wstępne pocynowanie końcówek ułatwia potem lutowanie do małych elementów SMD, których nie chcemy "usmażyć" zbyt długim podgrzewaniem.
Kable układamy w linii ze zlutowaną wcześniej parą elementów i podobnie jak przed chwilą wkładając rozgrzaną lutownicę w środek z odrobiną cyny łączymy razem.
Na koniec na całość możemy nałożyć przeźroczystą rurkę termokurczliwą i zatopić w niej elementy. Sonda gotowa. Jeśli wszystko zrobiliśmy dobrze podłączona do dwóch baterii "paluszków" powinna się zaświecić. Bateria ma masę na od strony płaskiego końca, a biegun dodatni tam gdzie znajduje się dodatkowa wypustka.
Gdzie tą sondę podłączyć?
Piny złącza 40 pinowego liczy się zaczynając od kwadratowego (numer 1), a dalej "zygzakiem". Poniżej numeracja z zaznaczonym miejscem podłączenia diody tak jak na filmie powyżej.
Na stronie trzykołowca znajduje się pełny opis wszystkich pinów.
Włączanie i wyłączanie diody w pythonie
Kilka podstawowych informacji o pisaniu programów w pythonie zawiera ta strona. Poniżej zakładamy, że już coś na ten temat wiesz.
Poniżej prosty kod przełączający diodę podłączoną do wyjść tak jak na schemacie powyżej. Kod będzie działał tylko na Raspbianie ponieważ tylko tam dostępny jest "malinowy" moduł RPi.GPIO. Próba jego importowania na innym systemie skończy się komunikatem o jego braku.
# coding: utf-8
# wczytujemy moduł pythona zawierający funkce obsługi czasu
import time
# a w tym module mamy funkcje do obsługi wyjść złącza 40 pinowego
# żeby było prościej zapisywać kod będziemy go nazywać dalej w programie krótszą nazwą i bez dużych liter (gpio zamiast RPi.GPIO)
import RPi.GPIO as gpio
# moduł RPi.GPIO może używać dwóch różnych sposobów numerowania pinów; nas interesuje w tej chwili wygodniejszy
# tryb BOARD (z ang. płytka), w którym numeracja pinów w kodzie zgadza się numerami styków złącza na płytce Maliny
gpio.setmode(gpio.BOARD)
# będziemy się bawić wyjściem GPIO 14 procesora, które na płytce jest podłączone do styku numer 8
# chcemy używać go do wysyłania sygnałów dlatego ustawiamy tryb OUT (można też odczytywać piny jeśli mamy podłączony jakiś czujnik)
gpio.setup(8, gpio.OUT)
ile_powtorek = 0 # zmiena, która będzie odliczała kolejne powtórki
while ile_powtorek < 100: # while powtarza instrukcje tak długo jak długo spełniony jest podany warunek
gpio.output(8, 0) # ustawienie napięcia 0V na styku nr 8, dioda gaśnie
time.sleep(0.5) # pół sekundy czekamy
gpio.output(8, 1) # ustawienie napięcia 3.3V styku nr 8, dioda zapala się
time.sleep(0.5) # znów chwilę czekamy
# zwiększamy zmienną ile powtórek o jeden -- w końcu osiągnie ona wartość 100, while przestanie powtarzać i program się skończy
ile_powtórek = ile_powtorek + 1
# porządki, czyli przywracamy pierwotne ustawienia wyjść (dobry zwyczaj) zanim skończymy program
gpio.cleanup()
Żeby powyższy kod wykonać na Malinie trzeba go zapisać w pliku i przesłać do na jej kartę. Oczywiście można to zrobić przy pomocy czytnika kart, ale byłaby to raczej bardzo niewygodna metoda. W najbliższym czasie zapiszę jak to zrobić korzystając z połączenia sieciowego.
Tymczasem proponuję wykonywać kod linijka po linijce w terminalu Maliny, przy czym przypomnę, że wielolinijkową pętlę while można zapisać w jednej linii tak jak poniżej. Dla uproszczenia zapisu komentarze zostały usunięte, a testowanie wartości zmiennej ile_powtorek
zastąpione "zawsze prawdą" (True), a więc pętla będzie się wykonywała dopóki nie przerwiemy jej klawiszami Ctrl-C.
while True: gpio.output(14, 0); time.sleep(0.5); gpio.output(14, 1); time.sleep(0.5);