Σε αυτό το εργαστήριο θα χρησιμοποιήσουμε τον αισθητήρα στάθμης νερού για να δημιουργήσουμε στο Pictoblox ένα έργο που θα μας πληροφορεί με ένα ενδιαφέρον animation για το πόσο πολύ νερό υπάρχει σε ένα δοχείο.
Ο αισθητήρας στάθμης
Ο αισθητήρας στάθμης νερού διαθέτει μια επιφάνεια η οποία μπορεί να αντιληφθεί το σημείο στο οποίο είναι καλυμμένη με νερό με τον παρακάτω τρόπο:
- Όσο περισσότερο νερό υπάρχει στο δοχείο τόσο περισσότερη αγωγιμότητα έχει και λιγότερη αντίσταση στο ρεύμα.
- Όσο λιγότερο νερό υπάρχει στο δοχείο τόσο μικρότερη αγωγιμότητα έχει και μεγαλύτερη αντίσταση στο ρεύμα.
Ο αισθητήρας επιστρέφει στο Arduino μια τιμή από το 0 ως το 1023 που αντιπροσωπεύει την αντίσταση που αντιλαμβάνεται. Έτσι αν υπάρχει πολύ νερό στο δοχείο και η αντίσταση γίνει 0 στέλνει στο Arduino το 0, ενώ αν το δοχείο είναι άδειο και η αντίσταση είναι 1023 στέλνει στο Arduino το 1023.
Αυτό σημαίνει ότι όσο πιο πολύ νερό υπάρχει στο δοχείο τόσο μικρότερη γίνεται η τιμή του αισθητήρα που επιστρέφει στο Arduino.
Σύνδεση αισθητήρα με Arduino
Για να συνδέσουμε τον αισθητήρα με το Arduino θα χρειαστούμε τρία καλώδια:
- Ένα καλώδιο για την παροχή ρεύματος 5V από την υποδοχή + του αισθητήρα στην υποδοχή 5V του Arduino. Συνήθως βάζουμε κόκκινα καλώδια για αυτές τις συνδέσεις.
- Ένα καλώδιο για την γείωση ώστε να κλείσει το κύκλωμα, από την υποδοχή – του αισθητήρα στην υποδοχή GND του Arduino. Συνήθως βάζουμε μαύρα ή σκούρα καφέ καλώδια για αυτές τις συνδέσεις.
- Ένα καλώδιο για την μεταφορά δεδομένων, από την υποδοχή S του αισθητήρα στην υποδοχή Α0 του Arduino.
Σύνδεση Arduino με Pictoblox
Πριν ξεκινήσουμε να γράφουμε το πρόγραμμα μας θα συνδέσουμε πρώτα το Arduino με το Pictoblox και μετά θα κάνουμε upload firmware αφού θα δουλέψουμε σε κατάσταση Stage. Αν δεν θυμάστε πως γίνεται δείτε το αντίστοιχο εργαστήριο.
Σκηνή και αντικείμενα
Για να δείξουμε την αλλαγή της στάθμης του νερού στο Pictoblox θα αξιοποιήσουμε και τον Tobi ο οποίος θέλουμε να επιπλέει με την βοήθεια μιας σανίδας πάνω στο νερό. Αρχικά θα διαγράψουμε τις ενδυμασίες που δεν χρειαζόμαστε (στην ουσία κρατάμε μόνο την πρώτη ενδυμασία). Στη συνέχεια ζωγραφίζουμε ένα ορθογώνιο στα πόδια του Tobi που θα είναι η σανίδα με την οποία θα επιπλέει. Τέλος πολύ σημαντικό είναι να αλλάξουμε το κέντρο της ενδυμασίας! Επειδή θα δώσουμε αργότερα εντολή στον Tobi να πηγαίνει εκεί που είναι η στάθμη του νερού θα πρέπει να ορίσουμε ως κέντρο της ενδυμασίας την σανίδα που έχει στα πόδια του.
Εκτός από τον Tobi θα χρειαστούμε άλλον έναν χαρακτήρα που θα αντιπροσωπεύει το νερό στη σκηνή μας. Στην ουσία θέλουμε ένα γαλάζιο ορθογώνιο το οποίο να καλύπτει όλο το πλάτος της σκηνής (δεν μας πειράζει να βγαίνει και εκτός ορίων). Σημαντικό είναι επίσης να ορίσουμε ως κέντρο της ενδυμασίας το πάνω μέρος του νερού! Έτσι όταν δίνουμε οδηγίες στον Tobi να πηγαίνει στο νερό, θα ακουμπάει το πάνω μέρος του.
Προγραμματισμός νερού
Αρχικά θα χρειαστούμε μια μεταβλητή που θα κρατάει την στάθμη του νερού που διαβάζει ο αισθητήρας.
Μπορούμε λοιπόν να πούμε στον χαρακτήρα του νερού να αποθηκεύει συνέχεια την τιμή που διαβάζει από τον αισθητήρα στην μεταβλητή που φτιάξαμε. Θα χρειαστούμε την εντολή “read analog sensor” από την κατηγορία sensors, επιλέγοντας ως είδος αισθητήρα το generic (αφού δεν υπάρχει ειδική επιλογή για την στάθμη νερού) και ως θέση την A0 στην οποία έχουμε συνδέσει το καλώδιο του αισθητήρα.
Μετατροπή της τιμής σε κάτι πιο κατανοητό
Ο αισθητήρας βροχής όπως είδαμε παραπάνω παίρνει τιμές από 0 ως 1023 μόνο που το 0 σημαίνει περισσότερο νερό στο δοχείο, ενώ όσο αυξάνει ο αριθμός σημαίνει ότι το νερό μειώνεται. Αυτό που θέλουμε να πετύχουμε εμείς είναι όσο αυξάνει το νερό στο δοχείο να ανεβαίνει ο χαρακτήρας του νερού στο Pictoblox όλο και πιο ψηλά, ενώ όσο μειώνεται το νερό στο δοχείο να κατεβαίνει ο χαρακτήρας προς τα κάτω.
Το ύψος του χαρακτήρα στην οθόνη του Pictoblox μπορούμε να το δούμε από την τιμή y. Θα πρέπει να βρούμε ποιες είναι οι δύο τιμές y που θέλουμε να έχει το νερό στην οθόνη όταν το δοχείο είναι άδειο και όταν είναι γεμάτο. Μπορούμε να μετακινήσουμε τον χαρακτήρα με το ποντίκι στην αρχική και τελική του θέση και να σημειώσουμε τις τιμές του y.
Άρα τώρα ξέρουμε ότι όταν ο αισθητήρας είναι 1023 το y του νερού στο Pictoblox πρέπει να είναι -160 και όσο η τιμή του αισθητήρα μειώνεται θα μεγαλώνει το y μέχρι να φτάσει το 50. Πως θα το πετύχουμε αυτό; Υπάρχει μια πολύ ενδιαφέρουσα εντολή στην κατηγορία Arduino η οποία λέγεται map.
Προγραμματισμός Tobi
Αφού ολοκληρώσουμε το πρόγραμμα για τον χαρακτήρα του νερού θα προγραμματίσουμε τον Tobi να επιπλέει διαρκώς πάνω του. Δεν είναι κάτι δύσκολο! Το μόνο που χρειάζεται είναι να του πούμε να πηγαίνει διαρκώς στην θέση που είναι το νερό! Μπορείτε να το βρείτε σίγουρα μόνοι σας!
Το τελικό αποτέλεσμα
Μπορούμε να δοκιμάσουμε το πρόγραμμα μας χρησιμοποιώντας ένα πλαστικό δοχείο στο οποίο θα κολλήσουμε προσωρινά με λίγη σιλικόνη τον αισθητήρα στάθμης. Όσο προσθέτουμε νερό στο δοχείο θα πρέπει η στάθμη στην οθόνη να ανεβαίνει!
Επέκταση με την χρήση οθόνης DOT Matrix
Αφού αποθηκεύσουμε το παραπάνω πρόγραμμα στον υπολογιστή μας, πάμε να κάνουμε μερικές αλλαγές για να χρησιμοποιούμε μια οθόνη DOT Matrix για να μας ειδοποιεί για την στάθμη του νερού στο ποτήρι.
Η οθόνη DOT Matrix
Οι οθόνες Dot Matrix είναι συστοιχίες από led λαμπάκια. Οι πιο συνηθισμένες που κυκλοφορούν στην αγορά έχουν 64 led σε 8 σειρές και 8 στήλες. Όπως είναι εύκολα κατανοητό με ανάλυση 8×8 δεν μπορούν να συγκριθούν με τις υπόλοιπες LED και TFT οθόνες, αλλά για αναπαράσταση κειμένου και απλών γραφικών μπορούν να κάνουν ικανοποιητική δουλειά.
Σύνδεση Arduino με Breadboard
Επειδή τώρα θα έχουμε 2 συσκευές συνδεδεμένες στο Arduino (αισθητήρας και οθόνη DOT Matrix), όπου και οι 2 χρειάζονται 5V και γείωση θα χρησιμοποιήσουμε και ένα Breadboard για να κάνουμε τις συνδέσεις των καλωδίων. Μπορείτε να δείτε περισσότερα για το πως χρησιμοποιούμε τα breadboard στο αντίστοιχο εργαστήριο.
Σύνδεση αισθητήρα με Breadboard
Σύνδεση οθόνης DOT MATRIX με Breadboard
Προγραμματισμός
Αφού έχουμε συνδέσει σωστά τις συσκευές μας ήρθε η ώρα να κάνουμε αλλαγές στο πρόγραμμα μας ώστε τα αποτελέσματα να πηγαίνουν στην οθόνη και όχι στον υπολογιστή.
Αρχικά θα πρέπει να αλλάξουμε κατάσταση και από stage να πάμε στην κατάσταση upload αφού τώρα θα στέλνουμε το πρόγραμμα στο Arduino ώστε να τρέχει από εκεί και όχι από τον υπολογιστή. Μπορείτε να δείτε πιο αναλυτικά πληροφορίες για τις 2 καταστάσεις στο αντίστοιχο εργαστήριο.
Πάμε τώρα να φτιάξουμε το πρόγραμμα μας.
Δημιουργούμε μια μεταβλητή με το όνομα στάθμη στην οποία θα αποθηκεύουμε την τιμή του αισθητήρα. Επειδή όμως ο αισθητήρας στέλνει τιμές από το 1023 (καθόλου νερό) μέχρι 0 (γεμάτο νερό) θα χρησιμοποιήσουμε την εντολή map για να μετατρέψουμε τις τιμές αυτές από 1 (καθόλου νερό) ως 8 (γεμάτο νερό). Και γιατί μέχρι 8; Γιατί η οθόνη έχει 8 σειρές, άρα όταν είναι γεμάτο το ποτήρι θα γεμίζει και η οθόνη.
Και τώρα με συνεχόμενα Εαν… τότε θα ανάβουμε τα κατάλληλα led στην οθόνη.
Pingback: 2η συνάντηση 2022-2023 – Μικροί Χάκερ