Page 7 - Linux Inside τ. 11 preview

Linux Inside
61
*/
const int buttonPin = 2; // input pin for pushbutton
int previousButtonState = HIGH; // for checking the state
of a pushButton
int counter = 0; // button push counter
void setup()
{
//
make the pushButton pin an input:
pinMode(buttonPin, INPUT);
//
initialize control over the keyboard:
Keyboard.begin();
}
void loop()
{
//
read the pushbutton:
int buttonState = digitalRead(buttonPin);
//
if the button state has changed,
if ((buttonState != previousButtonState)
//
and it's currently pressed:
&&
(
buttonState == HIGH))
{
//
increment the button counter
counter++;
//
type out a message
Keyboard.print("You pressed the button ");
Keyboard.print(counter);
Keyboard.println(" times.");
}
//
save the current button state for comparison
next time:
previousButtonState = buttonState;
}
Κατ’ αρχάς, όπως θα δείτε και στα σχόλια, θα πρέπει να
συνδέσουμε ένα κουμπί και μία αντίσταση στο Pin 2 του
Arduino. Φυσικά, ξέρετε πώς να το κάνετε αυτό, αφού έχετε
διαβάσει τα προηγούμενα άρθρα. Επειδή όμως μπορεί να το
ξεχάσατε, συνδέουμε το ένα άκρο της αντίστασης με το pin 2
και το άλλο στο Gnd. Στη συνέχεια, παίρνουμε ένα καλώδιο
και συνδέουμε τη μία άκρη του στο pin 2 και την άλλη άκρη
του στο κουμπί μας. Τέλος, χρησιμοποιώντας ακόμη ένα κα-
λώδιο, συνδέουμε τη μία άκρη του στο κουμπί μας και την άλ-
λη άκρη του στα 5V, όπως βλέπετε και στην εικόνα. Για πιο
αναλυτικές οδηγίες, μπορείτε να δείτε τα προηγούμενα άρ-
θρα ή να διαβάσετε τον εξαιρετικό οδηγό για τις εισόδους
του Arduino από το Adafruit, που βρίσκεται στο
Ας δούμε όμως τι κάνει ο κώδικάς μας. Όπως ήδη θα ξέ-
ρετε, στην αρχή έχουμε διάφορες γενικές (global) μεταβλη-
τές που αρχικοποιούνται και είναι διαθέσιμες σε όλα τα ση-
μεία του κώδικά μας. Οπότε αρχικοποιούμε το pin που θα
χρησιμοποιήσουμε, την αρχική κατάσταση του κουμπιού, κα-
θώς και έναν μετρητή. Στη συνέχεια, εκτελείται ο κώδικας μέ-
σα στη συνάρτηση setup(), όπου θέτουμε το pin2 ως είσοδο
και ξεκινάμε το πληκτρολόγιο. Τέλος, ο κώδικας που βρίσκε-
ται μέσα στην loop(), θα εκτελείται συνέχεια όσο το Arduino
είναι συνδεδεμένο. Πιο αναλυτικά, αν το κουμπί μας πατήθη-
κε, δηλαδή έχει αλλάξει η κατάστασή του και η τωρινή κατά-
σταση είναι η «πατημένη», τότε αυξάνουμε το μετρητή μας και
«
γράφουμε» ως πληκτρολόγιο το πόσες φορές πατήθηκε το
κουμπί.
Για να δοκιμάσουμε το πρόγραμμά μας, αρκεί να προ-
γραμματίσουμε ένα Arduino Leonardo με τον παραπάνω κώ-
δικα, να συνδέσουμε το κουμπί και στη συνέχεια να ανοίξουμε
έναν κειμενογράφο. Πατώντας το κουμπί, θα δούμε ότι το
Leonardo, ως πραγματικό πληκτρολόγιο, θα γράψει ότι πατή-
σαμε το κουμπί μία φορά. Πατώντας το ξανά, θα γράψει ότι
το πατήσαμε δύο φορές κ.ο.κ. Φανταστείτε τι άλλο μπορούμε
να κάνουμε! Για να πάρετε μία ακόμη ιδέα, πολλοί άνθρωποι
φτιάχνουν τα δικά τους πληκτρολόγια με τα κουμπιά και τα
layouts που οι ίδιοι θέλουν, χρησιμοποιώντας μέχρι πρότινος
το Teensy, μία συσκευή που έχει ως κεντρικό επεξεργαστή το
ATMega32u4. Πλέον, χρησιμοποιώντας το Arduino Leonardo,
θα μπορούσαμε και εμείς να φτιάξουμε το δικό μας πληκτρο-
λόγιο. Λίγες μέρες προτού γραφεί αυτό το άρθρο, οι
Ladyada και Phil Torone της Adafruit έδωσαν και πάλι ζωή σε
ένα παλιό πληκτρολόγιο της NeXT, το οποίο χρησιμοποιεί δι-
κό του πρωτόκολλο. Είναι απλό: συνδέεις ένα Arduino
Leonardo (ή, στη δική τους περίπτωση, ένα Arduino Micro, το
«
ξαδερφάκι» του Leonardo) και το προγραμματίζεις να επικοι-
νωνεί με το πληκτρολόγιο χρησιμοποιώντας το πρωτόκολλο
της NeXT. Αυτό δεν είναι τόσο εύκολο όσο ακούγεται, αλλά
υπάρχουν πολλά sites από fans των πληκτρολογίων (ναι, είναι
αλήθεια), όπου μπορεί κάποιος να βρει πολλές πληροφορίες
για τα παλιά μοντέλα, πώς δουλεύουν και τα πρωτόκολλά
τους. Ψάχνοντας σε αυτά τα sites και ζητώντας βοήθεια στα
φόρουμ τους, μπορεί κάποιος να υλοποιήσει το πρωτόκολλο
του πληκτρολογίου που θέλει στο Arduino και να μιλά με αυτό
το πληκτρολόγιο. Στη συνέχεια, ό,τι πάτημα πλήκτρου λάβει
Project - Arduino Hacks
Η συνδεσμολογία για το κουμπί μας.
2