USELESS BOX, LA ‘MACCHINA INUTILE’ DELL’INVENTORE DELL’INTELLIGENZA ARTIFICIALE
Si ritiene che la moderna “macchina inutile” sia stata inventata dallo scienziato cognitivo Marvin Minsky nel lontano 1952, quando stava facendo il lavoro laureato presso i Bell Labs. Minsky, padre della moderna intelligenza artificiale, voleva chiamarla la “macchina definitiva”.
Mentore di Minsky presso i Bell Labs era Claude Shannon, conosciuto come il padre della teoria dell’informazione. Ha mantenuto alcune delle macchine inutili di Minsky e le distribuì alle persone a Bell Labs. Ne tenne una sulla sua scrivania, il grande Arthur C. Clarke scrittore di “2001 Odissea nello Spazio” a cui Minsky fece da consulente per la stesura dell’omonimo film. Ha scritto del dispositivo dicendo: “C’è qualcosa di indicibilmente sinistro in una macchina che non fa nulla – assolutamente nulla – salvo spegnersi.”
La vera natura della ‘Uselessbox’ va oltre la macchina, sconfinando nell’arte, fino ad arrivare ai concetti espressi dall’artista e designer Bruno Munari.
La ‘scatola inutile’, di fatto, può essere gestita semplicemente con un interruttore, un finecorsa, un motore e una fonte di alimentazione, anche a batteria, ma sarebbe troppo facile…
Ai giorni nostri, noi makers, dobbiamo per forza complicarci le cose per renderle più divertenti e quindi abbiamo pensato di utilizzare Arduino per poter gestire i movimenti principali della nostra scatola.
Di seguito lo schema concettuale del circuito:
E qui alcune immagini della progettazione:
Potete rivolgere al nostro FabLab per realizzarne una copia, anche personalizzata. I materiali usati possono essere compensato o plexyglass dello spessore di 4 mm.
Ecco alcune foto dell’assemblaggio:
Il codice base per il funzionamento è di seguito elencato e potete tranquillamente ampliarlo con varie funzionalità:
#include <Servo.h> //inclusione libreria per azionare il servomotore
int buttonPin = 2; //variabile a cui assegno il pin dell’interruttore
int buttonState = 0; //variabile a cui assegno lo stato iniziale dell’interruttore
int pos; //variabile per memorizzare la posizione
long timeDelay; // tempo di delay
int returnpos=0; //variabile a cui assegno lo stato iniziale della posizione
Servo myservo; // creo un oggetto per il servomotore
void setup()
{
pinMode(buttonPin, INPUT); //
myservo.attach(9); //servo su pin 9
}
void loop()
{
buttonState = digitalRead(buttonPin); //legge lo stato del pulsante
if (buttonState == HIGH)
{
if(returnpos == 1)
{
for (pos = 160; pos >= 55; pos -= 20)
{
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(10); // waits 15ms for the servo to reach the position
}
}
returnpos = 0;
}
else
{
if(returnpos == 0)
{
for (pos = 55; pos <= 160; pos += 10)
{
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15);
}
returnpos = 1 ;
}
}
}
Potete inoltre aggiungere luci, suoni o combinazioni di esse per poter moltiplicare i comportamenti della vostra useless box; potete trovare in rete una miriade di filmati da cui trarre spunto. Forse un giorno faremo un UselessBox Party per vedere chi avrà espanso al massimo il semplice ma profondo concetto dietro a questo progetto.