Teleturniej fizyczny

Typ_projektu
microPython
Zdjecie główne
Krótki opis projektu

Gra ucząca poprzez rywalizację wzorów fizycznych.

Niezbędne elementy

 

1. Płytka ESP8266

2. Przewody męsko męskie

3.Wyświetlacz OLED *2

4.Przycisk*2

Sprzęt

Komputer z programem Thonny

Opis projektu

Projekt "Teleturniej Fizyczny" to kreatywne i edukacyjne wyzwanie, które łączy w sobie elementy programowania, elektroniki i wiedzy fizycznej (wzorów fizycznych). Projekt tem wykorzystuje popularny mikrokontroler ESP8266, sześć przycisków oraz dwa wyświetlacze OLED do stworzenia interaktywnego teleturnieju fizycznego. Gracze siedzący przed teleturniejem dostają pytania dotyczące poprawności wzorów fizycznych. Na początku każdego pytanie gracze rywalizują kto będzie odpowiadał na pytanie na zasadzie kto pierwszy ten lepszy wciskając swoje guziki. Każde pytanie ma dwie dostępne odpowiedzi tak lub nie. Gracze wybierają swoje odpowiedzi, naciskając odpowiedni przycisk. Mikrokontroler ESP8266 odbiera wybory graczy i oblicza wyniki. Gra trwa przez określoną liczbę rund, po czym prezentowane są końcowe wyniki graczy.

Projekt ten stanowi interaktywny sposób nauki fizyki, pobudzając ciekawość i motywację uczestników do zdobywania wiedzy na ten temat. Teleturniej to doskonały sposób na połączenie nauki z rozrywką. Dzięki rywalizacji i zabawie uczestnicy są bardziej angażowani i zmotywowani do nauki fizyki.

Zdjęcia
kod programu

 

start1=machine.Pin(14,machine.Pin.IN, machine.Pin.PULL_UP)
a_1=machine.Pin(0,machine.Pin.IN, machine.Pin.PULL_UP)
b_1=machine.Pin(2,machine.Pin.IN, machine.Pin.PULL_UP)
start2=machine.Pin(13,machine.Pin.IN, machine.Pin.PULL_UP)
b_2=machine.Pin(12,machine.Pin.IN, machine.Pin.PULL_UP)
a_2=ADC(0)
wzor = ["V=I*R",
          'F=m*a',
          "K_e=(1/2)*m*v^3",
          "Q=E*A",
          "v=sqrt(5*g*h) ",
          "W=F*d*cos(fi)",
          "Rz=1/(1/R1+1/R2)",
          "g=G*M/R^2",
          "F_b=q*g*V",
          "Q_in=Q_out"]
nazwa = ["Prawo Ohma",
          'Drugi Newton',
          "energia kinetyczna",
          "Prawo Gaussa",
          "Pred.spad.cialo",
          "Praca sily",
        "Obw. rownolegly",
       "przysp. ziemskie",
          
          "Pr. Archimedesa",
          "zacho. ladunku"]
odp=[1,1,2,2,2,1,1,2,1,1]
przycisk = 0
wyswietlone=0
nr_pytania=0
pkt_gracza1=0
pkt_gracza2=0
odp_gracza1=0
odp_gracza2=0
def kto_pierwszy(pin):
   global przycisk
   global wyswietlone
   if wyswietlone==1:
       print("kdsodsvosdvisdv")
       if pin == start1:
           przycisk = 1
           wyswietlone =0
       elif pin == start2:
           przycisk = 2
           wyswietlone=0
   
start1.irq(trigger=machine.Pin.IRQ_FALLING, handler=kto_pierwszy)
start2.irq(trigger=machine.Pin.IRQ_FALLING, handler=kto_pierwszy)      
   
oled.fill(0)
oled.show() 
oled.text('3', 64, 32, 1)
oled.show() 
time.sleep(1)
oled.fill(0)
oled.show()
oled.text('2', 64, 32, 1)
oled.show() 
time.sleep(1)
oled.fill(0)
oled.show()
oled.text('1', 64, 32, 1)
oled.show() 
time.sleep(1)
oled.fill(0)
oled.show()
oled.text('Start', 50, 32, 1)
oled.show() 
time.sleep(1)
oled.fill(0)
oled.show()
for i in range(10):
   oled.text(wzor[i], 0, 20, 1)
   oled.show()
   oled.text(nazwa[i], 0, 40, 1)
   oled.show()
   wyswietlone=1
   while przycisk==0:
       pass
   oled.fill(0)
   oled.show()
   if przycisk==1:
       oled.text("GRACZ:1", 30, 20, 1)
   elif przycisk==2:
       oled.text("GRACZ:2", 30, 20, 1)
   oled.text("A.TAK", 20, 40, 1)
   oled.text("B.NIE", 80, 40, 1)
   oled.show()
   
   
   if przycisk==1:
       print("czeka1")
       
       przycisk=0;
       while a_1.value()==1 and b_1.value()==1:
           print("czeka")
       if a_1.value()==0:
           odp_gracza1=1
       else:
           odp_gracza1=2
       
       if odp_gracza1==odp[i]:
           pkt_gracza1+=1
           
       oled.fill(0)
       oled.show()
       odp_gracza1=0
       print("wyszedl")
       
       
   if przycisk==2:
       print("czeka2")
       przycisk=0;
       while a_2.read()<500 and b_2.value()==1:
           print("czeka")
       
       if b_2.value()==0:
           odp_gracza2=2
       else:
           odp_gracza2=1
           
       if odp_gracza2==odp[i]:
           pkt_gracza2+=1
           
           
       odp_gracza2=0
       oled.fill(0)
       oled.show()
oled.text("pnkty gracza1:"f"{pkt_gracza1}", 0, 20, 1)
oled.text("pnkty gracza2:"f"{pkt_gracza2}", 0, 40, 1)
oled.show() Ustaw odpowiedni język programowania (ostatnia ikona powyżej)
Pliki_projektu
Schemat
Tagi
fizyka teleturniej