Youtube Channel
scrivimi: fraranux@gmail.com
chiamami: 345 04.22.\pi

lunedì 24 agosto 2015

Telegrafo ad aghi

Dopo una discretamente lunga assenza...

Ecco il prototipo del telegrafo ad aghi, funziona esattamente come l'originale che trovate QUI.
Come si può facilmente notare ci sono due file orizzontali di pulsanti, quelli della fila superiore spostano l'ago corrispondente di alcuni gradi in senso orario, l'opposto accade per l'altra fila.
Premendo quindi un pulsante della fila superiore ed uno di quella inferiore noteremo che la direzione indicata dagli aghi punterà sempre una lettera sul pannello di fondo.
Nel pannello che ho costruito non potevano rientrare tutte le lettere, ne manca infatti una, ho deciso di sacrificare la " Q " essendo facilmente sostituibile con la lettera " C " .


Ecco qui sotto anche lo schema a Fritzing:



per ora pubblico tutto lo sketch ad mentula canis, ciao

#include <Servo.h>
Servo servoUno;
Servo servoDue;
Servo servoTre;
Servo servoQuattro;
Servo servoCinque;
int h1ButtonPin = 2;
int l1ButtonPin = 4;
int h2ButtonPin = 7;
int l2ButtonPin = 8;
int h3ButtonPin = 12;
int l3ButtonPin = 13;
int h4ButtonPin = 14;
int l4ButtonPin = 15;
int h5ButtonPin = 16;
int l5ButtonPin = 17;

int h1ButtonState = 0;
int l1ButtonState = 0;
int h2ButtonState = 0;
int l2ButtonState = 0;
int h3ButtonState = 0;
int l3ButtonState = 0;
int h4ButtonState = 0;
int l4ButtonState = 0;
int h5ButtonState = 0;
int l5ButtonState = 0;

void setup()
{
  Serial.begin(9600);

  pinMode(h1ButtonPin, INPUT);
  pinMode(l1ButtonPin, INPUT);
  pinMode(h2ButtonPin, INPUT);
  pinMode(l2ButtonPin, INPUT);
  pinMode(h3ButtonPin, INPUT);
  pinMode(l3ButtonPin, INPUT);
  pinMode(h4ButtonPin, INPUT);
  pinMode(l4ButtonPin, INPUT);
  pinMode(h5ButtonPin, INPUT);
  pinMode(l5ButtonPin, INPUT);

  servoUno.attach(3);
  servoDue.attach(5);
  servoTre.attach(9);
  servoQuattro.attach(10);
  servoCinque.attach(11);

  servoUno.write(90);
  servoDue.write(90);
  servoTre.write(90);
  servoQuattro.write(90);
  servoCinque.write(90);
}

