Gra ucząca poprzez rywalizację wzorów fizycznych.
1. Płytka ESP8266
2. Przewody męsko męskie
3.Wyświetlacz OLED *2
4.Przycisk*2
Komputer z programem Thonny
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.
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)