Vai al contenuto

Imparare a utilizzare Arduino: Hello Blink & Hello Blink 2x


StandardBus

Messaggi raccomandati

Arduino è una scheda di sviluppo molto versatile (progettata da un nostro connazionale) che permette di costruire apparecchi elettronici di vario genere. Questa è una descrizione molto riduttiva... con Arduino si può costruire tantissimi oggetti... Si tratta in sostanza di un vero e proprio microcomputer dalla potenza di calcolo molto limitata, che però ci permette di creare i più svariati dispositivi... il limite di impiego, come lo è per molti apparecchi elettronici, è la nostra fantasia, proprio perchè dovremo noi ideare e realizzare gli apparecchi di cui abbiamo bisogno.

 

Quella di sviluppare con Arduino è un'esperienza che consiglio a chiunque, sia per le basi che permette di buttare giù per cominciare a capire come programmare, sia come esperienza personale nel campo dell'elettronica (che di questi giorni non guasta)

 

Non spaventatevi: non è necessario conoscere nessun linguaggio di programmazione per iniziare, in quanto cercherò di spiegare man mano il codice che andremo ad utilizzare durante il tutorial.

 

PREMESSA: Per seguire questo tutorial è necessario avere già installato il software Arduino scaricabile liberamente per Windows, Linux e MacOS dal sito ufficiale della scheda: http://www.arduino.cc

Per abilitare la scrittura del programma all'interno del Microcontrollore Atmel presente sulle schede Arduino dovrete indicare al programma la porta da utilizzare. Per fare questo sarà sufficiente cliccare all'interno del programma su "Tools", "Serial Port" e selezionare quella utilizzata tra le porte disponibili.

Su linux corrisponde alla porta /dev/ttyUSB# (dove al posto di # sarà presente il numero della porta)

Su Windows corrisponde ad una delle porte COM (per identificarla potete anche andare per tentativi)

Su MacOS corrisponde alla porta /dev/tty.usbserial

 

Il primo esperimento è un semplicissimo Hello Blink, ovvero led lampeggiante.

 

Per vedere il programma in funzione è sufficiente collegare un LED tra il pin 13 e GND, come mostrato in foto. Rispettate la polarità del led, altrimenti non si illuminerà.

http://images.nonsologaming.com/LedOnPin13.jpg

 

void setup()
{
 pinMode(13, OUTPUT);
}

void loop()
{
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(13, HIGH);
 delay(500);
}

 

Una volta copiato il codice all'interno del programma sarà necessario caricarlo sull'Arduino per fare in modo che la scheda cominci ad eseguire quanto richiesto.

Per compilare il programma e scriverlo all'interno del microcontroller è necessario premere il pulsante http://images.nonsologaming.com/upload.png

 

Analizziamo il codice:

"void setup()" = specifica alla scheda come verrà utilizzato il pin indicato, ovvero Input o Output (Dato in ingresso o in uscita)

"pinMode(13, OUTPUT) = da utilizzare dopo "void setup()" indica il pin e l'utilizzo che la scheda ne deve fare. Nell'esempio indica che il pin 13 verrà utilizzato come Output

"void loop()" = ciclo, continua ad eseguire il codice in esso contenuto finchè non si verifica una condizione che alteri lo stato dell'esecuzione del codice

"digitalWrite(13, LOW);" = un dato digitale (che può assumere solo due valori, ovvero 1=HIGH o 0=LOW) viene inviato al pin indicato tra parentesi. In questo caso il pin 13 viene portato a livello basso (LOW) corrispondente a tensione 0V. Se fosse impostato su livello alto (HIGH) in uscita dal pin 13 avremmo una tensione di 5V.

"delay(500);" = ritardo nell'esecuzione della parte di codice successiva a questa stringa. Il valore 500 indica che il comando successivo viene eseguito con un ritardo di mezzo secondo. (1000 corrisponde ad un secondo di ritardo)

 

Da questa brevissima spiegazione potete immaginare cosa facciano le ultime righe del programma.

 

Il risultato sarà quello di ottenere un led che lampeggia ad una velocità di 1 volta al secondo, con il led che rimane acceso per mezzo secondo. Variando i valori tra parentesi è possibile cambiare la velocità con la quale il led lampeggia.

Modificando il codice e utilizzando queste stesse funzioni è possibile ottenere diversi effetti.

 

Hello Blink 2x, ovvero due led lampeggianti alternativamente

 

