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?

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)

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

Masz uwagi?