Jaka to melodia?

Jaka to melodia?

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:

Zakupy w Botlandzie zrobione?

Opublikuj swój projekt i odbierz 50% rabatu do wykorzystania w sklepie Nettigo.pl

To do roboty!

Artykuł podzieliłem na dwie części – Hardware i Software.

Hardware

Dla tych bardziej zaawansowanych powinien wystarczyć poniższy widok:

Untitled Sketch_bb

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 :-)

IMG_20150528_183742

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.

IMG_20150528_183829

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:-)

IMG_20150528_184035IMG_20150528_184259

 

Żeby nie zanudzać pisaniem o lutowaniu podrzucę link.

Po lutowaniu zaczynamy wszystko podłączać. Jeszcze raz zaprezentuje schemat:

 

Untitled Sketch_bb

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.

IMG_20150528_190129

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:-)

 

IMG_20150528_190303

INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(

Ocena: 3.45/5 (głosów: 100)
Nettigo - patron działu Elektronika

Podobne posty

13 komentarzy do “Jaka to melodia?

  • Kiepskie , przyciski wiszą w powietrzu – brak aranżacji. Jak już ci płacą za robienie reklamy botlandu to mogłeś się bardziej postarać.

    Odpowiedz
  • 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.

    Odpowiedz
  • @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.

    Odpowiedz
  • 1. Zastanawia mnie, po co w ogóle płytka stykowa skoro switche „trzymają się” jej tylko jednym pinem…? :/

    1. Skrętka (!) No już można by użyć przewodów połączeniowych, albo jakichś innych, ale skrętka jak sama nazwa mówi jest skręcona i powstaje piękna pajęczyna.
    2. Sposób zdejmowania izolacji pozostawia wiele do życzenia.

    Wszystko powyższe uświadcza mnie w przekonaniu, że Kolega mało z elektroniką ma wspólnego :/

    Odpowiedz
  • 1. Nie no, błagam Was! Myślicie że to ma być jakaś płatna reklama!?

    1. Tak, wiem o tym że przyciski „latają”. Ale akurat nie miałem drukarki 3d, ani sklejki.

    Maunsell

    1. A jak inaczej, bez lutowania do RPi można podłączyć kable?
    2. Taką akurat miałem.
    3. Wiem.

    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ę.

    Odpowiedz
  • 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 :)

    Odpowiedz
  • 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.

    Odpowiedz

Odpowiedz

anuluj

Jaka to melodia?

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?