void loop()
{

  h1ButtonState = digitalRead(h1ButtonPin);
  l1ButtonState = digitalRead(l1ButtonPin);
  h2ButtonState = digitalRead(h2ButtonPin);
  l2ButtonState = digitalRead(l2ButtonPin);
  h3ButtonState = digitalRead(h3ButtonPin);
  l3ButtonState = digitalRead(l3ButtonPin);
  h4ButtonState = digitalRead(h4ButtonPin);
  l4ButtonState = digitalRead(l4ButtonPin);
  h5ButtonState = digitalRead(h5ButtonPin);
  l5ButtonState = digitalRead(l5ButtonPin);


  //*****pacchetto prima coppia pulsanti******
  if (h1ButtonState == HIGH)
  {
    Serial.print("  1^");
    servoUno.write(180);
    delay(10);
  }
  else if (l1ButtonState == HIGH)
  {
    Serial.print("  1v");
    servoUno.write(0);
    delay(15);
  }
  else
  {
    Serial.print("  1-");
    servoUno.write(90);
    delay(15);
  }
  //********fine prima coppia pulsanti

  if (h2ButtonState == HIGH)
  {
    Serial.print("    2^");
    servoDue.write(180);
    delay(15);
  }
  else  if (l2ButtonState == HIGH)
  {
    Serial.print("    2v");
    servoDue.write(0);
    delay(15);
  }
  else
  {
    Serial.print("    2-");
    servoDue.write(90);
    delay(15);
  }
  //**************************************

  if (h3ButtonState == HIGH)
  {
    Serial.print("    3^");
    servoTre.write(180);
    delay(15);
  }
  else if (l3ButtonState == HIGH)
  {
    Serial.print("    3v");
    servoTre.write(0);
    delay(15);
  }
  else
  {
    Serial.print("    3-");
    servoTre.write(90);
  }

  //**********************************

  if (h4ButtonState == HIGH)
  {

    Serial.print("    4^");
    servoQuattro.write(180);
    delay(15);
  }
  else if (l4ButtonState == HIGH)
  {
    Serial.print("    4v");
    servoQuattro.write(0);
    delay(15);
  }
  else
  {
    Serial.print("    4-");
    servoQuattro.write(90);
    delay(15);
  }

  //***********************

  if (h5ButtonState == HIGH)
  {
    Serial.println("    5^");
    servoCinque.write(180);
    delay(15);
  }
  else if (l5ButtonState == HIGH)
  {
    Serial.println("    5v");
    servoCinque.write(0);
    delay(15);
  }
  else
  {
    Serial.println("    5-");
    servoCinque.write(90);
    delay(15);
  }
}

mercoledì 1 aprile 2015

UBUNTU su "unità esterna", ovvero una pen drive da 16 Gb, si può e funziona perfettamente!

ma non è lento?
no.
Impiega un po' di più ad avviarsi ma poi va tranquillamente!
Ma non potevi usare una distro live?
no, in questo caso ubuntu è proprio installato, ha il suo terminale, i suoi software etc... tutto il lavoro resta salvato, così come le impostazioni etc, è proprio come avere una partizione sul pc, perché in fin dei conti è esattamente così che stanno le cose! ;)
Bon, ti porti sempre dietro il "tuo pc" su chiavetta, dove serve la inserisci in una porta, riavvii e ti trovi a casa.
Come si installa?
Normalmente, con un altro ubuntu ed il programma unetbootin crei un avviabile, tipo una chiavetta, poi la metti in qualunque pc e fai partire il boot da questa. Dal momento in cui si avvia la live non resta che installare il sistema operativo nel disco che, precedentemente formattato, abbiamo predisposto: la chiavetta usb!

OBD2, bibidi bobidi bu.

Ho acquistato il connettore bluetooth. ELM327, il solito insomma, funziona.



Cosa fa?
Intanto stiamo parlando di un arnese che si collega alla macchina, più precisamente al connettore che va alla centralina, da questa riceve alcune informazioni.
Associando il connettore al proprio smartphone Android per esempio, dopo aver scaricato una App (come Torque per intenderci) , questo risulta essere in grado di restituire alcune importanti informazioni dalla centralina dell'automobile... ad esempio la temperatura del liquido di raffreddamento, la pressione e la temperatura dell'olio, i gas di scarico, le prestazioni del motore, la presenza di allarmi vari e tra questi la possibilità di cancellare gli allarmi inerenti il motore, ad esempio.
Dua informazioni più dettagliate le trovate su wikipedia QUI
oppure un articolo interessante, che riporto in parte in seguito, lo trovate QUI

