Seguimi su Youtubue
Iscriviti
Se desideri, puoi effettuare un'iscrizione gratuita al forum per entrare nella nostra community.
Ricerca Avanzata
Pubblicità Google AdSense
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
Ultimi argomenti
» Simulazione nastro trasportatore
Da Poderak Gio Apr 27, 2017 5:04 pm

» musica su arduino
Da fulvio Mer Apr 26, 2017 10:17 am

» altoparlante arduino: quale comprare?
Da Poderak Ven Apr 21, 2017 2:56 pm

» Quattro chiacchiere su Arduino BT Control v1.2
Da Apatrik Mar Apr 18, 2017 10:04 pm

» Presentati al forum
Da Poderak Mar Apr 18, 2017 7:47 pm

» natale con luci esuoni
Da Poderak Lun Apr 17, 2017 5:42 pm

» Come copiare a scuola
Da rob5678 Mer Apr 12, 2017 11:30 am

» libreria
Da fulvio Mar Apr 11, 2017 12:20 pm

» orologio con LCD.
Da fulvio Lun Apr 10, 2017 6:33 pm

I postatori più attivi del mese

Come ragionare per programmare con Arduino

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso

Come ragionare per programmare con Arduino

Messaggio Da Poderak il Mar Set 29, 2015 2:43 pm


Per comprendere il Wiring (il linguaggio di programmazione di Arduino), è necessario a mio parere iniziare a comprendere il funzionamento del linguaggio C/C++. In questo post andremo a vedere come ragionare per comprendere come funziona l'IDE di Arduino.

Per prima cosa guardiamo bene la struttura di come deve essere il codice:
IN ALTO DICHIARIAMO I LIBRERIE, PIN E LE VARIABILI
void setup () {
}
In questa parte impostiamo i nostri componenti ed attiviamo servizi come il serial monitor. Nella maggior parte delle volte qui troviamo se il nostro componente è un INPUT/OUTPUT
void loop() {
}
In questa funzione andiamo a inserire tutte le istruzioni che devono ripetersi all'infinito

Per quanto riguarda la prima parte non c'è un vero e proprio ordine. Dobbiamo ricordarci solamente di inserire prima di tutto le librerie e poi dichiarare i PIN e le variabili. Per queste ultime due l'ordine è indifferente.

Per quanto riguarda il "setup" inseriamo tutte le impostazioni necessarie per dichiarare INPUT/OUTPUT e per attivare servizi come il "Serial Monitor". In questo caso non è necessario un ordine in quanto è indifferente.

Per la funzione "loop" invece bisogna inserire tutte le istruzioni che Arduino deve eseguire. In questo caso è necessario fare in modo che le istruzioni siano in ordine. Appunto il nostro Arduino leggerà la prima riga di istruzione, la eseguirà, passerà alla prossima e così via.

Facciamo un esempio concreto di due semafori di un incrocio (perpendicolari tra loro). Per realizzarlo ci serviranno 6 LED (tralasciando gli altri componenti elettronici e facendo finta di avere già collegato tutto ad Arduino).
NB: Il codice è commentato. Tutto quello che segue a "//" è un commento.

Codice:

//Come spiegato nella guida, dichiariamo tutti i PIN
//necessari per "battezzarli" con un nome.
int ledv1=2; //Il PIN 2 corrisponde al led verde del semaforo 1.
int ledg1=3; //Il PIN 3 corrisponde al led giallo del semaforo 1.
int ledr1=4; //Il PIN 4 corrisponde al led rosso del semaforo 1.
int ledv2=5; //Il PIN 5 corrisponde al led verde del semaforo 2.
int ledg2=6; //Il PIN 6 corrisponde al led giallo del semaforo 2.
int ledr2=7; //Il PIN 7 corrisponde al led rosso del semaforo 2.

void setup() { //Impostiamo i nostri PIN come Output/Input.
pinMode(ledv1, OUTPUT); //Dichiariamo questo LED come OUTPUT
pinMode(ledg1, OUTPUT); //Dichiariamo questo LED come OUTPUT
pinMode(ledr1, OUTPUT); //Dichiariamo questo LED come OUTPUT
pinMode(ledv2, OUTPUT); //Dichiariamo questo LED come OUTPUT
pinMode(ledg2, OUTPUT); //Dichiariamo questo LED come OUTPUT
pinMode(ledr2, OUTPUT); //Dichiariamo questo LED come OUTPUT
//Perché i led sono output? Perché non inviano dati
//ad Arduino ma avviene esattamente il contrario.
//Arduino invia dati al led per accendersi.
}

void loop() { //Indichiamo ad Arduino la sequenza delle istruzioni
  //Blocco 1 di istruzioni da eseguire.
  digitalWrite(ledr1, HIGH); //Il semaforo 1 ha il rosso attivato.
  digitalWrite(ledv2, HIGH);//Il semaforo 2 ha il verde attivato.
  //Fine blocco istruzioni.
  delay(5000); //Tempo di attesa per eseguire il primo blocco.
  //Blocco 2 di istruzioni da eseguire.
  digitalWrite(ledv2, LOW); //Il semaforo 2 disattiva verde.
  digitalWrite(ledg2, HIGH); //Il semaforo 2 attiva giallo.
  delay(2000); //Tempo di attesa per eseguire il secondo blocco.
  digitalWrite(ledg2, LOW); //Il semaforo 2 disattiva giallo.
  digitalWrite(ledr1, LOW); //Il semaforo 1 disattiva rosso.
  digitalWrite(ledr2, HIGH); //Il semaforo 2 accende rosso.
  digitalWrite(ledv1, HIGH); //Il semaforo 1 attiva verde.
  delay(5000); //Tempo di attesa per eseguire il terzo blocco.
  digitalWrite(ledv1, LOW); //Il semaforo 1 disattiva verde.
  digitalWrite(ledg1, HIGH); //Il semaforo 1 attiva giallo.
  delay(2000); //Tempo di attesa per eseguire il quarto blocco.
  digitalWrite(ledg1, LOW); //Il semaforo 1 disattiva giallo.
  digitalWrite(ledr2, LOW); //Il semaforo 1 disattiva rosso.

//Arduino ritorna a eseguire nuovamente il blocco uno di istruzioni
//per poi passare al successivo.
}

avatar
Poderak
♔ Amministratore

Messaggi Messaggi : 4167
Crediti Crediti : 11671
Reputazione Reputazione : 185
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 18
Località Località : Brescia

Vedere il profilo dell'utente http://www.wikiinfo.net

Tornare in alto Andare in basso

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto


 
Permesso di questo forum:
Non puoi rispondere agli argomenti in questo forum