Button & MotionSensor

Σχετικά έγγραφα
Προγραμματισμός με Python στο Raspberry Pi. LED και PWMLED. για το Code Club Απρίλιος Σύλλογος Εκπαιδευτικών Πληροφορικής Χίου

Το κύκλωμα σε breadboard

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

Μάντεψε τον Αριθμό. Έχω Ένα Μυστικό. Το Βρήκα;

Mπαρμπούτι. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Τυχαιότητα

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

Τυχαίοι αριθμοί ρίξε μια «ζαριά»

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Slalom Race Computer Game on Scratch

ΗΜΙΟΥΡΓΙΑ ΠΑΙΧΝΙ ΙΟΥ ΣΤΟ SCRATCH ΒΗΜΑ ΠΡΟΣ ΒΗΜΑ

App Inventor 3ο Μάθημα (Ζάρια - επέκταση)

ΠΑΡΑΡΤΗΜΑ IV. ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ IV Ασκήσεις για το Robolab

Δομές ελέγχου ροής προγράμματος

Μάντεψε τον Αριθμό Φύλλο Εργασίας 2

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων

Mπαρμπούτι. Φύλλο Εργασίας. Τυχαιότητα

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Φύλλο εργασίας 4 - Αυτόματο φωτάκι νυκτός

Μάθημα 1: Εισαγωγή. Κάνε κλικ την εντολή "κινήσου" και με το ποντίκι πατημένο μετέφερε τη στη περιοχή σεναρίων.

10. Πληκτρολόγιο matrix 4x4

1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω:

Κεφάλαιο 13: Φτιάχνοντας παιχνίδια

Εγχειρίδιο Οδηγιών rapidcount E15

Εισαγωγή στην πληροφορική

Δομή Επανάληψης. 3. Επανέλαβε την κίνηση του αυτοκινήτου ώσπου αυτό να ακουμπήσει στο κόκκινο χρώμα.

ΣΚΗΝΙΚΟ ΥΠΟΒΑΘΡΑ ΑΡΧΙΚΗ

Μάντεψε τον Αριθμό. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Μάντεψε!

Tank Rescue Computer Game σε Scratch

Model: ED-CS5000. Ηλεκτρονικός πίνακας ελέγχου για συρόμενες και ανοιγόμενες μονόφυλλες πόρτες.

Καροτοκυνηγός. Αντικείμενα

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα

Εξοικείωση με το NXT-G

Vehicle Security System VSS3 - Vehicle original remote

Αντικειμενοστραφής Προγραμματισμός

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Μάντεψε τον Αριθμό. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Οδηγίες

Σημειωματάριο Δευτέρας 9 Οκτ. 2017

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Γραφικά υπολογιστών Εργαστήριο 2 Παιχνίδια μαντεύματος με τυχαίους αριθμούς και loops

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Εφαρμογές Σειριακής Επικοινωνίας

Breakdance Computer Game σε Scratch.

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Παράρτημα Φύλλο εργασίας 1: Δραστηριότητα 1 : Να αναβοσβήνει η φωτοδίοδος ανά ένα δευτερόλεπτο. Μέλη της ομάδας :

Σημειωματάριο Δευτέρας 20 Νοε. 2017

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

FPU EJ. Κατάλογος περιεχομένων

Σημειωματάριο Δευτέρας 30 Οκτ. 2017

Πληροφορική ΙΙ Θεματική Ενότητα 5

Πληροφορική ΙΙ Θεματική Ενότητα 7

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

Το παιχνίδι Arkanoid με ΒΥΟΒ Στο παιχνίδι αυτό γίνεται εφαρμογή των δυνατοτήτων που προσφέρει το BYOB στον αντικειμενοστραφή προγραμματισμό.

Μάθημα 8 ο Η εντολή ανδιαφορετικά

Θέματα Προγραμματισμού Η/Υ

Σημειωματάριο Τετάρτης 25 Οκτ. 2017

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Οι εντολές ελέγχου της ροής ενός προγράμματος.

1. Απαιτήσεις εργασίας

