venerdì 13 gennaio 2012

Digital input

Abbiamo visto nei precedenti post come utilizzare i pin digital I/O per generare un'uscita digitale.
Vediamo ora come utilizzare questi pin come ingresso. In particolare utilizzeremo un ingresso digitale per accendere un LED...nei prossimi post renderò l'esempio più interessante.

Cosa ci serve:

  • Board Arduino
  • 1 resistenza 1K
  • 1 resistenza 100 Ohm
  • 1 LED


Sketch

/*
 *  Ingressi digitali
*/
 
int ledPin = 12;                // Pin a cui connettere il led
int InPin = 2;              // Pin a cui connettere il pulsante
int val;                        // variabile per leggere lo stato del pulsante


void setup() {
  pinMode(ledPin, OUTPUT);      // Imposta il pin del LED come uscita
  pinMode(InPin, INPUT);    // Imposta il pin del pulsante come ingresso
}


void loop(){
  val = digitalRead(InPin);   // legge l'input e lo inserisce in una variabile
  if (val == LOW) {               // se il pulsante è premuto
    digitalWrite(ledPin, HIGH);   // accende il LED
  }
  if (val == HIGH) {              // se il pulsante è premuto
    digitalWrite(ledPin, LOW);    // spegne il LED
  }
}


Con pinMode(InPin, INPUT) abbiamo definiti il pin 2 come ingresso digitale e con val = digitalRead(InPin); possiamo leggerne lo stato e attribuirlo alla variabile val.
A questo punto connettendo il pin 2 a massa = LOW (pin GND) il pin 12 andrà in stato LOW e il LED si spegnerà mentre collegandolo a 5v = HIGH (pin 5v)  il pin 12 andrà in stato HIGH e il LED si accenderà.

ATTENZIONE!

Come nel caso del Digital output dobbiamo prestare attenzione a non bruciare il pin di I/O evitando sovratensioni (>5v) o correnti troppo alte.
Possiamo porre una resistenza da 100 ohm prima del pin di INPUT per evitare cortocircuiti. Se per errore definiamo un pin come output e lo colleghiamo a +5v ..... il corto brucerebbe l'ingresso!!!


giovedì 12 gennaio 2012

Arduino e LED (Digital Output...continua)

Finora abbiamo fatto lampeggiare il LED presente sulla scheda dell'arduino.
Vediamo in questo post come accendere un led utilizzando un'uscita digitale.

Cosa ci serve:
  • Arduino Board
  • 1 led
  • 1 resistenza 220ohm

Cos'è un led?
Un led è un componente che trasforma la corrente in luce. LED è l'acronimo di Light Emitting Diode; essendo un diodo permette alla corrente di transitare solo in una direzione (da + verso -) e la blocca nella direzione inversa, pertanto è necessario "orientare" il led nella direzione correta se vogliamo che si illumini.nz
La gamba più lunga del led indica il lato positivo (anodo). L'anodo è riconoscibile anche dalle dimensioni inferiori rispetto al catodo.

Perchè devo usare una resistenza?
Le uscite dell'arduino sono in grado di erogare al massimo 40mA. Per proteggere l'uscita abbassandone la corrente utilizziamo una resitenza.
Allo stesso tempo la resistenza proteggerà il dispositivo (nel nostro caso il led)

Come calcolo il valore della resistenza?
La resistenza è dimensionata in base alla quantità di corrente che vogliamo far transitare attraverso il nostro led. Maggiore è la corrente e maggiore sarà la luminosità del led
Led diversi vengono attraversati da tensioni diverse:

led rosso                                         1,7 V 
led verde                                         2,2 V

led ad alta intesità (bianchi o blu)  4,5 V

per il nostro arduino con uscite a 5V se utilizziamo un led verde (2,2V) la resistenza sarà attraversata da 2,8V. Per la legge di Ohm R=V/I avremmo che la corrente che attraversa la resistenza (e di conseguenza il led) sarà pari a 2,8V/2200ohm = 0,0014A.