Questa volta dovremo collegare un secondo led tra i pin 12 e GND. Quindi i led andranno collegati entrambi con il catodo (polo negativo del diodo) nello stesso foro sulla scheda (GND) mentre gli anodi (polo positivo del diodo, è la "gamba" più lunga del led) andranno collegati uno nel pin 13 ed uno nel pin 12.

 

void setup()
{
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
}

void loop()
{
 digitalWrite(12, HIGH);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(12, LOW);
 digitalWrite(13, HIGH);
 delay(500);
}

 

Se avremo collegato tutto giusto il risultato sarà quello di ottenere entrambi i led lampeggianti in modo alternato.

Rimane valida la stessa regola di prima: cambiando il valore dei delay i led lampeggeranno più o meno velocemente.

 

GIOCO: chi riesce con questi presupposti a creare dei giochi di luce utilizzando anche più led di quelli utilizzati nella guida?

Link al commento
Condividi su altri siti

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

Dev'essere bello programmare con queste schede.. se avrò tempo ci proverò.

Una volta capito il funzionamento ed il linguaggio, hai possibilità  infinite... e poi la scheda non costa molto: quelle originali costano all'incirca 30 euro, i kit completi di display, led e componenti vari sui 45... si può imparare molto "giocandoci", e mi piacerebbe molto riuscire a scrivere guide via via sempre più complicate per spiegare come divertirsi con questi aggeggi tecnologici.

 

Se riuscirò questa sarà  solo il primo di una serie di tutorial.

Link al commento
Condividi su altri siti

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

Lo puoi trovare ad esempio su ebay... comunque nel sito ufficiale c'è tutta la lista dei distrubutori (e, almeno per l'Arduino, ci sono parecchi distributori in Italia)

 

EDIT: la lista puoi trovarla al link indicato da HackLeon che mi ha preceduto di qualche secondo. ;)

Link al commento
Condividi su altri siti

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

Dev'essere bello programmare con queste schede.. se avrò tempo ci proverò.

Una volta capito il funzionamento ed il linguaggio, hai possibilità  infinite... e poi la scheda non costa molto: quelle originali costano all'incirca 30 euro, i kit completi di display, led e componenti vari sui 45... si può imparare molto "giocandoci", e mi piacerebbe molto riuscire a scrivere guide via via sempre più complicate per spiegare come divertirsi con questi aggeggi tecnologici.

 

Se riuscirò questa sarà  solo il primo di una serie di tutorial.

Preferirei iniziare da qualcosa di più semplice, come le tavole semplici in cui si collegano i led, le batterie ecc... senza dover programmare, poi programmare e magari inventare anche una console :)

Link al commento
Condividi su altri siti

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

inventare anche una console

console... computer.

non c'è distinzione, sono la stessa cosa ;)

 

Comunque Arduino è un'ottimo inizio, pensa che è progettato apposta per permettere a chi non capisce niente di elettronica di creare ambienti interattivi a fine artistico o per i musei...

Link al commento
Condividi su altri siti

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

GIOCO: chi riesce con questi presupposti a creare dei giochi di luce utilizzando anche più led di quelli utilizzati nella guida?

bus è giusto per 3 led

{
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
}

