import pifacedigitalio as pf

"""
Explanation: PiFace Digital 2
Zorg dat je een Raspberry Pi gebruikt met de PiFace Digital 2 aangesloten en volg de onderstaande stappen één voor één.
Eerst moeten we de Python interpreter vertellen dat we met de PiFace gaan werken en dat hij dus de (reeds geïnstalleerde) PiFace bibliotheek moet inladen.
Zet hiervoor je cursor in de cel hieronder en druk op Shift + Enter om de code die erin staat uit te voeren.
End of explanation
"""


pf.init()

"""
Explanation: Om ons wat typwerk te besparen hebben we bij het importeren de bibliotheek ook meteen hernoemd naar "pf" en zo zullen we ze vanaf nu ook aanroepen.
Voor we het device zelf kunnen gebruiken, moeten we het initialiseren, zodat de bibliotheek alle beginparameters kan goedzetten.
Druk opnieuw op Shift + Enter in de onderstaande cel.
End of explanation
"""


pf.digital_read(0)

"""
Explanation: Nu begint het echte werk :-) De groene en oranje schroefterminals laten we nog even terzijde. We concentreren ons enkel op de knoppen en ledjes die al op het bord gesoldeerd zijn (en die weliswaar op dezelfde Raspberry Pi poorten aangesloten zijn als de terminals).
Wat gebeurt er als je de onderstaande code uitvoert?
End of explanation
"""


pf.digital_read(0)

"""
Explanation: Inderdaad, niet veel :-D
Maar we krijgen wel een antwoord. De "Out[]" lijn is een manier voor IPython om ons te vertellen dat de functie die we uitgevoerd hebben een resultaat teruggeeft en in dit geval is dat "0".
In dit geval is het de PiFace Digital 2 bibliotheek die ons vertelt dat het resultaat van het digitaal ("digital") uitlezen ("read") van de eerste knop (input "0") ook 0 is.
Houd nu knop 0 (S0, het knopje het dichtst bij de scheiding tussen de groene en gele schroefterminals) ingedrukt en voer tegelijkertijd hieronder nogmaals dezelfde code uit:
End of explanation
"""


pf.digital_write(7, 1)

"""
Explanation: 1?
Proficiat! Dit was je eerste succesvolle manipulatie van programmeerbare electronica!
Dan kunnen we nu een stapje verder gaan en een functie met 2 variabelen aanroepen. Probeer eens te bedenken wat de volgende functie zou kunnen doen, voor je ze aanroept.
End of explanation
"""


pf.digital_write(7, 0)

"""
Explanation: Met deze functie zetten we dus de waarde van output "7" op "1". Oftewel, we zetten de LED, aangesloten op de achtste poort (computers beginnen altijd van nul te tellen) op "AAN".
Wat hier eigenlijk gebeurt, is dat we spanning zetten op poort 7 en er dus stroom begint te vloeien door de LED die erop is aangesloten.
Zetten we de spanning weer op 0, dan stopt de stroom en de LED gaat uit:
End of explanation
"""


from time import sleep

while(True):
    pf.digital_write(7, 1)
    sleep(0.4)
    pf.digital_write(7, 0)
    sleep(0.4)
    if (pf.digital_read(3) == 1):
        break

"""
Explanation: Door bibliotheken, functies en structuren samen te voegen, kunnen we programma's schrijven; van heel eenvoudig tot complex. Hieronder een eenvoudig voorbeeld :-)
De functie sleep kunnen we inladen vanuit de time bibliotheek (die onderdeel is van de standaard Python installatie). Met deze functie kan je de computer een aantal seconden (in dit geval 0.4 seconden) laten wachten.
Probeer eens in te schatten wat de code juist doet en voer ze dan uit.
End of explanation
"""


pf.deinit()

pf.InputEventListener?

def button_3_pressed

button_3_listener = pifacedigitalio.InputEventListener()
button_3_listener.register(3, pifacedigitalio.IODIR_ON, print_flag)
button_3_listener.activate()

"""
Explanation: Tip: houd knop S3 (die het dichtst bij de netwerkaansluiting) even ingedrukt (meer dan 0.8 seconden is niet nodig)
End of explanation
"""


