Arduino Vj System

Sono mesi che avevo in mente questo progetto usando Arduino e la libreria TV Out, finalmente sono riuscito a produrre qualcosa di funzionante ed è anche giunta l’ora di rendere pubblico il tutto.

La libreria per il tv out serve, come si intuisce dal nome, a generare dei segnali video. Vista la scarsa potenza di Arduino, si riescono soltanto a generare segnali video in bianco e nero e con una risoluzione di 128×96 pixel. Per capirci si riescono a fare cose come questo o questo o quest’altro. Sono vecchi esperimenti che avevo fatto tempo fa. E’ roba molto limitata ma, visti i limiti, la sfida diventa ancora più interessante.

La mia idea era costruire un coso da utilizzare come visual durante un concerto. La definizione di vj di wikipedia è abbastanza esaustiva. In pratica un affare con dei comandi per interagire in tempo reale, o quasi, con gli effetti video generati da Arduino.

Questo è il risultato:

Per comodità ho scelto di costruire il circuito su una millefori da inserire direttamente su Arduino. Nella foto si possono vedere i 3 switch per selezionare gli effetti, il connettore RCA giallo per l’uscita video, il potenziometro per regolare la velocità dell’effetto e il led verde che segnala l’accensione – il led rosso in realtà non serve a niente.

Questo è lo schema:

Per disegnarlo ho usato Fritzing e potete anche scaricarvi il file con gli schemi.

Per ottimizzare ho usato solo 3 interruttori coi quali si possono selezionare 8 diversi effetti video. Ecco l’elenco:

  • 000: face();
  • 001: point();
  • 010: strobo();
  • 011: star();
  • 100: square();
  • 101: bug();
  • 110: cube();
  • 111: circle();

(le prime tre cifre indicano lo stato degli switch A, B e C; 0 è spento, 1 è acceso)

Potete scaricarvi il sorgente per Arduino. Dentro il codice ci sono varie funzione che si chiamano nello stesso modo elencato qui sopra. Da notare l’effetto bug() che in realtà doveva fare tutt’altro, almeno per come l’avevo pensato, ma per colpa di non so quale bug genera un effetto video che non mi dispiaceva affatto, per cui l’ho lasciato così com’è.

Per l’effett face() ho tentato di usare la funzione interna della libreria TV Out per caricare le bitmap, opportunamente convertite, ma non ci sono riuscito per cui, visto che dovevo sbrigarmi a finire tutto l’ambaradan, ho optato per un sistema empirico: tipo che disegno le faccie pixel per pixel, questo ovviamente ha portato ad un riempimento smodato della memoria di Arduino tant’è che ci sono state solo due faccie :) .

Ecco il risultato proiettato dal vivo durante il nostro concerto:

Al minuci 3:05 si può vedere l’effetto bug() in azione.

Se vi interessa qua, qua, qua e qua ci sono le parti rimanenti del concerto.

Ogni tanto, mettendo in sequenza alcuni effetti video, Arduino perdeva il controllo, credo per il troppo casino a video, e bisognava resettare tutto il sistema.

Leave a Reply