CAN (Controller Area Network) e OBD-II (On Board Diagnostics) sono due standard di comunicazione (il termine corretto sarebbe "protocolli di comunicazione"). Le centraline dell'automobile che rispettano questi standard parlano tutte la stessa lingua e quindi possono comunicare tra di loro. La comunicazione avviene attraverso una sorta di "linea telefonica" che tecnicamente si chiama "bus". Nella pratica, il bus non è altro che una coppia di fili che passa da una centralina all'altra, proprio come la linea telefonica passa di casa in casa formando una lunga catena. Anche il motivo del nome "bus" è molto semplice: esso è il "mezzo di trasporto" per i dati: li porta da una centralina all'altra, un po' come un vero bus porta le persone da una fermata all'altra. Una cosa fondamentale è distinguere i ruoli dei due protocolli CAN e OBD-II. Il CAN definisce un generico standard di comunicazione tramite bus: permette a due o più dispositivi elettronici di scambiarsi dei dati inviandoli e ricevendoli sotto forma di messaggi. In pratica grazie al CAN una centralina A è in grado di inviare dati ad una centralina B, ma questo da solo non basta a realizzare la comunicazione: occorre anche che la centralina B sia in grado di riconoscere ed utilizzare i dati ricevuti, è necessario cioè che le due centraline "parlino la stessa lingua". A questo ci pensa l'OBD-II che definisce una sorta di linguaggio con cui le varie centraline possono finalmente comunicare. Facciamo un esempio pratico: La centralina di controllo del motore rileva che il motore è a 2500 giri/minuto La centralina inserisce tale informazione in un messaggio conforme al protocollo OBD-II Grazie al protocollo CAN la centralina trasmette il messaggio per mezzo del bus La centralina di controllo del quadro strumenti, anch'essa collegata al bus, rileva il messaggio Grazie all'OBD-II la centralina è in grado di comprendere il contenuto del messaggio: "motore a 2500 giri/minuto" La centralina reagisce spostando l'indicatore del contagiri su 2500 giri/minuto. Una cosa che può trarre in inganno quando si studiano CAN e OBD-II è che entrambi definiscono una struttura specifica per i loro messaggi e questo può confondere il lettore. Grazie all'esempio precedente abbiamo capito che i due messaggi si fondono l'uno nell'altro: prima viene creato il messaggio OBD-II, dopo di che tale messaggio diventa il contenuto del messaggio CAN che viene inviato sul bus. La centralina che riceve il messaggio CAN fa il processo inverso: elabora il messaggio CAN estraendone il messaggio OBD-II originale e lo processa. CAN Come detto in precedenza, il protocollo CAN definisce il linguaggio che le varie centraline devono usare per comunicare tra di loro tramite il bus. Siccome i due elementi sono strettamente legati si parla spesso di "CAN bus", Infatti il bus di per se è un normalissimo paio di fili che passa di centralina in centralina, è solo grazie alle regole definite dal CAN che le centraline sono in grado di utilizzare il bus come un potente ed affidabile mezzo di comunicazione. Il protocollo CAN è molto generico: definisce solo il metodo e le regole per l'invio e la ricezione di dati usando il bus, ma non dice nulla in merito ai dati che devono essere scambiati, al loro formato ecc. Per questo motivo il CAN non viene impiegato esclusivamente nei mezzi di trasporto, ma per esempio anche in macchinari industriali. In passato alcune case automobilistiche utilizzavano protocolli diversi dal CAN. L'OBD-II invece è uno standard pressoché unico che è diventato obbligatorio sulle automobili a partire dal 1996. Per questo motivo si possono trovare automobili le cui centraline comunicano secondo il protocollo OBD-II, ma si scambiano i messaggi sul bus usando un protocollo che non è il CAN. Per come è studiato il CAN, quando una centralina invia un messaggio sul bus tale messaggio viene ricevuto da tutte le altre centraline collegate, ogni singola centralina poi analizza il messaggio e decide se è di suo interesse (e in tal caso lo processa) oppure no (in tal caso semplicemente lo ignora). Abbiamo detto in precedenza che il bus è una sorta di linea telefonica attraverso la quale le centraline dell'auto comunicano tra di loro. Ebbene è molto semplice aggiungere una nuova centralina e farla comunicare con le altre: basta "allacciare" anch'essa alla linea telefonica, ovvero collegarla ai fili del bus. Una volta collegata la nuova centralina comincerà a ricevere tutti i messaggi delle altre centraline (decidendo quali le interessano e quali no) e potrà trasmettere i propri. Il lettore di questo documento potrebbe voler collegare un'interfaccia OBD-II alla propria auto ed usarla per ricevere dei dati relativi allo stato del veicolo; ebbene quando l'interfaccia OBD-II è inserita, essa è semplicemente collegata al CAN bus come tutte le altre centraline, ed è così in grado di fare sostanzialmente due cose: "ascoltare" in maniera passiva tutti i messaggi che le centraline inviano sul bus e trasmetterli al computer (o altro dispositivo) dell'utente. dialogare attivamente con le centraline, richiedendo dei dati e trasmettendo al computer dell'utente le risposte ricevute. Per quanto riguarda il secondo punto occorre fare una precisazione per comprendere il potenziale rischio della comunicazione tramite CAN bus: il dialogo con le centraline spesso ha lo scopo di richiedere informazioni, ma non dobbiamo dimenticare che allo stesso modo è possibile inviare dei comandi che hanno l'effetto di modificare dei parametri di funzionamento. È consigliabile quindi limitarsi ad inviare i messaggi di cui si conosce l'effetto, perché messaggi diversi potrebbero alterare il funzionamento dell'auto e ciò può costituire un pericolo. OBD-II Il protocollo OBD-II è più specifico del CAN ed è nato espressamente come standard per i mezzi di trasporto, è diventato obbligatorio in America nei veicoli prodotti a partire dal 1996. La versione europea di questo standard si chiama EOBD, esso è sostanzialmente identico all'OBD-II ed è obbligatorio dal 2001. Quanto ho scritto fin qui dell'OBD-II non è completo: l'OBD-II non è solo uno standard di comunicazione, in particolare definisce anche il connettore che deve essere presente nell'abitacolo del veicolo per il collegamento degli strumenti OBD-II compatibili. Tale connettore è sostanzialmente una porta di collegamento al bus CAN (o altro bus presente sul veicolo). Quando a questo connettore viene collegato uno strumento con interfaccia OBD-II esso viene praticamente collegato al bus CAN ed è quindi in grado di ascoltare e comunicare con le centraline come ho spiegato nel capitolo relativo al CAN. Il connettore OBD-II prevede anche una linea che fornisce energia al dispositivo collegato. È importante sapere che il connettore fornisce sempre energia, anche quando il veicolo è spento. Se uno strumento viene lasciato collegato al veicolo per troppo tempo a motore spento, questo potrebbe facilmente scaricarne la batteria (il dispositivo potrebbe anche consumare poca energia, ma la sua attività sul bus potrebbe "tenere sveglie" varie centraline provocando un consumo di energia elevato). Per questi motivi è importante che i dispositivi OBD-II usati quotidianamente abbiano un buon sistema di risparmio energetico, altrimenti l'utente sarà costretto a scollegarli dopo ogni utilizzo per preservare la carica della batteria dell'auto. Infine lo standard OBD-II definisce anche alcuni comandi per la richiesta delle informazioni principali relative al veicolo. Tutti i veicoli dovrebbero supportare tali comandi, ma in realtà non è obbligatorio.