Non dobbiamo esagerare con la corrente altrimenti corriamo il rischio di bruciare il led. Allo stesso tempo una resistemza troppo alta non consentira al led di illuminarsi.Generalmente un led normale (3mm o 5mm) sopporta una corrente massima di 20mA pertanto nel nostro circuito la resitenza minima dovrà essere pari a :
(5V-2,2V)/0,020mA = 160 ohm

Ricordando quanto visto in un precedente post al fine di proteggere anche il pin dell'arduino da correnti eccessive megli utilizzare resistenze >470ohm

Sketch

In maniera analoga a quello che abbiamo già visto utilizzando il led integrato sul pin 13 il codice, per far lampeggiare un led collegato al pin 2 dovremmo utilizzare il codice seguente:



void setup()
{
pinMode(2, OUTPUT);      //configuriamo il pin 2 come uscita digitale
} 
void loop()                     
  digitalWrite(2, HIGH);    // accende il led portando alta l'uscita
  delay(1000);              // un secondo di attesa
  digitalWrite(2, LOW);     // spegne il led portando bassa l'uscita
  delay(1000);              // un secondo di attesa
}

possiamo quindi compilare il codice e inviarlo all'arduino.

Circuito





Riferimenti:

http://www.thebox.myzen.co.uk/Tutorial/LEDs.html
http://www.ladyada.net/learn/arduino/LEDs.html
http://www.ladyada.net/learn/arduino/lesson3.html
http://ledcalc.com/
http://arduino.cc/en/Tutorial/DigitalPins





mercoledì 11 gennaio 2012

Digital Output

Come già detto l'Arduino DuemilaNove dispone di 14 pin che possono agire come ingressi o uscite digitali.
Per configurare un pin come ingresso/uscita utilizziamo l'istruzione PinMode nel metodo setup() utilizzando la seguente sintassi:

PinMode(numero_pin, [INPUT/OUTPUT]);

Per configurare il pin 1 come uscita scriveremo quindi

PinMode(1, OUTPUT);


In questo post mi occuperò delle uscite digitali e per fare questo mi affiderò nuovamente all'esempio Blinker fornito con l'ambinete di sviluppo.

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.

*/
void setup() {               
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
 
 pinMode(13, OUTPUT);     

} 

void loop() {

  digitalWrite(13, HIGH);   // set the LED on

  delay(1000);              // wait for a second

  digitalWrite(13, LOW);    // set the LED off

  delay(1000);              // wait for a second

}
Nello sketch viene utilizzato il PIN 13 che dispone già di un LED sulla scheda. Dopo aver inizializzato il pin come uscita nel metodo setup() possiamo portare l'uscita digitale a stato 1 (accendendo il led) o 0 (spegnendo il led) utilizzando il comando digitalWrite:

digitalWrite(numero_pin, [HIGH/LOW]);

Un'uscita può avere valore HIGH corrispondente a +5V o LOW corrispondente a 0V.

Utilizzando questo comando e l'istruzione delay(millisecondi) che introduce un ritardo definito in millisecondi all'interno del metodo loop() possiamo ottenere l'effetto desiderato.



ATTENZIONE!!!

Un uscita digitale si comporta come un generatore di tensione e cercherà di erogare una corrente pari a quella richiesta dal carico collegato. L'uscita digitale dell'Arduino però è in grad di erogare al massimo 40mA. Se si collega al pin  un apparato con un maggiore assorbimento o se si verifica un cortocircuito si rischia di rompere il transistore legato al pin e di renderlo inutilizzabile. Per questa ragione è consigliabile inserire tra l'uscita e il dispositivo una resistenza per limitare la corrente. Per esempio mettendo in serie al dispositivo una resistenza da 220 ohm avremmo una corrente pari a 5v / 220 ohm = 23 mA

martedì 10 gennaio 2012

Arduino: Struttura di uno sketch

Un programma per arduino è chiamato sketch.
Uno sketch è costituito almeno da 2 parti:
  • metodo setup()
  • metodo loop()
il metodo setup viene richiamato all'avvio della scheda o dopo un reset della stessa.
Questo metodo viene utilizzato per la dichiarazione delle variabili e per richiamare eventuali librerie

Il metodo loop viene eseguito continuamente e consente all'Arduino di essere sempre pronto a reagire a input.


