INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Hej,
Jest to mój pierwszy artykuł w Majsterkowie. Chyba wszyscy znamy teleturniej “Jaka to melodia?”. Dzisiaj chciałbym pokazać Wam, jak zrobić swój własny quiz muzyczny. Do dzieła!
Przygotowanie
Sercem i mózgiem całego projektu będzie wspaniały mikrokomputer Raspberry Pi.
Potrzebne będzie:
- Raspberry Pi (Polecam dwójkę, ale ze wcześniejszymi wersjami też będzie działać.)
- Karta SD z NOOB-s (Można wypalić samemu)
- Przewody
- Cztery przyciski (Dowolne, ja polecam takie kolorowe)
- Cyna
- Lutownica
- Kalafonia
- Płytka stykowa
- Przewody żeńsko-męskie
- Nożyczki (Niestety, w Botlandzie nie sprzedają :-)
Zakupy w Botlandzie zrobione?
To do roboty!
Artykuł podzieliłem na dwie części – Hardware i Software.
Hardware
Dla tych bardziej zaawansowanych powinien wystarczyć poniższy widok:
Na samym początku “otwieramy” kabel (skrętkę). Wystarczy ją tylko trochę naciąć, a po chwili ujrzymy osiem kabelków i nitkę. Po co ta nitka? Długo nad tym myślałem, aż wreszcie po prostu mocno ją pociągnąłem w dolnym kierunku. I kabel otwarty :-)
Teraz mamy osiem kabelków – zielony i biały, niebieski i biały, brązowy i biały oraz pomarańczowy i biały. Aby przylutować do nich przyciski i włożyć do płytki stykowej musimy zdjąć izolację. Ja robię to zwykłymi, dobrymi nożyczkami, ale słyszałem też o profesjonalnych ściągaczach do izolacji. Po prostu kładziemy kabelek na coś twardego (nie używać biurka ani podłogi!) i zdrapujemy nożyczkami odpowiednią długość izolacji. Musimy zrobić tak z każdym kabelkiem, na każdym jego końcu.
Uwaga! Należy zachować należytą ostrożność, podczas używania nożyczek!
Gdy nasze dłonie po zdejmowaniu izolacji nie krwawią, i są zdatne do używania możemy zabierać się za lutowanie.
Uwaga! Grot lutownicy zazwyczaj rozgrzewa się do wysokich temperatur. Dotknięcie jego grozi poparzeniem. Opary lutownicze mogą powodować dyskonfort. Lutuj tylko w dobrze wentylowanych pomieszczeniach.
Naszym zadaniem jest przylutowanie do nóżek A i B, lub D i C każdego przycisku odpowiedniego kabla.
Proponuje przylutować je kolorystycznie, aby w razie awarii łatwo było znaleźć winowajcę. Do niebieskiego-niebieski i biały, do zielonego-zielony i biały, do żółtego pomarańczowy i biały, do czerwonego czerwony i biały. Albo po prostu popatrz na zdjęcie:-)
Żeby nie zanudzać pisaniem o lutowaniu podrzucę link.
Po lutowaniu zaczynamy wszystko podłączać. Jeszcze raz zaprezentuje schemat:
Czyli: kabelki od przycisków wciskamy w “dziurki”. Później do dziurek będących w tym samym pięciodziurkowym rządku wkładamy przewód męsko-żeński, który podłączamy do odpowiedniego złącza w Raspberry Pi.
Koniec Hardware. Aktualnie, jeśli postępowaliście według instrukcji macie gotowe przyciski. Ale co z tego, jeśli je klikniecie to nic się nie dzieje! Ale dział Software to zmieni…
Software
Przyjmuje że macie już w pełni działające Raspberry Pi, z zainstalowanym Raspbianem.Podłączamy monitor, klawiaturę, myszkę i jedziemy dalej. Łączenie się z RPi przez VNC nie zadziała.
Otwieramy Pythona poleceniem
sudo idle3&
Musimy teraz napisać programik, który będzie: odtwarzał utwór muzyczny, sprawdzał który przycisk był naciśnięty pierwszy i o tym informował.
Wrzucam gotowca:
#By #maks1823 #Jaka to melodia? import RPi.GPIO as GPIO import time import os GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(25, GPIO.IN, pull_up_down=GPIO.PUD_UP) np = 2 x = 1 print("Jaka to melodia?") time.sleep(5) while True: if x == 1: while x == 1: if GPIO.input(18) == False: print("Osoba pod GPIO18 odpowiada.") x = 2 if GPIO.input(23) == False: print("Osoba pod GPIO23 odpowiada.") x = 2 if GPIO.input(24) == False: print("Osoba pod GPIO24 opowiada.") x = 2 if GPIO.input(25) == False: print("Osoba pod GPIO25 odpowiada.") x = 2 if x == 2: while x == 2: print("Udzielanie odpowiedzi...") print("Zostalo 10 sekund...") time.sleep(1) print("Zostalo 9 sekund...") time.sleep(1) print("Zostalo 8 sekund...") time.sleep(1) print("Zostalo 7 sekund...") time.sleep(1) print("Zostalo 6 sekund...") time.sleep(1) print("Zostalo 5 sekund...") time.sleep(1) print("Zostalo 4 sekundu...") time.sleep(1) print("Zostalo 3 sekundy...") time.sleep(1) print("Zostalo 2 sekundy...") time.sleep(1) print("Zostalo 1 sekunda...") time.sleep(1) print("Koniec czasu!") print("") print("") print("") print("Nastepna piosenka...") time.sleep(5) if np == 2: os.system ("aplay brzmi / test.wav") if np == 3: os.system ("aplay brzmi / test.wav") if np == 4: os.system ("aplay brzmi / test.wav") if np == 5: os.system ("aplay brzmi / test.wav") if np == 6: os.system ("aplay brzmi / test.wav") if np == 7: os.system ("aplay brzmi / test.wav") if np == 8: os.system ("aplay brzmi / test.wav") if np == 9: os.system ("aplay brzmi / test.wav") if np == 10: os.system ("aplay brzmi / test.wav") if np == 11: os.system ("aplay brzmi / test.wav") if np == 12: os.system ("aplay brzmi / test.wav") if np == 13: os.system ("aplay brzmi / test.wav") if np == 14: os.system ("aplay brzmi / test.wav") if np == 15: os.system ("aplay brzmi / test.wav") if np == 16: os.system ("aplay brzmi / test.wav") if np == 17: os.system ("aplay brzmi / test.wav") if np == 18: os.system ("aplay brzmi / test.wav") if np == 19: os.system ("aplay brzmi / test.wav") if np == 20: os.system ("aplay brzmi / test.wav") if np == 21: print("Gra zostala zakonczona!") break np = np+1 x = 1
#Wyjaśniający cały kod prosty pseudokod #By #maks1823 #Pseudokod - Jaka to melodia? zaimportuj bibliotekę do GPIO jako GPIO zaimportuj czas zaimportuj os ustaw odpowiednie ustawienia dla pinów GPIO np = 2 x = 1 napisz("Jaka to melodia?") prześpij.się(przez 5 sekund) dopóki zawsze: jeśli x to będzie 1: dopóki x == 1: jeśli przycisk pod 18. zostanie naciśnięty: napisz("Osoba pod GPIO18 odpowiada.") x = 2 jeśli przycisk pod 23. zostanie naciśnięty: napisz("Osoba pod GPIO23 odpowiada.") x = 2 jeśli przycisk pod 24. zostanie naciśnięty: napisz("Osoba pod GPIO24 opowiada.") x = 2 jeśli przycisk pod 25. zostanie naciśnięty: napisz("Osoba pod GPIO25 odpowiada.") x = 2 jeśli x == 2: dopóki x == 2: napisz("Udzielanie odpowiedzi...") napisz("Zostalo 10 sekund...") prześpij.się(przez 1 sekundę) napisz("Zostalo 9 sekund...") prześpij.się(przez 1 sekundę) napisz("Zostalo 8 sekund...") prześpij.się(przez 1 sekundę) napisz("Zostalo 7 sekund...") prześpij.się(przez 1 sekundę) napisz("Zostalo 6 sekund...") prześpij.się(przez 1 sekundę) napisz("Zostalo 5 sekund...") prześpij.się(przez 1 sekundę) napisz("Zostalo 4 sekundu...") prześpij.się(przez 1 sekundę) napisz("Zostalo 3 sekundy...") prześpij.się(przez 1 sekundę) napisz("Zostalo 2 sekundy...") prześpij.się(przez 1 sekundę) napisz("Zostalo 1 sekunda...") prześpij.się(przez 1 sekundę) napisz("Koniec czasu!") napisz("") napisz("") napisz("") napisz("Nastepna piosenka...") prześpij.się(5) jeśli np == 2: os.system ("aplay brzmi / test.wav") jeśli np == 3: os.system ("aplay brzmi / test.wav") jeśli np == 4: os.system ("aplay brzmi / test.wav") jeśli np == 5: os.system ("aplay brzmi / test.wav") jeśli np == 6: os.system ("aplay brzmi / test.wav") jeśli np == 7: os.system ("aplay brzmi / test.wav") jeśli np == 8: os.system ("aplay brzmi / test.wav") jeśli np == 9: os.system ("aplay brzmi / test.wav") jeśli np == 10: os.system ("aplay brzmi / test.wav") jeśli np == 11: os.system ("aplay brzmi / test.wav") jeśli np == 12: os.system ("aplay brzmi / test.wav") jeśli np == 13: os.system ("aplay brzmi / test.wav") jeśli np == 14: os.system ("aplay brzmi / test.wav") jeśli np == 15: os.system ("aplay brzmi / test.wav") jeśli np == 16: os.system ("aplay brzmi / test.wav") jeśli np == 17: os.system ("aplay brzmi / test.wav") jeśli np == 18: os.system ("aplay brzmi / test.wav") jeśli np == 19: os.system ("aplay brzmi / test.wav") jeśli np == 20: os.system ("aplay brzmi / test.wav") jeśli np == 21: napisz("Gra zostala zakonczona!") wyjdź z programu zwiększ np o jeden x = 1
os.system (“aplay brzmi / test.wav”) – aplay brzmi / test.wav należy zamienić na lokalizację i nazwę pliku wav.
Uruchamiamy program i teleturniej trwa.
To chyba było by na tyle. Wiem, że kod nie jest jakiś bardzo dobry, ale działa. Macie jakieś sugestie?
I jeszcze na koniec przygotowałem mały prezent dla wszystkich majsterkowiczów używających Raspberry Pi. Wiecie jak łatwo jest pomylić piny GPIO? Dlatego przygotowałem specjalną nakładkę, specjalnie dla Was! Pobierzesz ją tutaj: RaspberryPiLeaf
P.S. To mój pierwszy post! Proszę o łagodny wymiar kary:-)
INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Kiepskie , przyciski wiszą w powietrzu – brak aranżacji. Jak już ci płacą za robienie reklamy botlandu to mogłeś się bardziej postarać.
Dosyc ordynarna i nachalna reklama botland-u z tego wyszla…
Skasowano moj komentarz, w ktorym wytykalem nachalnosc reklamy pewnego sklepu z elektronika, chociaz nie lamalem w nim regulaminu. Domyslam sie, ze chodzi o punkt 4, tylko ze w artukule nie ma jasnej informacji o lokowaniu produktu. Panie Naczelniku – nie ladnie. Nieczyste zagranie uwlaczajace inteligencji czytelnikow.
Komentarz nie został skasowany, tylko wordpress umieścił go na liście komentarzy oczekujących na akceptację :) W każdym razie – już jest widoczny na stronie.
A post nie jest reklamą, tylko po prostu autor bierze udział w akcji https://majsterkowo.pl/blog/opisz-swoj-projekt-i-odbierz-50-rabatu-na-zakupy-w-botlandzie/
@naczelny – to pozostale mozna skasowac. swoja droga dlaczego w niektorych postach komentarze pokazuja sie od razu a w innych za moderacja?
a co do akcji – ta akcja przeciez jest forma reklamy wlasnie.
ale ok, rozumiem, eot.
Wszystkie komentarze lecą przez wtyczkę sprawdzającą je pod kątem spamu. Część komentarzy łapie się na jakieś filtry i trafia na listę do akceptacji.
1. Zastanawia mnie, po co w ogóle płytka stykowa skoro switche “trzymają się” jej tylko jednym pinem…? :/
Wszystko powyższe uświadcza mnie w przekonaniu, że Kolega mało z elektroniką ma wspólnego :/
Do kodu też można by się przyczepić. Połowa jest do wywalenia.
Projekt po prostu słaby, i bardzo odstaje od pozostałych na majsterkowie.
Pozdrawiam.
1. Nie no, błagam Was! Myślicie że to ma być jakaś płatna reklama!?
Maunsell
Słuchajcie, wiem że projekt nie należy do najlepszych i obiecuje wam że będę jeszcze nad nim pracował. Dzięki Maunsell za kilka sugesti, na pewno to poprawię.
A, i jeszcze jedno – jestem początkującym…
Cofam wszystkie swoje komentarze pod innymi projektami, w których napisałem, że jest słabo. Oto lider :)
E tam, hejtowanie jest proste i nie trzeba nic umiec zeby zaczac. Ale usiasc i cos zrobic, do tego napisac post to trzeba chciec :)
Projekt ciekawy, dziala i to wazne ;) Szkoda ze nie ma filmiku ale daje 5 :)
Może spróbowałbyś zrobić normalną grę na podstawie Twojego projektu? Chodzi mi o “Jaka to melodia” do pogrania w domu ze znajomymi. Ten projekt jest dobrą podstawą do zbudowania czegoś takiego.