la cosa che mi chiedo ora è "ma se posso cancellare un dato, posso anche scriverlo?" 
eh...

giovedì 26 marzo 2015

poi mi sono ricordato che esattamente un anno fa costruivo un Controller Makey Makey per Acid Bunny, il coniglietto tutto drogato che vomita in giro



Adoperando un makeymakey ho progettato per i colleghi un controlller per videogame molto elaborato;
Adoperando come si vede dal filmato uno sgabello Ikea con due pulsanti bticino avvitati male sotto comando gli spostamenti destra/sinistra del coniglio drogato,  il tubo di alluminio che reggo nella mano sinistra serve, picchiandolo verso l'alto, a far saltare il coniglio per evitare le siringhe tossiche, ovviamente la lampada da scrivania lancia le carote.
Cos'è un makeymakey? nient'altro che un arduino Leonardo leggermente pimpato, lo colleghi al pc e toccando con le mani i contatti invii tramite seriale dei comandi semplici al pc (tipo i tasti "asdf" "space bar" oppure le freccette o i comandi mouse).
Niente, fine del post. Fate come volete.

Centesimo post.

Prendo i lavori che faccio e li metto in un contenitore, un po' come un album fotografico che ogni tanto si ha il piacere di sfogliare...

Questa era l'idea iniziale, poi è diventato un quaderno di appunti in cui segno soprattuto per me le cose che ho fatto e come le ho fatte, "roba che magari serve anche a qualcun altro". Il linguaggio adoperato generalmente è semplice e gli argomenti sono alla portata di tutti, poi se leggendo gli altri post non avete capito molto allora sono cazzi vostri.
Beh l'idea funziona, in tre o quattro anni ho accumulato un centinaio di lavori degni di nota. 
Ci sono dei post antecedenti il 2011, ma solo perché li ho collocati all'incirca nel periodo storico in cui le cose descritte accadevano; i primi anni poi non pubblicavo nulla di inerente al lavoro, quindi banditi elettronica, arduino etc... ultimamente invece, come si vede negli ultimi post merdosi, ho aggiunto anche questo. Nel frattanto poi l'officina meccanica a casa si è trasformata in falegnameria, i lavori di elettronica in soggiorno sono tassativamente vietati (già mi rompo le palle per bene al lavoro...) poi è nato il MerdLab dove si fanno le cose così così il che dovrebbe essere già di per se un indizio. 
Circa 20.000 sono i visitatori che son venuti a curiosare le cose fatte male, tu sei tra questi, fatti delle domande.