Proviamo ad analizzare un vero sketch aprendo nell'editor l'esempio "Blinker" come visto nel precedente post

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  This example code is in the public domain.
 */


void
setup() {              
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);    
}


void
loop() {
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(1000);              // wait for a second
}


Le prime righe che incontriamo sono dei commenti che vengono ignorati dal compilatore. 
Per commentare un blocco utilizziamo i tag /*     */
Per commmentare una singola riga utilizziamo //  


Riconosciamo subito i due metodi setup() e loop().
I metodi setup e loop vengono definiti con la sintassi void setup() e void loop() e sono delimitati dalle parentesi graffe. Ciascun comando contenuto dei due metodi pricipali è terminato dal segno di ;


Dopo aver scritto/caricato il programma all'interno dell'editor possiamo verificarne la sintassi attraverso l'icona
 

Prima di compilare il programma e caricarlo nella memoria dell'Arduino utilizzando l'icona
 


Possiamo infine eseguirlo premendo il pulsante RESET sulla scheda

Vedremo in un prossimo post la sintassi dei singoli comandi.


 

lunedì 2 gennaio 2012

Welcome Arduino!!

Inizia la mia avventura con Arduino http://www.arduino.cc/, una semplice piattaforma hardware che si basa su un microcontrollore AVR della ATMEL. Il progetto è nato in Italia ed è completamente opensource pertanto è possibile trovare migliaia di progetti ed esempi sparsi per la rete.
In particolare prenderò confidenza con il modello Duemilanove che è equipaggiato con un ATmega328 dotato di 14 digital input/output pins (di cui 6 utilizzabili per inviare segnali PWM), 6 analog inputs, un oscillatore a 16 MHz , una connessione USB.
L'uso della scheda è molto semplice grazie anche alla mole di documentazione disponibile e al semplice ambiente di programmazione (pensato per non programmatori) si è subito operativi, vediamo come.

Cosa ci server per iniziare

Hardware
Acquistare o costruirsi un Arduino. In Italia lo trovate per esempio da RobotItaly  http://www.robot-italy.com/. Nel mio caso un Arduino 2009. Il costo è di una ventina di euro.

Software
Scaricare l'ultima versione dell'ambiente di programmazione dal sito http://arduino.cc/en/Main/Software


Driver
Se si dispone del sistema operativo Windows Vista o successivi l'Arduino viene riconosciuto non appena collegato alla USB altrimenti è necessario scaricare i driver che potete trovare nella'mbiente di programmazione appena scaricato o sul sito  FTDI website. in ogni caso trovate la doumentazione nella sezione Gettin Started del sito ufficiale Arduino.


Ed ora...iniziamo!

Connettere l'Arduino al computer via USB (in questo modo forniremo anche l'alimentazione necessaria alla scehda)
Lanciare l'applicazione Arduino e

  • dal menu Tool alla voce Board selezionare il modello di Arduino posseduto
  • dal menu Tool alla voce Serial Port selezionare la porta lla quale è connesso l'Arduino (se non si è certi di quale sia basta sconnettere la scheda e vedere quale porta sparisce...ecco è proprio quella)

NOTA: qualora il programma si rivelasse particolarmente lento nell'aprire il menu Tool verificare dal Pannello di Controllo di Windows che non siano presenti apparati Bluetooth non connessi ed eventualmente rimuoverli (ogniqualvolta si apre tale menu infatti il sofware riverifica tutte le porte seriali attentendo eventuali timeout di risposta)

Siamo già operativi, infatti nel microcontrollore dell'Arduino è precaricato un firmware (il bootloader) per cui possiamo subito inviare alla scheda il nostro primo programma.

A questo punto possiamo scrivere il codice nel nostro editor.......ops ma non so programmare!!! Nessun problema nel menu file troviamo una serie di esempi pronti. Proviamo per esempio a caricare il nostro primo programma inviando  l'esempio blinker alla scheda.

Dal menu File alla voce Example scegliamo Blinker. Nell'editor viene visualizzato il codice.

A questo punto non ci resta che compilare e caricare il programma sul microcontrollore premendo il pulsante con la freccia verso destra