void loop()
{
 digitalWrite(11,
 digitalWrite(12, HIGH);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(11, 
 digitalWrite(12, LOW);
 digitalWrite(13, HIGH);
 delay(500);
} 

non lo potuto provare perchè non ho un arduino

Link al commento
Condividi su altri siti

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

E sbagliato,

{
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
}

void loop()
{
 digitalWrite(11, QUA DEVI METTERE LOW O HIGH);
 digitalWrite(12, HIGH);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(11, QUA DEVI METTERE LOW O HIGH);
 digitalWrite(12, LOW);
 digitalWrite(13, HIGH);
 delay(500);
}

 

Devi mettere LOW o HIGH per indicare se accendere o spegnere il led

Link al commento
Condividi su altri siti

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

E sbagliato,

{
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
}

void loop()
{
 digitalWrite(11, QUA DEVI METTERE LOW O HIGH);
 digitalWrite(12, HIGH);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(11, QUA DEVI METTERE LOW O HIGH);
 digitalWrite(12, LOW);
 digitalWrite(13, HIGH);
 delay(500);
}

 

Devi mettere LOW o HIGH per indicare se accendere o spegnere il led

non li ho messi perhe non sapevo che significavano e quindi nonsapevoche mettere nel 3 led

{
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
}

void loop()
{
 digitalWrite(11, LOW);
 digitalWrite(12, HIGH);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(11, HIGH);
 digitalWrite(12, LOW);
 digitalWrite(13, HIGH);
 delay(500);
} 

 

sistemato .

programma per arduino sembra facile

p.s. quandi tipi di arduini ci sono

Link al commento
Condividi su altri siti

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

GIOCO: chi riesce con questi presupposti a creare dei giochi di luce utilizzando anche più led di quelli utilizzati nella guida?

bus è giusto per 3 led

{
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
}

void loop()
{
 digitalWrite(11,
 digitalWrite(12, HIGH);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(11, 
 digitalWrite(12, LOW);
 digitalWrite(13, HIGH);
 delay(500);
} 

non lo potuto provare perchè non ho un arduino

 

dipende che vuoi fare... apparte che nell'11 ci andrà  messo un valore, poi comunque questo codice si limita a far lampeggiare 2 led (non so se volessi fare così anche per il terzo) a intermittenza, prima uno e poi l'altro.

 

ne ho scritto uno che conta da 0 a 7 (in binario):

 

 

{
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
}

void loop()
{
 digitalWrite(11, LOW);
 digitalWrite(12, LOW);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(11, LOW);
 digitalWrite(12, LOW);
 digitalWrite(13, HIGH);
 delay(500);
 digitalWrite(11, LOW);
 digitalWrite(12, HIGH);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(11, LOW);
 digitalWrite(12, HIGH);
 digitalWrite(13, HIGH);
 delay(500);
 digitalWrite(11, HIGH);
 digitalWrite(12, LOW);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(11, HIGH);
 digitalWrite(12, LOW);
 digitalWrite(13, HIGH);
 delay(500);
 digitalWrite(11, HIGH);
 digitalWrite(12, HIGH);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(11, HIGH);
 digitalWrite(12, HIGH);
 digitalWrite(13, HIGH);
 delay(500);
} 

Link al commento
Condividi su altri siti

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

Bus in questa foto c'è un arduino diverso da quello tuo e non ce il posto dove mettere i led

 

arduino316.jpg.5f657f711ea31a4bde9f77e9ecb8fae4.jpg

Questo sembrerebbe un'arduino diecimila più che un duemilanove: infatti non ha la porta usb... quelli vecchi si programmavano con la porta parallela, adesso tutto è più semplice.

 

I led andavano collegati proprio ai pin che vedi sulla scheda, fortunatamente per semplificare le cose ora usano dei connettori femmina...

Link al commento
Condividi su altri siti

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

 

{
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
}

void loop()
{
 digitalWrite(11, LOW);
 digitalWrite(12, HIGH);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(11, HIGH);
 digitalWrite(12, LOW);
 digitalWrite(13, HIGH);
 delay(500);
} 

 

 

Il codice e' giusto per tre led?

Link al commento
Condividi su altri siti

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

 

{
 pinMode(11, OUTPUT);
 pinMode(12, OUTPUT);
 pinMode(13, OUTPUT);
}

void loop()
{
 digitalWrite(11, LOW);
 digitalWrite(12, HIGH);
 digitalWrite(13, LOW);
 delay(500);
 digitalWrite(11, HIGH);
 digitalWrite(12, LOW);
 digitalWrite(13, HIGH);
 delay(500);
} 

 

 

Il codice e' giusto per tre led?

 

si.

Link al commento
Condividi su altri siti

  • 3 mesi dopo...

Re: Imparare a utilizzare Arduino: Hello Blink & Hello Blink

 

Dev'essere bello programmare con queste schede.. se avrò tempo ci proverò.

Una volta capito il funzionamento ed il linguaggio, hai possibilità  infinite... e poi la scheda non costa molto: quelle originali costano all'incirca 30 euro, i kit completi di display, led e componenti vari sui 45... si può imparare molto "giocandoci", e mi piacerebbe molto riuscire a scrivere guide via via sempre più complicate per spiegare come divertirsi con questi aggeggi tecnologici.

 

Se riuscirò questa sarà  solo il primo di una serie di tutorial.

 

 

le aspettiamo eh standardbus :)

Link al commento
Condividi su altri siti

  • 9 mesi dopo...

raga scusate ma a me non funziona, mi da questo errore:

 

avrdude: stk500_getsync(): not in sync: resp=0x00

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

 

Uso un Arduino Duemilanove con ATmega328, come posso risolvere?

 

EDIT:Ho risolto cambiando la Serial Port...grazie lo stesso :p

Modificato da vegegoku
Link al commento
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

Giochi in Uscita



  • Community Hive Community Hive

    Community Hive allows you to follow your favorite communities all in one place.

    Follow on Community Hive
  • Utenti

    Non ci sono membri da mostrare

×
×
  • Crea Nuovo...