Dette prosjektet skal bli et utgangspunkt for mange spennede oppgaver. Bare tenk deg hvor mange oppgaver som i dag lĂžses med fire tall. Eksempler er klokke, temperatur, avstander, vekt osv.
For Ä fÄ fullt utbytte av denne oppgaven burde du kjenne til hva:
Datasheet eller teknisk beskrivelse som du ser over er et viktig dokument som forteller oss hvordan enheten er laget og virker. Det er viktig Ä lÊre seg og forstÄ en del av de tekniske aspektene av produkter fordi vi rett og slett ikke kommer oss videre uten.
Hvis du ser etter kan du se at alle beina pÄ enheten har nummer. De nummerne/beina henger sammen med hvilken diode som skal lyse pÄ enheten. NÄr vi kobler opp enheten og skal lage et koblingsskjema, er det denne informasjonen vi bruker.
Det vi ser her er en sÄkalt "matrise", det betyr at alle dioder pÄ alle tall er koblet sammen. Hvis vi setter "-" pÄ felles katoden "D1" (ben en) og "+" pÄ "A" (ben 14) sÄ lyser alle tallene pÄ samme sted opp. I dette tilfelle ville A lyse opp, og det er den Þverste dioden. PrÞv selv!
Det som er meningen med en slik matrisekobling er av benytter oss av at Þyet ikke kan oppdage at diodene slÄs pÄ og av veldig raskt, slik at det ser ut som alle lyser samtidig selv om de ikke gjÞre det. Det vil si at vi skrur pÄ tall nr 1, deretter skrur vi det av for Ä skru pÄ tall nr. 2 osv. Dette skjer sÄ fort av vi ikke kan se det. Du kan prÞve Ä endre pÄ koden selv for Ä fÄ frem effekten av dette. Hvilken del av koden mÄ du endre?
import RPi.GPIO as GPIO #Importerer en pakke med en klasse som kan styre IO portene pÄ RPi og kaller den GPIO
import time as t #Importerer time for Ă„ bruke klokken til Ă„ vente ett sekund og kaller den t
GPIO.setmode(GPIO.BCM) #Setter GPIO til Broadcom chipen pÄ RPi kortet
GPIO.setwarnings(False) #Hopper over hvis det kommer noen varsler
led1 = 5
led2 = 6
led3 = 19
led4 = 26
ledalle = (5,6,19,26)
leds =[led1,led2,led3,led4]
tall0 = (16,12,13,22,27,20)
tall1 = (12,13)
tall2 = (16,12,21,27,22)
tall3 = (16,12,21,13,22)
tall4 = (20,21,12,13)
tall5 = (16,20,21,13,22)
tall6 = (16,13,22,27,20,21)
tall7 = (16,12,13)
tall8 = (16,12,13,22,27,20,21)
tall9 = (16,12,13,20,21)
alle = (5,6,19,26,16,12,13,22,27,20,21)
led14 = (5,6,19,26) #dette er de fire katodene
tall = [tall0,tall1,tall2,tall3,tall4,tall5,tall6,tall7,tall8,tall9]
GPIO.setup(alle,GPIO.OUT)
GPIO.output(led14,GPIO.HIGH)
GPIO.output(tall8,GPIO.LOW)
def settid():
t.sleep(0.0050)
return;
def counter(nr1,nr2,nr3,nr4): #her defineres hva som skal vises pÄ
tell = 0
while (tell < 50): #bruker ett sekund pÄ lÞkken#setkatode()
GPIO.output(ledalle, GPIO.HIGH) #skrur av alle katodene
GPIO.output(tall8,GPIO.LOW) #skrur av alle anodene
GPIO.output(led1, GPIO.LOW) #setter pÄ katoden pÄ led1
GPIO.output(tall[nr1], GPIO.HIGH) #setter pÄ det tallet som sendes
settid()
GPIO.output(ledalle, GPIO.HIGH)
GPIO.output(tall8,GPIO.LOW)
GPIO.output(led2, GPIO.LOW)
GPIO.output(tall[nr2], GPIO.HIGH)
settid()
GPIO.output(ledalle, GPIO.HIGH)
GPIO.output(tall8,GPIO.LOW)
GPIO.output(led3, GPIO.LOW)
GPIO.output(tall[nr3], GPIO.HIGH)
settid()
GPIO.output(ledalle, GPIO.HIGH)
GPIO.output(tall8,GPIO.LOW)
GPIO.output(led4, GPIO.LOW)
GPIO.output(tall[nr4], GPIO.HIGH)
settid()
tell = tell + 1
return;
def number4(a,b,c,d):
d = 0
for d in range(10):
counter(a,b,c,d)
return;
def number3(a,b,c,d):
if b == 0:
x = 1
else:
x = 0
for c in range(x,6):
number4(a,b,c,d)
return;
def number2(a,b,c,d):
if a == 0:
x = 1
else:
x = 0
for b in range(x,10):
number3(a,b,c,d)
return;
def number1(a,b,c,d):
for a in range(1,6):
number2(a,b,c,d)
return;
while True: #En lÞkke som gÄr i evig tid
a,b,c,d = 0,0,0,0
number4(a,b,c,d)
number3(a,b,c,d)
number2(a,b,c,d)
number1(a,b,c,d)