Ecco fatto, dopo pochi secondi di caricamentto il LED presente sulla scheda comincia a lampeggiare proprio come ci aspettavamo.

Nei prossimi post cercherò di analizzare gli elementi fondamentali del programma di esempio e proseguire poi con nuove applicazioni.

Il programma rimarra sull'arduino anche se lo spegnamo; ogniqualvolta lo alimenteremo quindi il programma andrà in esecuzione e il LED inizierà a lampeggiare

lunedì 10 ottobre 2011

Draconidi 2011

Per l'8 ottobre era previsto un outbourts dello sciame meteorico delle draconidi a seguito dell'attraversamento da parte della Terra dei frammenti della coda della cometa 21P/Giacobini-Zinner con picchi previsti attorno alle 600 meteore/ora.
I due massimi erano previsti per le ore 19 e per le 21.57.
Il primo cade al crepuscolo rendendo praticamente invisibile il fenomeno...quindi....proviamo col secondo.
Il meteo sembra inclemente e la presenza della luna alta in cielo sembra rendere vano qualunque tentativo, ma il forte vento in quota aiuta a sgomberare il cielo dalle nubi poco prima delle 22....peccato che il vento non riesca a spazzare anche la luna :-)
Cavalletto fisso sulla terrazza di casa e macchina puntata allo zenit. Obiettivo tutto aperto, focale 18mm e sensibilità a 3200 ISO, una scelta che introduce molto rumore, ma che si rende necessaria per catturare la debole lluce delle draconidi.
Inizio con qualche posa e mi rendo subito conto che con la luna e l'inquinamento luminoso poche decine di secondi sono sufficienti a saturare il sensore.
In un quarto d'oraconto una ventina di meteore di media intensità...ma ovviamente tutte cadono al di fuori del campo inquadrato :-(
La temperatura piuttosto fresca mi fa desistere, così rientro comunque soddisfatto dalla breve caccia e con un solo fotogramma con impressa la traccia di una piccola draconide, ma tanto basta......in attesa di nuovi sciami.




martedì 31 maggio 2011

Korg TR: Gestire Patch Combi da PC


Per poter gestire in modo semplice (editing e ordinamento) le patche e le combi possiamo utilizzare il software MidiQuest da PC.
Purtroppo il sofware non possiede un modulo specifico per la Korg TR, ma possiamo utilizzare quello della Korg Triton LE (Qualche volta riceveremo errori MIDI sullo schermo della tastiera, ma tutto sommato si riesce a lavorare)


  • Download dal sito ftp di quest di Korg_Triton_LE_76.sqz 
  • Studio - Install Instrument 
  • Studio - Add installed instrument 
  • Collegare la TR via MIDI o USB 
  • Sulla TR abilitare i messaggi di sistema esclusivo
* TURN ON SYSTEM EXCLUSIVE
* The Triton is shipped with SysX disabled. To turn it on:
 - press the "Global" button
 - press the "Menu" button
 - press the "MIDI" page
 - in the MIDI Filter section, check  "Enable Exclusive"
 - press the menu button
 - choose the "Write Global Setting"
 and save the global parameters

* Match the MIDI channel for reception and transmission. To do this:
 - press the "Global" button
 - press the "Menu" button
 - press the "MIDI" page
 - match the MIDI channel to the Triton's Comm channel

* Turn off memory protect before transmitting to Triton:
 - press the "Global" button
 - press the "Menu" button
 - press the "Basic Setup" option
 - in the "Memory Protect" area, ensure that the option for the type of data you are planning to send is not checked


  • (Midiquest): Dal menu Midi verificare midi in e midi out:



  • Dalla finestra studio scegliere “Default Set” e “Get”


  • Sullo schermo della tastiera appare l’indicazione del Dump in corso al termine del quale in Questa apparirà la schermata attraverso la quale possiamo accedere ai banchi delle combi o dei program:



Da qui è possibile

  • Riordinare patch e combi: trascinare i vari elementi per riordinarli 
  • modificare patche o combi: con un doppio click sull’elemento: 


 Esempio schermata di configurazione delle patch


Esempio schermata Combi

Quando ci troviamo in edit di una patch o una combi possiamo ascoltare il risultato suonando la tastiera