top of page
![](https://static.wixstatic.com/media/11062b_155feccf8d494b18b70adcd7716b6646f000.jpg/v1/fill/w_1920,h_1080,al_c,q_90,enc_avif,quality_auto/11062b_155feccf8d494b18b70adcd7716b6646f000.jpg)
Arduino UNO (imparare l'elettronica giocando)
Arduino è una piattaforma hardware low-cost programmabile, con cui è possibile creare circuiti "quasi" di ogni tipo per molte applicazioni, soprattutto in ambito di robotica ed automazione. Si basa su un Microcontrollore della ATMEL, l'ATMega168/328: per esempio l'Arduino Uno monta un ATMega328. Nasce a Ivrea, nel 2005, da un'idea di un professore universitario, un Ingegnere Elettronico, Massimo Banzi, che decise di creare una piattaforma per i propri studenti, così da facilitarli nello studio dell'Interaction Design. Fu un completo successo, a tal punto da spingere l'ingegnere a rendere questa piattaforma, Open Source (in realtà è Open Hardware) cioè è possibile trovare sul sito ufficiale www.arduino.cc, i circuiti, i componenti e addirittura le istruzioni per realizzarla da soli. Ciò che dovrebbe interessare in realtà sono gli schemi circuitali: essendo Open, e quindi visionabili da tutti, possono essere continuamente migliorati dalla comunità e grazie ad essi sono state sviluppate un numero incredibile di librerie software che rendono davvero semplice l'interfaccia con periferiche di qualsiasi tipo.
Fu un gruppo di studenti della facoltà di Ingegneria Informatica a scrivergli la libreria, l'IDE (libreria portabile su ogni sistema operativo) e le prime API; grazie a questi pre-ingegneri, Arduino tutt'oggi programma in modo fluido, semplice e molto intuitivo. In Internet, addirittura, si possono trovare librerie già scritte in base al nostro bisogno. Per esempio se vogliamo fare qualche applicazione e ci serve qualche funzione in particolare o qualche supporto per sensori possiamo ricorrere, appunto, alla navigazione in Internet.
C'è da aggiungere un particolare molto importante, ogni programma che si scrive su Arduino sarà naturalmente avviato a loop() finché non si toglie l'alimentazione dal dispositivo. Quando lo colleghiamo ad una fonte di alimentazione (ad esempio la USB del PC o anche una comunissima Batteria da 9V) si accende e avvia il programma caricato dall'IDE a loop infinito. Questo continua fino a quando non disalimentiamo il sistema.
CODING, ELETTRONICA E CREATIVITA' DIGITALE
-
Descrizione Progetto Coding
-
Scarica l'ambiente di sviluppo
-
Istruzioni standard di Arduino
-
Progetto SpaceShip - flowchar
-
Progetto Spaceship codice
-
Progetto SpaceShip modifica software
-
Progetto Spaceship modifica software & hardware
-
Progetto Kit di Supercar
Di seguito una serie di interessanti tutorials
![](https://static.wixstatic.com/media/473bc6_512adf42cc694a5ba99102fef664994f~mv2.jpg/v1/fill/w_246,h_185,al_c,q_80,usm_0.66_1.00_0.01,enc_avif,quality_auto/473bc6_512adf42cc694a5ba99102fef664994f~mv2.jpg)
Progetti
Ai seguente indirizzi trovate una serie di interessanti progetti con schemi elettrici e sketch (codici)
1° esempio (illuminiamo un LED)
2° esempio (illuminiamo tre led utilizzando un pulsante)
3° esempio (misuriamo la temperatura)
4° esempio (misceliamo i colori)
5° esempio (pilotiamo un servomotore)
Interessante corso base Arduino (clicca qui)
Interressante sito con una serie di esempi e codice C (clicca qui)
Indicazioni generali per sviluppare i primi progetti
CORSO PON 2019-20
Arduino alimenta un diodo led - Due led in serie
![Accensione di un led - Due led in serie.](https://static.wixstatic.com/media/473bc6_2514b8ac5aee447994ded7f474d40e52~mv2.jpg/v1/fill/w_596,h_444,al_c,q_80,usm_0.66_1.00_0.01,enc_avif,quality_auto/Accensione%20di%20un%20led%20-%20Due%20led%20in%20serie_.jpg)
Arduino alimenta due diodi led in parallelo
![Arduino alimenta due diodi led in parall](https://static.wixstatic.com/media/473bc6_b3042c6bd0834b199ed9dcd426cbac0c~mv2.png/v1/fill/w_600,h_462,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/Arduino%20alimenta%20due%20diodi%20led%20in%20parall.png)
Gioco di luci
CODICE
![Tre Led.jpg](https://static.wixstatic.com/media/473bc6_eb83d045ed514368a4b3e01c3924894a~mv2.jpg/v1/fill/w_600,h_405,al_c,q_80,usm_0.66_1.00_0.01,enc_avif,quality_auto/Tre%20Led.jpg)
//Tre led - super car pilotati da arduino - di seguito il codice
//Lampeggio di tre led
// Vedremo che questo codice è migliorabile
void setup(){
// declare the LED pins as outputs
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
}
void loop(){
digitalWrite(3, HIGH); // turn the green LED on pin 3 on
delay(1000);
digitalWrite(3, LOW); // turn the red LED on pin 4 off
delay(1000);
digitalWrite(4, HIGH); // turn the green LED on pin 3 on
delay(1000);
digitalWrite(4, LOW); // turn the red LED on pin 4 off
delay(1000);
digitalWrite(5, HIGH); // turn the green LED on pin 3 on
delay(1000);
digitalWrite(5, LOW); // turn the red LED on pin 4 off
delay(1000);
digitalWrite(4, HIGH); // turn the green LED on pin 3 on
delay(1000);
digitalWrite(4, LOW); // turn the red LED on pin 4 off
delay(1000);
}
Il secondo codice che vi propongo è molto piu snello e presenta una serie di miglioramenti. La variabile globale "timer", garantisce una modifica veloce della temporizzazione di accensione e spegnimento. I tre cicli for rendono snello il codice sia per la dichiarazione dei pin come uscite e sia per la gestione dell'accensione e lo spegnimeto dei singoli led.
CODICE
//Tre led - super car pilotati da arduino - di seguito il codice
int timer=1000;
int num_pins=3;
int pins[] = {3, 4, 5};
int i;
void setup()
{
for (i = 0; i < num_pins; i++)
pinMode(pins[i], OUTPUT);
}
void loop(){
for (i = 0; i < num_pins; i++)
{
digitalWrite(pins[i], HIGH);
delay(timer);
digitalWrite(pins[i], LOW);
}
for (i = num_pins -1; i >= 0; i--){
digitalWrite(pins[i], HIGH);
delay(timer);
digitalWrite(pins[i], LOW);
}
}
A questo punto potete ampliare il progetto inserendo altri diodi led. Create diversi giochi di luce
Misuriamo le distanze - HC_SR_04
![Misuriamo le distanze - HC_SR_04.jpg](https://static.wixstatic.com/media/473bc6_506d1cb5d2f54276b63c74d1c8c9237f~mv2.jpg/v1/fill/w_600,h_353,al_c,q_80,usm_0.66_1.00_0.01,enc_avif,quality_auto/Misuriamo%20le%20distanze%20-%20HC_SR_04.jpg)
CODICE
// Misuratore di distanze con SENSORE AD ULTRASUONI HC-SR04
const int triggerPort = 9;
const int echoPort = 10;
void setup() {
pinMode(triggerPort, OUTPUT);
pinMode(echoPort, INPUT);
Serial.begin(9600);
Serial.print( "Sensore Ultrasuoni: ");
}
void loop() {
//porta bassa l'uscita del trigger
digitalWrite( triggerPort, LOW );
//invia un impulso di 10microsec su trigger
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );
long durata = pulseIn( echoPort, HIGH );
long distanza = 0.034 * durata / 2;
Serial.print("distanza: ");
//dopo 38ms è fuori dalla portata del sensore
if( durata > 38000 ){
Serial.println("Fuori portata ");
}
else{
Serial.print(distanza);
Serial.println(" cm ");
}
}
bottom of page