mercoledì 18 marzo 2015

Occhiali per monitor "ciechi", polarizzatori e gente che si diverte con poco.

Il monitor LCD del vostro computer funziona più o meno così
C'è una illuminazione omogenea sul fondo, questa luce viene polarizzata (da un POLARIZZATORE) per passare poi attraverso i cristalli liquidi ed infine in un polarizzatore opposto al primo. I cristalli liquidi non fanno altro che variare la polarizzazione del fascio luminoso in relazione alla quantità di tensione applicata. Posso quindi decidere che un pixel sia più o meno luminoso in base a quanto "inclino" il cristallo liquido che gli sta davanti. Ora è facile intuire che così abbiamo costruito un bel sistema a scala di grigi. E per fare i colori? Semplice, si aggiungono dei pixel con un filtro colorato RGB e per ognuno di questi filtri regolo l'intensità luminosa miscelandoli e componendo i vari colori.



Di seguito un filmato in cui due persone adulte si divertono davvero con poco


Ok, e sticazzi? Come funziona il monitor "Cieco"?
A quasto vecchio monitor ho fatto una piccola modifica, l'ho smontato tutto ed ho rimosso l'ultimo filtro polarizzatore. così il fascio luminoso passa sempre tutto attraverso lo schermo, risultato? Schermo tutto bianco. Ma se adesso, alla fine di questo processo incompleto, aggiungo un polarizzatore per esempio di un paio di occhiali da sole cosa accade? Accade che per magia le immagini compaiono nuovamente e perfettamente nitide!



venerdì 6 marzo 2015

Storia di un armadio #1

Come mi è venuto in mente di costruire un intero armadio di due metri? Mi serviva, e mi serviva su misura e senza il pannello posteriore e di materiali di qualità e semplice e robusto e niente, all'ikea non c'era un mobile così. Il costo del solo materiale fa spavento rispetto alla categoria di mobili svedesi di cui sopra, però alla fine ne è valsa la pena, o no? Mah...

Taglio a misura in squadra delle tavole impiegate

Fori per fissaggio delle viti dei ripiani

Svasatura fori


Dopo aver tagliato in misura il pannello in multistrato di faggio per il ripiano, monto una spalletta di abete massello, colla titebond e chiodi, tutto morsettato.

in questa immagine e in quella successiva "Presento" i profili decorativi dei pannelli laterali


Fisso il primo ripiano, colla per legno titebond, ed uno speciale morsetto (quello rosso) per tenere saldamente in squadra i due pezzi, Il ripiano oltre ad essere incollato sarà poi affrancato alle pareti laterali del mobile per mezzo di quattro viti.