for for for for( . */

Μάντεψε τον Αριθμό. Φύλλο Εργασίας. Μάντεψε!

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Εισαγωγή στους Υπολογιστές

Φύλλο Εργασίας: Παιχνίδι Λαβύρινθος (MAZE) Προγραμματιστικό Εργαλείο: GAME MAKER. Ονοματεπώνυμο:

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

Διαδικασιακός Προγραμματισμός

Δομή Επιλογής. 1. Αν ο σκύλος ακουμπήσει ένα κόκαλο τότε το κόκαλο εξαφανίζεται και ο παίκτης κερδίζει 10 πόντους.

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

ΔΙΑΛΕΞΗ ΙΙ ΕΝΑ ΒΗΜΑ ΠΑΡΑΠΑΝΩ ΜΕ SCRATCH ΕΠΙΛΕΓΩΝΤΑΣ & ΕΠΑΝΑΛΑΜΒΑΝΟΝΤΑΣ

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Πώς το λένε Computer game στο Scratch

Εισαγωγή στους Υπολογιστές

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

Μπαρμπούτι 2. Τα Κόκκαλα Στον Μάστορα

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ARDUINO

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

ΕΓΧΕΙΡΙΔΙΟ ΠΙΝΑΚΑ ΕΛΕΓΧΟΥ FSM-1 (FSM-1, FBMulti-1/S) (για ΤΑΧΥΚΙΝΗΤΗ ΠΟΡΤΑ RD)

Απλή Δομή Επιλογής. Ο κώδικας. //με χρήση μεταβλητών. delay (3000);

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

ICP-CP500. Οδηγός χρήστη Πληκτρολόγια ICP-CP500

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επιλογής. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ICP-CP508. Οδηγός χρήστη Πληκτρολόγια ICP-CP508

Τα αλφαριθμητικά αποτελούνται από γράμματα, λέξεις ή άλλους χαρακτήρες (π.χ. μήλο, Ιούλιος 2009, You win!).

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

ΕΠΑΝΑΛΗΨΗ ΧΩΡΙΣ ΠΡΟΚΑΘΟΡΙΣΜΕΝΑ ΒΗΜΑΤΑ,ΜΕΤΡΗΤΕΣ,ΜΕΓΙΣΤΟΣ,ΜΕΓΙΣΤΟ ΟΝΟΜΑ Χαμηλόμισθος

ΕΓΧΕΙΡΙ ΙΟ ΕΓΚΑΤΑΣΤΑΣΗΣ

Εισαγωγή στον Προγραμματισμό

Αγώνες αυτοκινήτου Παιχνίδι για 2 παίκτες

Transcript:

Προγραμματισμός με Python στο Raspberry Pi Button & MotionSensor για το Code Club Απρίλιος 06 Σύλλογος Εκπαιδευτικών Πληροφορικής Χίου

Πιεζόμενα πλήκτρα (push buttons) Πλήκτρο-διακόπτης-κουμπί: Συνδέεται σε οποιοδήποτε GPIO pin του Pi. Είσοδος αντί πληκτρολογίου. Ελέγχουμε εμείς τι θα συμβαίνει. from gpiozero import Button b = Button()

Π

Π Όταν και για όσο κρατάμε πατημένο ένα κουμπί, θέλουμε να ανάβει ένα led. 4 5 6 7 8 9 0 from gpiozero import LED, Button from time import sleep led = LED(6) b = Button() while True: if b.is_pressed: led.on() else: led.off() 4

Π Όταν και για όσο κρατάμε πατημένο ένα κουμπί, θέλουμε να ανάβει ένα led. 4 5 6 7 8 9 0 from gpiozero import LED, Button from time import sleep led = LED(6) b = Button() while True: if b.is_pressed: print ("Το ανάβω") led.on() else: print ("Το σβήνω") led.off() # Το led ανάβει και σβήνει όταν πρέπει, αλλά... # οι εντολές (ειδικά της else) εκτελούνται διαρκώς. 5 μέτρια λύση

Π Όταν και για όσο κρατάμε πατημένο ένα κουμπί, θέλουμε να ανάβει ένα led. 4 5 6 7 8 9 0 from gpiozero import LED, Button from time import sleep led = LED(6) b = Button() while True: print("σε αναμονή...") b.wait_for_press() print("το ανάβω") led.on() b.wait_for_release() led.off() print("το σβήνω") # Περίμενε μέχρι να πατηθεί το κουμπί b. # Περίμενε μέχρι να αφεθεί το κουμπί b. 6 ενδεικτική λύση

7 Μια χρήσιμη παρένθεση

from gpiozero import LED myled = LED(6) myled.on() 8

4 from gpiozero import LED myled = LED(6) myled.on() print ("To led ανάβει") 9

from gpiozero import LED myled = LED(6) myled.on() # Δεν αφήνει το LED αναμμένο, # αφού η εκτέλεση τερματίζεται αμέσως 4 5 from gpiozero import LED from signal import pause myled = LED(6) myled.on() pause() # Το LED παραμένει αναμμένο, # αφού ο τερματισμός εμποδίζεται εσκεμμένα 0

Τέλος της χρήσιμης παρένθεσης

Π 4 5 6 7 8 9 0 4 Όταν και για όσο κρατάμε πατημένο ένα κουμπί, θέλουμε να ανάβει ένα led. from gpiozero import LED, Button from signal import pause led = LED(6) b = Button() def do(): print ("Το ανάβω") led.on() def do(): print ("Το σβήνω") led.off() b.when_pressed = do b.when_released = do pause() # Δημιουργούμε μια συνάρτηση που θα εκτελεί τις # ενέργειες που θέλουμε όταν πατηθεί το κουμπί. # Θα εκτελείται με το πάτημα του κουμπιού (βλ. γραμμή ). # Δημιουργούμε μια αντίστοιχη συνάρτηση για τις # ενέργειες που αφορούν στο άφημα του κουμπιού. # Παρακολούθα συνεχώς αν πατήθηκε ή αν αφέθηκε # το κουμπί και κάλεσε την αντίστοιχη συνάρτηση. # Όταν φτάσεις εδώ, απλά περίμενε. ενδεικτική λύση

Π 4 5 6 7 8 9 0 4 Όταν και για όσο κρατάμε πατημένο ένα κουμπί, θέλουμε να ανάβει ένα led. from gpiozero import LED, Button led = LED(6) b = Button() def do(): print ("Το ανάβω") led.on() def do(): print ("Το σβήνω") led.off() b.when_pressed = do b.when_released = do while True: sleep(0.) # Παρακολούθα συνεχώς αν πατήθηκε ή αν # αφέθηκε το κουμπί και δράσε αναλόγως. # Μια while, απλά για να μην τερματιστεί η εκτέλεση. # Η sleep έχει μπει για να πέσει η χρήση της CPU. ενδεικτική λύση

Δ. 4

Δ. Ένα κουμπί θα έχει διπλή λειτουργία: αν το LED ανάβει, θα το σβήνει, ενώ αν είναι σβηστό, θα το ανάβει. 4 5 6 7 8 9 0 from gpiozero import LED, Button from signal import pause led = LED(6) b = Button() # Ορίστε μια συνάρτηση που θα καλείται, όποτε πατιέται το κουμπί. # Αν το led είναι αναμμένο, σβήσε το. # Αν το led είναι σβηστό, άναψέ το. # Δώστε την κατάλληλη εντολή, ώστε να # παρακολουθείτε πότε πατήθηκε το Button. # Σε αυτό το σημείο, απλά εμποδίστε τον τερματισμό του προγράμματος. # Βλ. και ενδεικτική λύση του Π (διαφάνεια ). 5 βοήθεια

Δ. Ένα κουμπί θα έχει διπλή λειτουργία: αν το LED ανάβει, θα το σβήνει, ενώ αν είναι σβηστό, θα το ανάβει. 6 4 5 6 7 8 9 0 4 from gpiozero import LED, Button from time import sleep led = LED(6) b = Button() def do(): if led.is_lit: # else: # print ("Το ανάβω") ) b.when_pressed = do while True: sleep(0.) βοήθεια

Δ. 7

Δ. Παιχνίδι με ένα LED που ελέγχει την αντίδραση του παίκτη. 4 5 6 7 8 9 0 score = 0 lives = 5 def check(): global score, lives b.when_pressed = check # Εισαγωγή των LED και Button, της sleep και της randint. # Δήλωση του led και του Button που θα χρησιμοποιηθούν. # Αρχικοποίηση των μεταβλητών για το σκορ και τις ζωές. # Ορισμός της συνάρτησης που θα ελέγχει κατά πόσο # το κουμπί πατήθηκε με αναμμένο ή σβηστό led και # θα ενημερώνει κατάλληλα το σκορ ή τις ζωές. # Οι μεταβλητές score και lives δηλώνονται ως global, # δηλαδή ισχύουν εντός αλλά και εκτός της συνάρτησης. # Παρακολούθα συνεχώς αν πατήθηκε το Button. # Σε περίπτωση που το Button πατηθεί, # κάλεσε τη συνάρτηση check. 8 βοήθεια

Δ. Παιχνίδι με ένα LED που ελέγχει την αντίδραση του παίκτη. 4 5 6 7 while : print ("Τέλος παιχνιδιού") print ("Tελικό σκορ:", score) # Όσο δεν συντρέχει λόγος να τελειώσει το παιχνίδι: # Άναψε το led για τυχαίο διάστημα, π.χ. για 0.5 έως.5 sec. # Σβήσε το led για τυχαίο διάστημα, π.χ. για έως sec. # Ενημέρωσε τον παίκτη για τις επιδόσεις του. 9 βοήθεια

Δ. 0

Δ. Εφαρμογή που μετράει την ταχύτητα αντίδρασης του χρήστη. 4 5 6 7 8 9 0 good = 0 def check(): global steal b.when_pressed = check # Εισαγωγή LED & Button, time & sleep και randint. # Δήλωση του led και του Button που θα χρησιμοποιηθούν. # Αρχικοποίηση του μετρητή των συνεχόμενων # ικανοποιητικών αντιδράσεων. # Ορισμός της συνάρτησης που θα ελέγχει αν το κουμπί # πατήθηκε με σβηστό led, ώστε να ενημερώνει κατάλληλα # μια λογική μεταβλητή steal. # Παρακολούθα αν πατήθηκε το Button. # Σε περίπτωση που το Button πατηθεί, # κάλεσε τη συνάρτηση check. βοήθεια

Δ. Εφαρμογή που μετράει την ταχύτητα αντίδρασης του χρήστη. 4 5 6 7 8 9 0 while : print ("Συγχαρητήρια!") # Όσο δεν ικανοποιείται η συνθήκη τερματισμού: # Άναψε το led μετά από τυχαίο διάστημα, π.χ. έως sec. # Κατάγραψε πότε άναψε (τη χρονική στιγμή). # Περίμενε να πατηθεί το κουμπί. # Κατάγραψε πότε πατήθηκε το κουμπί (τη χρονική στιγμή). # Υπολόγισε το χρόνο αντίδρασης και σβήσε το led. # Έλεγξε αν τυχόν ο χρήστης έκλεψε: # Αν έκλεψε, μηδένισε το μετρητή. # Αν όχι, εμφάνισε το χρόνο του και # έλεγξε κατά πόσο ο χρόνος ήταν ικανοποιητικός. βοήθεια

MotionSensor Αισθητήρας ανίχνευσης κίνησης (PIR sensor)

Αισθητήρας ανίχνευσης κίνησης (Passive InfraRed Sensor) 4 http://www.tweaking4all.com/hardware/pir-sensor/

Αισθητήρας ανίχνευσης κίνησης (Passive InfraRed Sensor) from gpiozero import MotionSensor p = MotionSensor(8) 5 http://www.tweaking4all.com/hardware/pir-sensor/

MotionSensor Π 6

MotionSensor Π Όταν και για όσο ανιχνεύεται κίνηση, να ανάβει ένα led. 4 5 6 7 8 9 0 from gpiozero import LED, MotionSensor from time import sleep led = LED(6) pir = MotionSensor(8) while True: print("σε αναμονή...") pir.wait_for_motion() print("ανιχνεύτηκε κίνηση") led.on() pir.wait_for_no_motion() led.off() print("η κίνηση σταμάτησε") 7 ενδεικτική λύση

MotionSensor Π Όταν και για όσο ανιχνεύεται κίνηση, να ανάβει ένα led. 4 5 6 7 8 9 0 from gpiozero import LED, MotionSensor from signal import pause led = LED(6) pir = MotionSensor(8) def alarm_on(): print ("Ανιχνεύτηκε κίνηση") led.on() def alarm_off(): print ("Η κίνηση σταμάτησε") led.off() pir.when_motion = alarm_on pir.when_no_motion = alarm_off pause() 8 ενδεικτική λύση

MotionSensor Π Όταν και για όσο ανιχνεύεται κίνηση, να ανάβει ένα led. Α. Μετρήστε για πόση ώρα παραμένει ενεργή η έξοδος του PIR sensor. 4 5 from time import sleep, time t = time() sleep(5) t = time() print ("Χρόνος: ",round(t-t, ) ) # Εισαγωγή της time. # Καταγραφή της χρονικής στιγμής. # Καταγραφή της χρονικής στιγμής. # Εμφάνιση του χρόνου που πέρασε, # στρογγυλοποιημένου στα δεκαδικά ψηφία. Β. Καταγράψτε και εμφανίστε την ημερομηνία και ώρα που ανιχνεύθηκε κίνηση. from datetime import datetime t = datetime.now() print ("Ημερομηνία και ώρα: ", t ) # Εισαγωγή της datetime. # Καταγραφή της τρέχουσας ημ/νίας και ώρας. # Εμφάνιση με τη μορφή 06-0-5 :0:40.98409. 9 βοήθεια για επεκτάσεις

Παράρτημα Ενδεικτικές λύσεις 0

Δ. Ένα κουμπί θα έχει διπλή λειτουργία: αν το LED ανάβει, θα το σβήνει, ενώ αν είναι σβηστό, θα το ανάβει. 4 5 6 7 8 9 0 from gpiozero import LED, Button from signal import pause led = LED(6) b = Button() def do(): if led.is_lit: print ("Το σβήνω") led.off() else: print ("Το ανάβω") led.on() b.when_pressed = do pause() # Η συνάρτηση do θα καλείται όταν πατιέται # το κουμπί (βλ. γραμμή ) και εκτελεί τις # ενέργειες που θέλουμε σε συνδυασμό με # το αν το led ανάβει ή όχι. # Παρακολούθα πότε πατιέται το κουμπί. # Η pause αποτρέπει τον τερματισμό της # εκτέλεσης του προγράμματος. ενδεικτική λύση (d. toggle_.py)

Δ. Ένα κουμπί θα έχει διπλή λειτουργία: αν το LED ανάβει, θα το σβήνει, ενώ αν είναι σβηστό, θα το ανάβει. 4 5 6 7 8 9 0 from gpiozero import LED, Button led = LED(6) b = Button() while True: b.wait_for_press() if led.is_lit == False: led.on() else: led.off() b.wait_for_release() ενδεικτική λύση

Δ. Ένα κουμπί θα έχει διπλή λειτουργία: αν το LED ανάβει, θα το σβήνει, ενώ αν είναι σβηστό, θα το ανάβει. 4 5 6 7 8 9 0 from gpiozero import LED, Button led = LED(6) b = Button() state = 0 while True: b.wait_for_press() if state == 0: led.on() state = else: led.off() state = 0 b.wait_for_release() # Έστω state η τρέχουσα κατάσταση του led. # Αρχικά το led είναι σβηστό (θεωρούμε state = 0). # Ενημέρωσε την τιμή της state. # Ενημέρωσε την τιμή της state. ενδεικτική λύση

Δ. Παιχνίδι με ένα LED που ελέγχει την αντίδραση του παίκτη. 4 5 6 7 8 9 0 from gpiozero import LED, Button from time import sleep from random import randint led = LED(5) b = Button() score = 0 lives = 5 duration = 0 passed = 0 4 5 6 7 8 9 0 def check(): global score, lives if led.is_lit: print ("Μπράβο!") score = score + else: print ("Ουπς...") lives = lives - b.when_pressed = check 4 d..reactiongame.py

Δ. Παιχνίδι με ένα LED που ελέγχει την αντίδραση του παίκτη. 5 4 5 6 7 8 9 0 while lives > 0 and passed <= duration: led.on() t = randint(50, 50) / 00 passed = passed + t sleep(t) led.off() t = randint(00, 00) / 00 sleep(t) print ("Το παιχνίδι τελείωσε!") print ("Tελικό σκορ:", score) if lives > 0: print ("Απέμεναν και", lives, "ζωές.") d..reactiongame.py

Δ. Εφαρμογή που μετράει την ταχύτητα αντίδρασης του χρήστη. 6 4 5 6 7 8 9 0 4 from gpiozero import LED, Button from time import sleep, time from random import randint led = LED(6) b = Button() good = 0 def check(): global steal if not led.is_lit: steal = True b.when_pressed = check 5 6 7 8 9 0 4 5 while good <: steal = False print ("Έτοιμος;") t = randint(0, 0) / 0 sleep(t) led.on() time = time() b.wait_for_press() time = time() reaction_time = time - time led.off() d..reactioncounter.py

Δ. 7 6 7 8 9 0 4 5 6 7 8 Εφαρμογή που μετράει την ταχύτητα αντίδρασης του χρήστη. if steal: print ("Μήπως κλέβεις;") good = 0 else: reaction_time = round (reaction_time, ) if reaction_time <= 0.5: good = good + print ("Μπράβο γρήγορε! Χρόνος:", reaction_time) else: good = 0 print ("Μπορείς και καλύτερα! Χρόνος:", reaction_time) print ("\nσυγχαρητήρια, τα κατάφερες!") d..reactioncounter.py

Παράρτημα B Περισσότερα στοιχεία για τα buttons 8

9 Διακόπτης - πλήκτρο

Για μεγαλύτερη ασφάλεια kω 0 kω 40

Το υλικό αυτό διατίθεται με άδεια Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή.0. http://creativecommons.org/licenses/by-sa/.0/gr/ Η αναφορά σε αυτό θα πρέπει να γίνεται ως εξής: Προγραμματισμός με Python στο Raspberry Pi. Γιώργος Χατζηνικολάκης, Σύλλογος Εκπαιδευτικών Πληροφορικής Χίου, Απρίλιος 06.