User:Wordfa/oldphonehack/PTT Tafeltjes Telefoon: Difference between revisions
< User:Wordfa | oldphonehack
(Created page with "===Ralph Crutzen's PTT Tafeltjes Telefoon===") |
|||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
Dutch vers: | |||
https://github.com/ralphcrutzen/PTT-Tafeltjes-Telefoon/blob/master/t65.py | |||
== Ralph Crutzen's PTT Tafeltjes Telefoon Eng translation == | |||
<syntaxhighlight lang="py" line="1"> | |||
#!/usr/bin/env python | |||
import sys, os, time, random, pygame | |||
import RPi.GPIO as GPIO | |||
# translated to english by DeepL and wordfa | |||
# Speaker Function - Play Sound | |||
# Takes a file Path | |||
def say(file): | |||
pygame.mixer.music.load(file) | |||
pygame.mixer.music.play() | |||
while pygame.mixer.music.get_busy() == True: | |||
continue | |||
# Ask Question for Telefone Letter | |||
def askQuestion(numOne, numTwo): | |||
print("Wat is", numOne, "x", numTwo,"?") | |||
say("audio/" + str(numOne) + ".mp3") | |||
say("audio/keer.mp3") | |||
say("audio/" + str(numTwo) + ".mp3") | |||
say("audio/is.mp3") | |||
def getNummer(): | |||
# number of Pulses | |||
nPulsen = 0 | |||
# Watch Dail or Button | |||
DialContact = GPIO.input(DialPIN) | |||
NumberContact = GPIO.input(NumberPIN) # Low if pressed | |||
while DialContact == False and NumberContact == True: | |||
DialContact = GPIO.input(DialPIN) | |||
NumberContact = GPIO.input(NumberPIN) | |||
# Number Pressed (Selected) | |||
if NumberContact == False: | |||
return -1 | |||
# Handle Pulses | |||
done = False | |||
while done == False and DialContact == True: | |||
nPulsen = nPulsen + 1 | |||
startTime = time.time() | |||
time.sleep(0.1) | |||
DialContact = GPIO.input(DialPIN) | |||
# Check time between Pulses | |||
while done == False and DialContact == False: | |||
if time.time() - startTime >= 0.2: | |||
done = True | |||
DialContact = GPIO.input(DialPIN) | |||
# Return number | |||
return nPulsen % 10 | |||
# Tell you when handset is picked up | |||
def handsetCallback(channel): | |||
print("Handset picked up!", channel) | |||
# Restart Script | |||
# Set Up all the IO Stuff | |||
GPIO.cleanup() | |||
python = sys.executable | |||
os.execl(python, python, * sys.argv) | |||
# Name pins | |||
DialPIN = 25 | |||
NumberPIN = 23 | |||
handsetPIN = 24 | |||
# Set Up Pins | |||
GPIO.setmode(GPIO.BCM) | |||
GPIO.setup(DialPIN, GPIO.IN, pull_up_down = GPIO.PUD_UP) | |||
GPIO.setup(handsetPIN, GPIO.IN, pull_up_down = GPIO.PUD_UP) | |||
GPIO.setup(NumberPIN, GPIO.IN, pull_up_down = GPIO.PUD_UP) | |||
# Use an interrupt for the handset, because it can be put down at any time | |||
GPIO.add_event_detect(handsetPIN, GPIO.BOTH, callback = handsetCallback) | |||
# Start audio mixer | |||
pygame.mixer.init() | |||
while True: | |||
try: | |||
# Wait for pick up | |||
print("Wait for pick up...") | |||
handsetContact = GPIO.input(handsetPIN) | |||
while handsetContact == True: | |||
handsetContact = GPIO.input(handsetPIN) | |||
time.sleep (1) | |||
# Which times table to practise | |||
print("Which times table to practise?") | |||
say("audio/welk.mp3") | |||
table = getNummer() | |||
# List to keep track of answered questions | |||
sums = [] | |||
for som in range(10): | |||
sums.append(0) # 0 is bad, 1 is goed | |||
numOfCorrectAns = 0 | |||
while numOfCorrectAns < 10: | |||
# Set Question? | |||
numOne = random.randint(1,10) | |||
while sums[numOne - 1] == 1: | |||
numOne = random.randint(1,10) | |||
if table == -1: | |||
numTwo = random.randint(1,10) | |||
elif table == 0: | |||
numTwo = 10 | |||
else: | |||
numTwo = table | |||
result = numOne * numTwo | |||
numOfDigits = len(str(result)) | |||
askQuestion(numOne, numTwo) | |||
thisDigit = 0 | |||
answer = "" | |||
# Watch for Answer | |||
while thisDigit < numOfDigits: | |||
nummer = getNummer() | |||
if nummer > -1: # Dial Turned | |||
answer = answer + str(nummer) | |||
thisDigit = thisDigit + 1 | |||
else: # Number Key Pressed | |||
askQuestion(numOne, numTwo) | |||
thisDigit = 0 | |||
answer = "" | |||
print(answer) | |||
# Check Answer | |||
# string to Int Answer | |||
if int(answer) == result: | |||
numOfCorrectAns = numOfCorrectAns + 1 | |||
sums[numOne - 1] = 1 | |||
print("Good Job!") | |||
say("audio/goed.mp3") | |||
else: | |||
print("You suck, the correct answer is ", result) | |||
say("audio/fout.mp3") | |||
say("audio/" + str(result) + ".mp3") | |||
print() | |||
time.sleep(1) | |||
say("audio/einde.mp3") | |||
except KeyboardInterrupt: # Ctrl+C | |||
GPIO.cleanup() | |||
</syntaxhighlight> |
Latest revision as of 15:46, 9 November 2024
Dutch vers:
https://github.com/ralphcrutzen/PTT-Tafeltjes-Telefoon/blob/master/t65.py
Ralph Crutzen's PTT Tafeltjes Telefoon Eng translation
#!/usr/bin/env python
import sys, os, time, random, pygame
import RPi.GPIO as GPIO
# translated to english by DeepL and wordfa
# Speaker Function - Play Sound
# Takes a file Path
def say(file):
pygame.mixer.music.load(file)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
continue
# Ask Question for Telefone Letter
def askQuestion(numOne, numTwo):
print("Wat is", numOne, "x", numTwo,"?")
say("audio/" + str(numOne) + ".mp3")
say("audio/keer.mp3")
say("audio/" + str(numTwo) + ".mp3")
say("audio/is.mp3")
def getNummer():
# number of Pulses
nPulsen = 0
# Watch Dail or Button
DialContact = GPIO.input(DialPIN)
NumberContact = GPIO.input(NumberPIN) # Low if pressed
while DialContact == False and NumberContact == True:
DialContact = GPIO.input(DialPIN)
NumberContact = GPIO.input(NumberPIN)
# Number Pressed (Selected)
if NumberContact == False:
return -1
# Handle Pulses
done = False
while done == False and DialContact == True:
nPulsen = nPulsen + 1
startTime = time.time()
time.sleep(0.1)
DialContact = GPIO.input(DialPIN)
# Check time between Pulses
while done == False and DialContact == False:
if time.time() - startTime >= 0.2:
done = True
DialContact = GPIO.input(DialPIN)
# Return number
return nPulsen % 10
# Tell you when handset is picked up
def handsetCallback(channel):
print("Handset picked up!", channel)
# Restart Script
# Set Up all the IO Stuff
GPIO.cleanup()
python = sys.executable
os.execl(python, python, * sys.argv)
# Name pins
DialPIN = 25
NumberPIN = 23
handsetPIN = 24
# Set Up Pins
GPIO.setmode(GPIO.BCM)
GPIO.setup(DialPIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(handsetPIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(NumberPIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
# Use an interrupt for the handset, because it can be put down at any time
GPIO.add_event_detect(handsetPIN, GPIO.BOTH, callback = handsetCallback)
# Start audio mixer
pygame.mixer.init()
while True:
try:
# Wait for pick up
print("Wait for pick up...")
handsetContact = GPIO.input(handsetPIN)
while handsetContact == True:
handsetContact = GPIO.input(handsetPIN)
time.sleep (1)
# Which times table to practise
print("Which times table to practise?")
say("audio/welk.mp3")
table = getNummer()
# List to keep track of answered questions
sums = []
for som in range(10):
sums.append(0) # 0 is bad, 1 is goed
numOfCorrectAns = 0
while numOfCorrectAns < 10:
# Set Question?
numOne = random.randint(1,10)
while sums[numOne - 1] == 1:
numOne = random.randint(1,10)
if table == -1:
numTwo = random.randint(1,10)
elif table == 0:
numTwo = 10
else:
numTwo = table
result = numOne * numTwo
numOfDigits = len(str(result))
askQuestion(numOne, numTwo)
thisDigit = 0
answer = ""
# Watch for Answer
while thisDigit < numOfDigits:
nummer = getNummer()
if nummer > -1: # Dial Turned
answer = answer + str(nummer)
thisDigit = thisDigit + 1
else: # Number Key Pressed
askQuestion(numOne, numTwo)
thisDigit = 0
answer = ""
print(answer)
# Check Answer
# string to Int Answer
if int(answer) == result:
numOfCorrectAns = numOfCorrectAns + 1
sums[numOne - 1] = 1
print("Good Job!")
say("audio/goed.mp3")
else:
print("You suck, the correct answer is ", result)
say("audio/fout.mp3")
say("audio/" + str(result) + ".mp3")
print()
time.sleep(1)
say("audio/einde.mp3")
except KeyboardInterrupt: # Ctrl+C
GPIO.cleanup()