Dopo ave montato tuti i pannelli del ripiano proseguo con il fissaggio dell'altra parete del mobile, aggiungo poi il pannello superiore, anche in questo caso colla e viti.


I profili sul perimetro delle pareti laterali creano un tema di decorazione molto semplice e squadrato, inoltre coprono perfettamente le viti che, insieme alla colla, reggono i vari ripiani.

Questa è la prima mano di impregnante, si nota già la copeertura dei ripiani con la carta tipica con il decoro a gigli.


In questa immagine il mobile, ancora vuoto, già posizionato , con le ante montate


Qui un particolare delle decorazioni dei pannelli laterali e superiore, al centro si vede bene uno dei tre cardini metallici che reggono le ante.

La finitura è volutamente satinata, parto infatti da un impregnante non lucido, allo stesso scopo al termine del lavoro passo la cera d'api distribuendone una grossa quantità ma evitando di "tirarla" troppo per evitare di lucidare eccessivamente la superfice del materiale.



Nella seconda parte di questo lavoro costruirò una bella cassettiera, le dimensioni saranno esattamente quelle di uno qualsiasi dei tre ripiani più alti del mobile così da renderla "spostabile" a varie altezze oltre che da sinistra a destra. 
I cassetti e l'intero mobiletto manterranno la linea semplice del mobile, qui sotto in anteprima uno dei cassetti.

Recupero di una chitarra elettrica tipo Stratocaster, dagli anni novanta ai giorni nostri: gli anni '70

Nel maggio del 1993, prima di ricomporre la mia chitarra elettrica, pensai bene di lasciare un pezzo di "carta gommata" (come dicono gli anziani) con scritta su la data.
Quella chitarra era frutto di un continuo lavoro alla ricerca di suoni nuovi, particolari ma soprattutto forti. Tra le varie modifiche montai al ponte un bel humbucker DiMarzio Paf Pro, mascherina verde acido, su battipenna fucsia, su corpo giallo. Ecco appunto erano gli anni '90! Al ponte un altro humbucker Seymour Duncan. Centrale niente, un bel buco. Via i comandi Tone, via tutto il superfluo, inserivo una serie di switch per comandare gli splittabili. Per un periodo sempre sotto il battipenna alloggiai un piccolo amplificatore a batteria ,9V. , mi dava la possibilità di uscire preamplificato oppure di bucare le testate dell'epoca con un overdrive da paura, nel senso proprio di "paura" perché non era proprio eccellente. (nel filmato si vede ancora la traccia dello scasso sotto il battipenna). Insomma a quell'epoca non avevo ancora compiuto 15 anni ma di casini ne avevo già fatti un po'. Con la fantasia delle ultime settimane, col pensiero fisso da anni, decido di effettuare un bel recupero con ammodernamento ma in chiave Seventies. Monto tre singoli, quello al ponte cela un piccolo trucco: è un humbucker mini, sempre famiglia Seymour Duncan, due espansioni a lama, questo insomma. Niente Tone anche questa volta e solita selva di switch per gestire autonomamente tutti i pick-up e lo split del mini hum. Schermatura tutta nuova, molle nuove, presa jack nuova... insomma un bel "restauro". Dei quattro giorni di lavoro ho fatto un estratto che trovate in questo video al quale dannazione non riesco ancora a montare un audio... a volte il destino!





venerdì 6 febbraio 2015

"Hai visto gli infrarossi?" Quando Arduino incontra un telecomando gli IR si fanno notare...

