Stap 2: Code
#! / usr/bin/env python
#Uses drijvende ingangen op GPIO4, GPIO17 en GPIO22 echt willekeurige getallen genereren
#Outputs tot en met 25 van de GPIO wanneer een nieuw nummer is klaar en het nummer naar STDOUT stuurt
importeren van RPi.GPIO als GPIO
importeren van sys
importeren van tijd slaap
GPIO.setmode (GPIO. BCM)
def getRBit (pin1 PIN2-, pin3, tts): #gets een willekeurige reeks bits, XORs hen en op willekeurige beet-uitgang
bit1 = 0
bit2 = 0
bit3 = 0
BITV = 0
GPIO.setup (pin1, GPIO. IN)
GPIO.setup (pin2, GPIO. IN)
GPIO.setup (pin3, GPIO. IN)
Sleep(TTS) #Sleep zodat de CPU kan prutsen en de EMF-omgeving veranderen
bit1 = GPIO.input(pin1)
Als bit1:
bit1 = 1
anders:
bit1 = 0
Sleep(TTS) #Sleep zodat de CPU kan prutsen en de EMF-omgeving veranderen
bit2 = GPIO.input(pin2)
Als bit2:
bit2 = 1
anders:
bit2 = 0
Sleep(TTS) #Sleep zodat de CPU kan prutsen en de EMF-omgeving veranderen
bit3 = GPIO.input(pin3)
Als bit3:
bit3 = 1
anders:
bit3 = 0
#Now doen sommige XOR-logica
BITV = bit1 ^ bit2
uit = bitv ^ bit3
terug uit
def getRInt (x, pin1 PIN2-, pin3, pin4, tts = 0,01): #get een x-bits nummer door het doorlopen van een tekenreeks een bos. Pin4 is LEDout.
GPIO.setup (pin4, GPIO. UIT)
binstr = "" #Set t/m worden geconverteerd naar een binair getal
Rint = 0
rbit = 0
Ik = 0
voor ik in bereik (0, x-1):
Ik += 1
rbit = getRBit (pin1 PIN2-, pin3, tts)
binstr = binstr + str(rbit)
#print(binstr) # voor het opsporen van fouten
Rint = int (binstr, 2)
GPIO.output (pin4, True)
Sleep(0.2)
GPIO.output (pin4, False)
retourneren rint
terwijl juist:
afdrukken (getRInt (64, 4, 17, 22, 25, 0,01)) #bits, in1, in2 3, uit, tts