Το Arduino είναι ένας πολύ δημοφιλής μικροελεγκτής, ο οποίος φτιάχτηκε με αρχικό σκοπό τον προγραμματισμό και την εκπαίδευση των φοιτητών της διάδρασης ανθρώπου και υπολογιστή με συστήματα εισόδου-εξόδου, πέρα από τα κλασικά πληκτρολόγιο, ποντίκι και οθόνη που έχουμε στους επιτραπέζιους ΗΥ. Πριν το Arduino, οι φοιτητές και οι ερευνητές που ήθελαν να δημιουργήσουν και να πειραματιστούν με νέα συστήματα εισόδου και εξόδου έπρεπε πρώτα να συνδέσουν στον επιτραπέζιο υπολογιστή κάποιους αισθητήρες και ελεγκτές, μέσω ενός εξωτερικού μικροεπεξεργαστή, ο οποίος μεταφράζει τα αναλογικά σήματα σε ψηφιακά και αντίστροφα. Ένα μεγάλο μέρος αυτής της διαδικασίας είναι όμοιο, ανεξάρτητα από το είδος του αισθητήρα που συνδέουμε, επομένως, ένα σημαντικό μέρος της προ-εργασίας που γινόταν αποτελούσε εμπόδιο και καθυστέρηση για τον βασικό στόχο, ενώ, ταυτόχρονα, απαιτούσε και ειδικές δεξιότητες στην ηλεκτρονική και στους μικροεπεξεργαστές, τις οποίες πολλοί δημιουργικοί κατασκευαστές της διάδρασης δεν είχαν. Αυτήν την ανάγκη ήρθε να καλύψει το Arduino, το οποίο δημιουργήθηκε από τους καθηγητές της μεταπτυχιακής σχολής διάδρασης ανθρώπου και υπολογιστή στο Ινστιτούτο Ιβρέα της Ιταλίας.
Το βασικό μοντέλο Arduino Uno^[@fig:arduino-uno] έρχεται με μια θύρα USB, η οποία αποτελεί το κύριο κανάλι δικτυακής επικοινωνίας με έναν επιτραπέζιο ΗΥ. Η θύρα USB είναι πολύ χρήσιμη για να φορτώσουμε μια νέα έκδοση της εφαρμογής μας, καθώς και για να δοκιμάσουμε μια εφαρμογή, όταν αυτή θα πρέπει να έχει πρόσβαση σε δεδομένα του ευρύτερου δικτύου του επιτραπέζιου ΗΥ. Αν και αυτές οι δυνατότητες δικτυακής επικοινωνίας είναι, συνήθως, αρκετές για τα περισσότερα εκπαιδευτικά και οικιακά έργα που γίνονται με Arduino, είναι πολύ περιορισμένες για κάτι εμπορικό ή για κάτι που είναι ανεξάρτητο από τον παραδοσιακό επιτραπέζιο ΗΥ. Για αυτόν τον σκοπό, οι σχεδιαστές του Arduino έχουν προβλέψει την τοποθέτηση επεκτάσεων με έναν τυποποιημένο τρόπο που λέγεται shield.
Το Arduino έχει πολλές εισόδους, τόσο ψηφιακές όσο και αναλογικές, που μπορούν να συνδεθούν με μια μεγάλη ποικιλία απλών αισθητήρων αλλά και με πιο πολύπλοκες κατασκευές. Ο ευκολότερος τρόπος για να δώσουμε είσοδο στο Arduino είναι η απευθείας σύνδεση ενός αισθητήρα με τις ψηφιακές/αναλογικές εισόδους του. Σε πιο πολύπλοκα συστήματα εισόδου, ο σχεδιαστής μπορεί να φτιάξει ένα ηλεκτρικό κύκλωμα στο συνοδευτικό breadboard. Εκτός από τη δυνατότητα για είσοδο από εναλλακτικά συστήματα, πέρα από το πληκτρολόγιο/ποντίκι, το Arduino σχεδιάστηκε για να δίνει και έξοδο σε εναλλακτικά συστήματα, πέρα από την παραδοσιακή οθόνη και τον εκτυπωτή. Φυσικά, όπως και στην περίπτωση των εισόδων, οι χρήστες του Arduino έχουν βρει πολλές ακόμη εφαρμογές, οι περισσότερες από τις οποίες εμπνέονται από τα συστήματα ελέγχου (π.χ. βιομηχανία, ασφάλεια κτλ.).
Το Arduino δεν ήταν η πρώτη προσπάθεια κατασκευής ενός μικροελεγκτή που διασυνδέεται εύκολα με επιπλέον αισθητήρες, αφού στο παρελθόν είχαν γίνει αντίστοιχες προσπάθειες τόσο από μεγάλα ερευνητικά έργα και πανεπιστήμια όσο και από εταιρείες, αλλά κανένα δεν είχε την αποδοχή του Arduino σε τόσο μικρό χρονικό διάστημα. Αν και δεν είναι εύκολο να εντοπίσουμε όλες τις παραμέτρους που συνέβαλαν στην επιτυχία του, σίγουρα μια από αυτές ήταν το γεγονός ότι το έργο βασιζόταν σε τεχνολογία με ευέλικτη άδεια χρήσης, η οποία επέτρεψε σε άλλους κατασκευαστές να φτιάξουν τις δικές τους εκδοχές. Επιπλέον, η φύση του ανοικτού κώδικα έδωσε την αυτοπεποίθηση σε πολλούς σχεδιαστές να το επιλέξουν, αφού έτσι θα είχαν μεγαλύτερη ασφάλεια από πιθανές αλλαγές που θα αποφάσιζε μονομερώς μια εταιρεία. Στα λίγα χρόνια της κυκλοφορίας του, η αποδοχή και η ευελιξία του Arduino αποδείχτηκαν τόσο μεγάλες, που δημιουργήθηκε μια αντίστοιχα μεγάλη και ενεργή κοινότητα χρηστών, οι οποίοι ασχολούνται με εφαρμογές πολύ πέρα από τους αρχικούς στόχους του σχεδιασμού του.
Συνολικά, το Arduino δίνει την ελευθερία στον σχεδιαστή της διάδρασης ανθρώπου και υπολογιστή να σκεφτεί και να κατασκευάσει σχετικά εύκολα και οικονομικά εναλλακτικούς τρόπους διάδρασης, πέρα από τον επιτραπέζιο ΗΥ.^[@banzi2014getting] Όπως ακριβώς το Linux και το Processing, το Arduino βασίζεται περισσότερο σε μια κοινότητα χρηστών παρά σε μια ιεραρχικά οργανωμένη εταιρεία για την παροχή μιας σειράς υπηρεσιών, όπως η πώληση, η τεκμηρίωση και η υποστήριξη. Οι ομοιότητες μεταξύ του Processing και του Arduino δεν σταματούν στα κίνητρα και στην ανοικτή κοινότητα ανάπτυξης, αλλά συνεχίζονται και στην υιοθέτηση του περιβάλλοντος ανάπτυξης του Processing από το Arduino.^[@fig:arduino-ide] Βλέπουμε, λοιπόν, ότι ένα απλό περιβάλλον ανάπτυξης, το οποίο βασίζεται στις συνεχείς αλλαγές του κώδικα και στον γρήγορο έλεγχο του αποτελέσματος, είναι βασική προϋπόθεση για τον προγραμματισμό της διάδρασης, ανεξάρτητα από το τεχνολογικό πλαίσιο (π.χ., πολυμέσα, επιτραπέζιος, διάχυτος υπολογισμός).