Battue a parte...
sto progettando un dispositivo che comanderà un videoplayer in base alle informazioni ricevute da più emettitori infrarossi, un telecomando al contrario insomma.
Quindi ecco che comincio a capire come funzioni un telecomando "normale".
Le librerie IR per Arduino IRremote le trovate QUI, ovviamente dovete impazzire per caricarle, un giorno scriverò due righe in merito...
Per quanto riguarda lo schema elettrico ho adoperato come ricevitore IR uno di quegli extender per i tv (il più del lavoro è stato individuare i pin giusti...), va bene qualunque ricevitore Infrarossi a tre pin, se volete saperne di più cliccate QUI.
Poi ho collegato i tre Led alle prime tre uscite non PWM, ho messo una resistenza a casaccio come al solito ed il gioco è fatto. Ho caricato lo sketch, che trovate in fondo, ho aperto il monitor seriale ed ho letto i valori dei primi tre tasti di un telecomando Samsung per poterli riportare correttamente nel programmino. A quasto punto, avendo associato ad ogni pulsante l'accensione di un led, non restava che fare il test, lo trovate in questo filmato, non male come inizio!


#include <IRremote.h>

int RECV_PIN = 3; // il pin del ricevitore
int led1 = 2;
int led2 = 4;
int led3 = 7;
int itsONled[] = {0,0,0,0};
/* the initial state of LEDs is OFF (zero)
the first zero must remain zero but you can
change the others to 1's if you want a certain
led to light when the board is powered */
#define code1  55848 // codice primo pulsante
#define code2  26210 // codice secondo pulsante
#define code3  2500 // codice terzo pulsante

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {
    unsigned int value = results.value;
    switch(value) {
       case code1:
         if(itsONled[1] == 1) {        // if first led is on then
            digitalWrite(led1, LOW);   // turn it off when button is pressed
            itsONled[1] = 0;           // and set its state as off
         } else {                      // else if first led is off
             digitalWrite(led1, HIGH); // turn it on when the button is pressed
             itsONled[1] = 1;          // and set its state as on
         }
          break;
       case code2:
         if(itsONled[2] == 1) {
            digitalWrite(led2, LOW);
            itsONled[2] = 0;
         } else {
             digitalWrite(led2, HIGH);
             itsONled[2] = 1;
         }
          break;
       case code3:
         if(itsONled[3] == 1) {
            digitalWrite(led3, LOW);
            itsONled[3] = 0;
         } else {
             digitalWrite(led3, HIGH);
             itsONled[3] = 1;
         }
          break;        
    }
    Serial.println(value);
    irrecv.resume(); // Receive the next value
  }
}

martedì 3 febbraio 2015

Wave Shield Adafruit & Arduino Mega: a possible love!

Cara Lady Ada, amore segreto della mia vita, stavolta ho vinto io! ;)


Mi sembrava fosse davvero impossibile che la Waveshield di Adafruit non fosse in nessun modo compatibile con Arduino Mega 2560, Ho cercato qui e la su internet ed ho trovato delle immagini che ritraevano i due dispositivi felicemente accoppiati. Dopo aver spulciato un altro po' il mondo dell' Internet scopro che forse ci vogliono delle altre librerie, prendo le Wave HC originali, le modifico un po', le carico e niente, non funziona,
Mi prodigo in un'attività di " Rubber Ducking" (come a lui piace chiamarla ) con Dario, risulta che la soluzione non si trova nel software, altrimenti lui lo saprebbe, giuro.
Niente la soluzione è hardware, c'è un problema con le porte SPI, sul Mega sono diverse!!

Allora via i piedi dalla shield e faccio un nuovo "connettore" che collegherà il
pin della shield con quello del Mega

          10      .................       53
          11      .................       50
          12      .................       51
          13      .................       52

Di seguito riporto la tabella SPI da Arduino Reference


Arduino BoardMOSIMISOSCKSS (slave)SS (master)
Uno or Duemilanove11 or ICSP-412 or ICSP-113 or ICSP-310-
Mega1280 or Mega256051 or ICSP-450 or ICSP-152 or ICSP-353-
LeonardoICSP-4ICSP-1ICSP-3--
DueICSP-4ICSP-1ICSP-3-4, 10, 52

Qui sotto pubblico qualche foto del lavoro degno del MerdLab, con lo spostamento dei collegamenti dei pin ed il relativo connettore adattatore.