PyPrintPi på en Raspberry Pi (22 / 23 steg)
Steg 22: Den slutliga programmet!
Sista programmet behövs för att bestå av fyra huvudsteg:
- Be användaren om de vill beräkna π eller bara använda ett fördefinierat värde.
- Be användaren hur många siffror av π de vill beräkna.
- Beräkning av π, eller helt enkelt kopiera dess värde om användaren beslutat att de vill göra.
- Skriva ut π på termopapper.
Det finns också flera andra krav programmet måste uppfylla:
- Alla in- och utdata måste ske med hjälp av endast knapparna och skrivaren.
- Programmet bör endast köras en gång, som om vi kör det här programmet vid start vi vill avsluta fint så vi kan fortsätta till Linux.
- Programmet bör endast skriva ut korta linjer som de fungerar bättre på termoskrivaren
- Programmet bör göra det enkelt att anpassa namnen på knapparna, så om folk inte har en knappsats eller har använt olika knappar än de jag använde de kan byta namn på sina knappar därmed. Detta bör endast påverka vad programmet ut, inte hur det går.
För att se hur jag uppfyllt dessa krav på din Pi, skriver du:
Nano main.py
eller bara titta på main.py:
#import dependancies
importera RPi.GPIO som GPIO
Importera tid
importera PiPrintLib
#set upp gpio korrekt
GPIO.setmode (GPIO. BCM)
GPIO.setup (23, GPIO. I)
GPIO.setup (24, GPIO. I)
GPIO.setup (25, GPIO. I)
#set upp namn, används för att prata med användaren på knappar
button1_name = "*"
button2_name = "7"
button3_name = "#"
#This block av kod be användaren om de vill fuska
PiPrintLib.printer_print ("vill du fuska")
PiPrintLib.printer_print ("och använda värden)
PiPrintLib.printer_print ("från pi_cheat.txt?\n")
PiPrintLib.printer_print("")
PiPrintLib.printer_print("")
PiPrintLib.printer_print ("om du fuskar du kommer inte att")
PiPrintLib.printer_print ("beräkna pi,")
PiPrintLib.printer_print ("bara skriva ut den.")
PiPrintLib.printer_print("")
PiPrintLib.printer_print ("om du vill fuska,")
PiPrintLib.printer_print ("Tryck på" + button1_name)
PiPrintLib.printer_print("")
PiPrintLib.printer_print ("om du vill beräkna,")
PiPrintLib.printer_print ("Tryck på" + button2_name)
PiPrintLib.printer_print("")
PiPrintLib.printer_print("")
fuska = 0 #value för om användaren vill fuska
medan True: #This slinga väntar för användaren att välja huruvida de vill fuska
om (GPIO.input(23)):
PiPrintLib.printer_print ("du valde att fuska")
fuska = 1
Break
om (GPIO.input(24)):
PiPrintLib.printer_print ("du valde att beräkna")
Break
PiPrintLib.printer_print("")
decimal_power_of_ten = 4 #a värde för hur många platser för pi användaren vill utskrift
PiPrintLib.printer_print ("du kommer nu välja")
PiPrintLib.printer_print ("hur många platser av pi")
PiPrintLib.printer_print ("ska skrivas ut.")
PiPrintLib.printer_print ("du kan bara välja")
PiPrintLib.printer_print ("en kraft tio.")
Uppdaterad = 1 #variable används för nästa loopen. Används för att kontrollera huruvida en knapp har tryckts sedan den senaste iterationen
medan True: #This slinga väntar för användaren att antalet siffror av pi de vill skriva ut.
om uppdaterat == 1:
#this block av kod ombeds användaren vad de vill göra
PiPrintLib.printer_print ("detta program")
PiPrintLib.printer_print ("är för närvarande set")
PiPrintLib.printer_print ("att skriva ut 10 ^" + str(decimal_power_of_ten) + "siffror av pi")
PiPrintLib.printer_print ("att öka")
PiPrintLib.printer_print ("kraften av 1:")
PiPrintLib.printer_print ("Press" + button3_name)
PiPrintLib.printer_print("")
PiPrintLib.printer_print ("att minska")
PiPrintLib.printer_print ("kraften av 1:")
PiPrintLib.printer_print ("Press" + button1_name)
PiPrintLib.printer_print("")
PiPrintLib.printer_print ("att köra programmet:")
PiPrintLib.printer_print ("Press" + button2_name)
PiPrintLib.printer_print("")
PiPrintLib.printer_print("")
uppdaterad = 0
om (GPIO.input(23)):
decimal_power_of_ten-= 1
Uppdaterad = 1
om decimal_power_of_ten < 1:
PiPrintLib.printer_print ("du inte kan gå att låga.")
decimal_power_of_ten = 1
om (GPIO.input(25)):
decimal_power_of_ten + = 1
Uppdaterad = 1
om decimal_power_of_ten > 6:
PiPrintLib.printer_print ("du inte kan gå så högt.")
decimal_power_of_ten = 6
om (GPIO.input(24)):
Break
start_time = time.time()
om fuska:
PiPrintLib.pi_cheat(10**decimal_power_of_ten)
annat:
PiPrintLib.gauss_pi_method(10**decimal_power_of_ten)
end_time = time.time()
PiPrintLib.printer_print ("Pi var bara beräknat i:")
PiPrintLib.printer_print ("%s sekunder" % (time.time() - starttid))
PiPrintLib.printer_print("")
PiPrintLib.printer_print ("Pi till" + str(10**decimal_power_of_ten) + "decimaler är")
PiPrintLib.printpi()
Medan detta program kanske lite längre än föregående program det lätt att förstå om går du igenom det steg för steg.
Om du vill ändra namnen på knappar, bara ändra den följande kodsnutt:
button1_name = "*"
button2_name = "7"
button3_name = "#"
för att passa dina behov.
Prova att köra programmet genom att skriva:
sudo python3 main.py
Du bör kunna välja huruvida du vill beräkna π, hur många platser du vill skriva ut π att sedan få det att skriva ut π!