top of page
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
Di seguito una serie di interessanti tutorials

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.

Arduino alimenta due diodi led in parallelo

Arduino alimenta due diodi led in parall

Gioco di luci

CODICE

Tre Led.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

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