Recensisci!
Diventa un recensore per ricevere prodotti gratuiti o scontati!
Iscriviti
Se desideri, puoi effettuare un'iscrizione gratuita al forum per entrare nella nostra community.
Ricerca Avanzata
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
Ultimi argomenti
» [Arduino] aiuto programma
Da Glak Mar Mar 12, 2019 9:30 am

» ERRORE NELLA COMPILAZIONE NEXTION
Da papat Mar Feb 26, 2019 7:11 am

» Comandare la Smart TV con Alexa senza broadlink (gratis)
Da Admin Mar Feb 19, 2019 4:31 pm

» Google Home diventa un traduttore simultaneo
Da Admin Mar Feb 19, 2019 4:27 pm

» Recensione Xiaomi Redmi 5 - Edizione 2019
Da Admin Mar Feb 19, 2019 4:24 pm

» Guadagnare lavorando per Google Street View
Da Admin Mar Feb 19, 2019 4:20 pm

» UMIDIGI F1 - Specifiche tecniche
Da Admin Mar Feb 19, 2019 4:14 pm

» display oled 168x64
Da fulvio Dom Feb 10, 2019 9:47 am

» Metro digitale con Arduino
Da Biciopit Gio Feb 07, 2019 11:54 am

I postatori più attivi del mese
Glak
 

Come ragionare per programmare con Arduino

Andare in basso

Come ragionare per programmare con Arduino

Messaggio Da Admin 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.
}

Admin
Admin
♔ Amministratore

Messaggi Messaggi : 4363
Crediti Crediti : 12155
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 20
Località Località : Brescia

Visualizza il profilo http://wikiinfo.forumattivo.it

Torna in alto Andare in basso

Torna in alto


 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum