Sistemi 1
Programma di Sistemi della classe terza (aggiornato al 2023)
Numero di ore/settimana: 3 ore
Numero di ore/a.s.: 99 ore
Modulo 1
ARDUINO DIGITALE
Arduino
Diagrammi di flusso con Flowgorithm
Programmazione di Arduino
Esercizi su Arduino con il pin13
Semafori a 2 e 3 luci
Esercizi con due Led
Esercizi con tre Led
Accensione Led dalla tastiera
Esercizi con il Monitor Seriale
Controllo Led da tastiera
Led e Pulsanti
Esercizi con un pulsante
Modulo 2
ARDUINO ANALOGICO
Pin analogici
Scrittura analogica
Esercizi con un Led e un pulsante
Lettura analogica
Controllo luminosità
Controllo luminosità con più Led
Esercizi con Led, potenziometro e pulsanti
Uso della seriale per la lettura di sensori
Esercizi con la seriale
Modulo 3
IL LINGUAGGIO DI ARDUINO
Rappresentazione dei dati
Assegnamento, espressioni e operatori
Strutture condizionali
Strutture iterative
Funzioni
Dati strutturati: vettori e matrici
Anno scolastico 2017-18
PREPARAZIONE ALLA PROVA DI VERIFICA
Esercizio 1
Scrivere un programma per ARDUINO per realizzare un dispositivo che conta le persone che entrano in una sala prima dell'inizio di un concerto.
La sequenza delle operazioni è la seguente:
1. si attende l'arrivo di una persona (pin0=1);
2. si attendono 4 secondi;
3. si attende l'ingresso di una persona (pin0=0);
4. si incrementa una variabile che rappresenta il numero di persone entrate;
5. se si supera la capienza della sala (1000 persone) ARDUINO accende il cartello luminoso (pin3=1) per bloccare l'acceso di altre persone;
6. si torna al punto 1.
Esercizio 2
Scrivere un programma per ARDUINO per fare lampeggiare 2 led in questo modo:
● se pin0=1 il led lampeggiano alternativamente;
● se pin0=0 il led lampeggiano
insieme.
Esecizio 3
Scrivere un programma per ARDUINO per realizzare il controllo di un forno industriale per il pane dotato di un nastro trasportatore.
La sequenza delle operazioni è la seguente:
1. si attende che una fotocellula, collocata all'ingresso segnali la presenza del panetto di pane da cuocere (pin0=1);
2. si attiva il nastro trasportatore (pin1=1);
3. si attende un tempo di 10 minuti esatti;
4. si disattiva il nastro trasportatore e si torna all'inizio.
Esercizio 4
Un robot dispone di una paletta per le pulizie azionata da un pistone e dotata di un aspiratore.
Scrivere un programma per ARDUINO che esegue la seguente sequenza:
1. si attende che venga individuato da un sensore un eventuale rifiuto (pin0=1);
2. si aziona la paletta (pin1=1);
3. si aspetta che la paletta sia pronta (2 secondi);
4. si aziona l'aspiratore (pin2=1) per rimuovere il rifiuto;
5. si attende che il rifiuto non venga più rilevato (pin0=0);
6. si disattiva la paletta (pin1=0) e si si spenge l'aspiratore (pin2=0);
7. si torna al punto 1.
Esercizio 5
Scrivere un programma per ARDUINO per gestire un'insegna luminosa.
La sequenza delle operazioni è la seguente:
1. si attende che un pulsante (pin0) venga premuto e rilasciato;
2. si accendono 8 lampade (pin1-pin8) secondo la prima modalità: lampeggio alternato (4 lampade e 4 lampade) ogni secondo;
3. si attende che il pulsante (pin0) venga premuto e rilasciato;
4. si accendono 8 lampade secondo un'altra modalità: lampeggio contemporaneo (8 lampade insieme) ogni 3 secondi;
5. se viene premuto il pulsante collegato al pin0 si torna all'inizio;
6. si torna al punto1.
Esercizio 6
Scrivere un programma per ARDUINO per gestire un'insegna luminosa.
Se il pin3=0 si accendono 4 lampade (pin 4-7) progressivamente in 5 secondi e poi si spengono progressivamente in 1 secondo, se il pin3=1 si accendono 2 lampade (pin 4-5) progressivamente in 3 secondi e poi si accendono 2 lampade (pin 6-7) progressivamente in 2 secondi, poi si spengono improvvisamente.
Il programma si ripete.
Esercizio 7
Scrivere un programma per ARDUINO per gestire tre led in funzione del valore di un potenziometro.
Il led collegato al pin4 si accende se la tensione sul potenziometro è sotto i 2 volt.
Il led collegato al pin5 si accende se la tensione sul potenziometro è tra i 2 volt e i 3,5 volt.
Il led collegato al pin6 si accende se la tensione sul potenziometro è sopra i 3,5 volt.
Esercizio 8
Scrivere un programma per ARDUINO che accende cinque led come con la seguente sequenza: rosso (1 secondo), giallo (0,25 secondi), verde (1,5 secondi), blu (3 secondi), arancione (6 secondi) se il pin4=0.
Se il pin4=1 i led di accendono con la solita sequenza ma il tempo è dimezzato.
Esercizio 9
Scrivere un programma per un Arduino collegato a due led (pin 9 e 10) e un pulsante (pin 4)
1) il programma accende i due led se viene premuto il pulsante
2) il programma accende un led (pin9) se viene premuto, se viene rilasciato accende un altro led (pin10)
3) il programma fa lampeggiare un led (pin9) se viene premuto, se viene rilasciato fa lampeggiare un altro led (pin10)
Esercizio 10
Scrivere un programma per un Arduino collegato a due led (pin 9 e 10) e un potenziometro (pin A0)
1) il programma accende un led (pin9) se la tensione su A0 è maggiore di 3 V, accende un altro led (pin10) se la tensione su A0 è maggiore di 2 V
2) il programma fa lampeggiare un led (pin9) se la tensione su A0 è maggiore di 2 V, fa lampeggiare led (pin10) se la tensione su A0 è maggiore di 3 V, fa lampeggiare entrambi i i led se la tensione su A0 è maggiore di 4 V
Esercizio 11
Scrivere un programma per un Arduino collegato a due led (pin 9 e 10) e un pulsante (pin 4)
1) il programma accende un led (pin9) se viene premuto e rilasciato un pulsante, accende un altro led (pin10) se viene premuto e rilasciato il pulsante
2) il programma fa lampeggiare un led (pin9) se viene premuto un pulsante, fa lampeggiare un altro led (pin10) se viene ripremuto il pulsante
Esercizio 12
Scrivere un programma per un Arduino collegato a tre led (pin 9,10, 11) e un pulsante (pin 4).
1) se il pulsante viene premuto il pulsante, il programma accende un led alla volta per tre volte
2) il programma accende gradualmente un led (pin 10) fino a metà luminosità in 2 secondi, poi attende 1 secondo, poi accende lo stesso led gradualmente fino al massimo in 2 secondi
3) il programma accende gradualmente il led 9 in 2 secondi, poi il led 10 nello stesso tempo, infine il led 11, infine spenge tutti i led
4) il programma attende che il pulsante venga premuto e venga rilasciato e accende e spegne gradualmente il led 9, poi si aspetta che il pulsante venga premuto e poi rilasciato, poi si accende e spegne gradualmente il led 10, poi si aspetta di nuovo che venga premuto e rilasciato il pulsante e si accende e spegne gradualmente il led 11.
Esercizio 13
Scrivere un programma per un Arduino collegato a quattro led (pin 2, 3, 4, 5) e un interruttore (pin 13).
1) se l'interruttore viene chiuso (pin13=1), il programma accende i led 2 e 3, altrimenti accende i led 4 e 5
2) se l'interruttore viene chiuso (pin13=1), il programma accende i led da 2 a 5 in sequenza per 4 volte, altrimenti i led sono spenti
3) l'interruttore viene aperto (pin13=0), il programma accende insieme i led da 2 a 5 progressivamente in 3 secondi, altrimenti (pin13=1) il programma spegne insieme i led da 2 a 5 progressivamente in 3 secondi
Esercizio 14
Scrivere un programma per un Arduino collegato a un led (pin 10), un pulsante (pin 3), un potenziometro (pin A2).
1) il programma fa lampeggiare il led con i seguenti tempi: acceso per 1 s, spento per 2,5 s
2) il programma fa lampeggiare il led con i seguenti tempi: acceso per un tempo uguale alla tensione sul cursore del potenziometro (5V verranno tradotti in 5s, 1 V in 1s), spento per un tempo uguale alla metà della tensione sul cursore del potenziometro
3) il programma attende che il pulsante (pin 3) venga premuto e rilasciato, poi accende il led al valore di luminosità proporzionale alla tensione sul cursore del potenziometro, poi attende che il pulsante venga premuto e rilasciato per spegnere il led
4) il programma attende che il pulsante (pin 3) venga premuto, poi accende progressivamente il led fino a 5 V in 5 s, il led rimane al massimo delle luminosità se il pulsante rimane premuto oltre i 5s, se il pulsante viene rilasciato prima il led viene spento progressivamente con lo stesso tempo e rimane spento fino
Esercizio 15
Un cancello automatico di sola uscita di un parcheggio si deve aprire se l'auto si avvicina e si deve chiudere quando l'auto non è più presente. Il cancello ha una fotocellula che è collegata al pin 2 di Arduino che va a livello logico alto quando è presente l'auto. ll cancello è dotato di due motori collegati ai pin 4,5,6,7 di Arduino, mettendo il livello logico alto sui pin 4 e 6 il cancello si chiude, mettendo iol livello logico alto sui pine 5 e 7 il cancello si apre. Quano i pin sono a zero il cancello sta fermo. Per aprire e chiudere il cancello ci vogliono 20 s.
DIAGRAMMI DI FLUSSO
Raptor
http://raptor.martincarlisle.com/
Esercizi di preparazione alla prova di verifica
Scrivere un algoritmo rappresentandolo tramite diagramma a blocchi, per la soluzione del seguente problema:
- calcolare l’area del triangolo
Scrivere un algoritmo rappresentandolo tramite diagramma a blocchi, per la soluzione del seguente problema:
- trovare il max di due numeri
Scrivere un algoritmo rappresentandolo tramite diagramma a blocchi, per la soluzione del seguente problema:
- calcolare le radici reali di equazioni di 2° grado
Scrivere un algoritmo rappresentandolo tramite diagramma a blocchi, per la soluzione del seguente problema:
- un sistema per automatizzare la spesa in un supermercato deve contare il numero di prodotti messi nel carrello per una spesa massima di 100€ e segnalare quando si supera 100€
Scrivere un algoritmo rappresentandolo tramite diagramma a blocchi, per la soluzione del seguente problema:
- Leggo gli ingressi e li metto in x e y
- Calcolo la differenza d = x-y e la metto in dif
- Confronto dif con 0
- Se dif > 0, scrivo “max è x” e metto x in maggiore
- Se dif < 0, scrivo “max è y” e metto y in maggiore
Scrivere un algoritmo rappresentandolo tramite diagramma a blocchi, per la soluzione del seguente problema:
- dati in ingresso due numeri positivi x e y visualizza in ordine decrescente la sequenza di numeri interi compresi tra x e y che sono divisibili per per il minore tra x e y. Ad esempio, se x = 7 e y = 35, la sequenza è 35 28 21 14 7
Dati cento numeri divisi in dieci set nel seguente ordine.
Set 1: 1-10
Set 2: 11-20
Set 3: 21-30
...
Set 10: 91-100
Disegnare un diagramma di flusso che stamperà la somma di ciascun set.
Anno 2014-15
Schema elettronico Arduino 2009
Sito di riferimento di ARDUINO (per le istruzioni selezionare Learning - Reference)
Domande di preparazione alla prova di verifica
1) Quanti pin possono essere programmati come ingressi digitali su Arduino?
2) Quanti pin possono essere programmati come uscite digitali su Arduino?
3) Quanti pin possono essere utilizzati come uscite analogiche su Arduino?
4) Quanti pin possono essere utilizzati come ingressi analogici su Arduino?
5) Qual'è il microcontrollore utilizzato in Arduino 2009?
6) In quanti modi si alimenta Arduino? Quali sono?
7) Come si trasferisce il programma dal PC ad Arduino?
8) Perché il pin 13 è diverso dagli altri pin?
9) Tramite quali dispositivi un robot riceve segnali dall'esterno?
10) Tramite quali dispositivi un robot si muove o muove proprie parti?
11) A che servono i diodi inseriti nel circuito del driver dei motori di un robot?
12) Che significa IR e perché si usano i dispositivi IR?
13) Qual'è il motore utilizzato nei robot minisumo alimentati a batterie?
14) Qual'è il punto debole di questi motori?
15) A che serve il trigger nel dispositivo di ingresso dei segnali di un robot?
16) Che cosa è il catodo di un diodo led?
17) Qual'è il simbolo grafico di diodo led?
18) Come si collega un diodo ad un pin di Arduino? (disegna lo schema con i valori dei componenti)
19) A quale tensione si può alimentare Arduino con una pila?
20) Scrivere il loop() per fare lampeggiare un led con Arduino.
21) Scrivere il loop() per accendere un led a comando da tastiera (tasto 0 = ON, tasto 1=OFF).
22) Scrivere il programma di setup per la seriale.
23) A che serve l'istruzione digitalWrite e quali sono i parametri che servono a farla funzionare?
24) A che serve l'istruzione delay e qual'è il parametro che serve a farla funzionare?
25) A che serve il driver in un robot?
26) Quanti driver servono per pilotare un motore in modo che possa andare avanti e indietro?
27) A che serve l'istruzione #define?
28) Nei programmi di Arduino che differenza c'è tra l'operatore == e l'operatore = ?
29) A che serve la tabella ASCII?
30) Quando di usano la parentesi graffe?
31) Che differenza c'è tra le parentesi graffe e quelle tonde?
32) A che serve l'istruzione Serial.available()?
33) A cosa servono le spazzole nel motore in corrente continua?
34) Quando si usa Arduino nano al posto di Arduino uno?
35) Quando si usa Arduino mega al posto di Arduino uno?
36) Si può alimentare Arduino se non si usa il cavo USB e lo spinotto di alimentazione? Come?
Diagrammi di flusso (accensione led con pulsante)
ESERCITAZIONE
Test uscita ingresso analogico
Test ingresso analogico con potenziometro
PROVA DI VERIFICA
1. Scrivere un programma per ARDUINO per gestire una serranda di un negozio
1) attendere che il commutatore a chiave venga attivato pin7=1;
2) alzare la serranda attivando il motore attraverso il pin9 con una tensione progressiva che sale da 0 al massimo in 10 secondi e impostando la rotazione su “avvolgi” attraverso pin12=1;
3) attendere altri 10 secondi;
4) spegnere il motore;
5) attendere che il commutatore a chiave venga attivato pin7=1;
6) abbassare la serranda attivando il motore attraverso il pin9 con una tensione progressiva che sale da 0 al massimo in 10 secondi e impostando la rotazione su “fai scendere” attraverso pin12=0;
7) spegnere il motore;
8) ritorna al punto 1
2. Scrivere un programma per ARDUINO che gestisce un robot per la gara di minisumo con le seguenti specifiche:
1) attendere che venga premuto un pulsante (pin4 =1);
2) far lampeggiare 5 volte un led collegato al pin5 (la durata complessiva del lampeggio deve essere di 5 secondi);
3) attivare i motori attraverso pin10 e pin9 a metà della loro velocità massima, impostando la direzione avanti su entrambi i motori attraverso i pin 8 e 12;
4) attendere che uno dei 2 sensori analogici (pin4 e pin5) veda il bianco, ovvero il valore letto su uno dei due pin sia inferiore a 450;
5) attivare i motori attraverso pin10 e pin9 al massimo della loro velocità, impostando la direzione indietro su entrambi i motori attraverso i pin 8 e 12, per 2 secondi;
6) ritorna al punto 3.
3. Scrivere un programma per ARDUINO per gestire la porta girevole di una aereoporto:
1) fare lampeggiare il led sul pin3 mentre si attende che il pulsante di apertura venga premuto (pin10=1);
2) attivare l'apertura della porta attraverso un motore collegato al pin9 e impostando il movimento su “apri” attraverso pin2=1;
3) attendere 4 secondi;
4) attivare la chiusura della porta attraverso il motore collegato al pin9 e impostando il movimento su “chiudi” attraverso pin2=0;
5) attendere 4 secondi;
6) spegnere il motore;
7) attivare il messaggio vocale inviando un comando al sintetizzatore vocale attraverso i pin 4=1 e pin5=0;
8) attendere che il sensore di rilevamento dell'impronta digitale venga attivato pin7=1;
9) attendere 2 secondi;
10) attendere che il sensore dia il consenso pin7=0;
11) attivare l'apertura della porta interna attraverso un motore collegato al pin13 e impostando il movimento su “apri” attraverso pin2=1;
12) attendere 4 secondi;
13) attivare l'apertura della porta interna attraverso il motore collegato al pin13 e impostando il movimento su “chiudi” attraverso pin2=0;
14) ritorna al punto 1
Esercizi di ripasso
Scrivere il loop per attendere che venga premuto un pulsante (pin4 =1) e poi accendere un led collegato al pin13;
Scrivere il loop per attendere che venga premuto e rilasciato un pulsante (pin4 =1, poi pin4=0) e poi accendere un led collegato al pin13;
Scrivere il loop per accendere con un ciclo 10 led collegati ai pin da 0 a 9 uno dopo l'altro ogni 2 s, al termine sono tutti accesi;
Scrivere il loop per accendere con un ciclo 10 led collegati ai pin da 0 a 9 partendo da 0 e arrivando a 9 in 10 s;
Scrivere il loop per accendere con un ciclo 10 led collegati ai pin da 2 a 11 partendo da 11 e arrivando a 2 in 9 s;
Scrivere il loop per accendere con un ciclo un solo led alla volta su 10 led collegati ai pin da 0 a 9 ogni 0,5 s
Scrivere il loop per accendere con un ciclo un solo led alla volta su 5 led collegati ai pin da 3 a 7 ogni 0,5 s partendo dal pin7 e arrivando al pin 3;
Scrivere il loop per calcolare con un ciclo il fattoriale di 9;
Scrivere il loop per accende un led al 60%;
Scrivere il loop per accendere con un ciclo un solo led progressivamente in 5 s;
Scrivere il loop per accendere con un ciclo un led e spegnerne un altro contemporaneamente e progressivamente in 5 s;
Scrivere il loop per leggere un sensore infrarosso sull'ingresso 4, leggere un sensore sull'ingresso 5 e fare la media;
Scrivere il loop per leggere un sensore infrarosso sull'ingresso 4 e accendere un led sul pin10 se l'ingresso è sopra il 50%;
Scrivere il loop per leggere due sensori infrarossi sull'ingresso 4 e 2 e accendere un led sul pin10 se l'ingresso 4 e più grande dell'ingresso 2;
Scrivere il setup per un dispositivo che ha due ingressi digitali (4 e 5), un uscita analogica (3), un ingresso analogico (1)
Scrivere il setup per un dispositivo che ha due uscite digitali (13 e 5), un uscita analogica (9), due ingressi analogici (1 e 5), un ingresso digitale (1)
Scrivere il loop per far lampeggiare 3 volte un led collegato al pin5 (la durata complessiva del lampeggio deve essere di 3 secondi);
Scrivere il loop per accendere due motori attraverso pin10 e pin9 a metà della loro velocità massima, e per impostare la direzione avanti su entrambi i motori attraverso pin8=1 e pin12=1;
Scrivere il loop per attendere che uno sensore di 2 sensori analogici (pin4 e pin5) abbia un valore inferiore al 30%, poi accendere un led sul pin10;
Scrivere il loop per attendere entrambi i sensore di 2 sensori analogici (pin4 e pin5) abbiano un valore inferiore al 30%, poi accendere un led sul pin10;
Scrivere il loop per fare lampeggiare un led sul pin3 mentre si attende che un pulsante venga premuto (pin10=1);
Scrivere il loop per attivare l'apertura di una porta attraverso un motore (pin9=1 per accenderlo e pin2=1 per la direzione) per 20 secondi;
Scrivere il loop per attivare l'apertura di una porta attraverso un motore (pin9=1 per accenderlo e pin2=1 per la direzione) per 20 secondi interrompendola se il sensore sente un ostacolo (pin4=1);
Scrivere il loop per attivare l'apertura di una porta attraverso un motore (pin9=1 per accenderlo e pin2=1 per la direzione) per 20 secondi, se il sensore sente un ostacolo (pin4=1) si inverte la direzione per 5 secondi e poi si ferma tutto;
Scrivere il setup per l'esercizio 22;
Scrivere il setup per l'esercizio 24;
Scrivere il loop per accende e spegne gradualmente in 4 secondi (2 s per l'accensione e 2 s per lo spegnimento) un led (pin13);
Scrivere il loop per far lampeggiare 10 volte un led collegato al pin2 (la durata dell'accensione e dello spegnimento è di 0,7 s);
Scrivere il loop per attende che vengano premuti due pulsanti contemporaneamente (pin4=1 e pin3=1), poi si accende un led (pin13=1);
Scrivere il loop per accende 4 led contemporaneamente (da pin0 a pin3) per 5 secondi, poi si spengono tutti;
Scrivere il loop se attende che si prema e si rilasci un pulsante (pin4) e che fa lampeggiare un led (pin3).
Scrivere il loop per far accendere 4 led in funzione del valore di un ingresso analogico, i led si accendono uno dopo l'altro ogni volta se si superano i seguenti valori della tensione: 1, 2, 3, 4V
Scrivere il loop che fa lampeggiare un led (pin13) con un tempo di 1 s se l'ingresso pin4=1, se l'ingresso pin4=0 il tempo si dimezza
ESERCIZI DI PREPARAZIONE ALLA PROVA DI VERIFICA DI MARZO
Esercizio 1
Si realizzi il programma per un Arduino che ha due uscite (pin 9 e pin10) e un ingresso (pin4). Se viene premuto (pin 4=1) e rilasciato il pulsante (pin 4=0) i led lampeggoano alternativamente, se il pulsante viene premuto e rilasciato di nuovo i led lampeggiano in contemporanea.
Esercizio2
Si realizzi il programma per un Arduino che ha un uscita (pin 9) e un ingresso (pin4). Il led collegato al pin 9 viene acceso progressivamente in 3 secondi e spento progressivamente in 3 secondi. Questo lampeggio graduale si ripete fino a che viene premuto (pin 4=1) e rilasciato il pulsante (pin 4=0). A questo punto i led lampeggiano alternativamente per 20 secondi e poi il programa si ripete dall'inizio.
Esercizio3
Si realizzi il programma per un Arduino che ha tre uscite (pin 9,12,13) e due ingressi (pin4 e pin11). Il led collegato al pin 13 lampeggia fino a che viene premuto il pulsante (pin 4=1). A questo punto si accendono le due uscite 12 e 9 (quest'ultima al 50%) collegate ad un driver di un motore, ma se viene attivato il sensore (pin11=1) l'uscita 9 si azzera, si attende 10 secondi, si inverte il movimeno del motore (pin12=0 e pin9=50%) fino a che il sensore si disattiva (pin11=0). Poi il programma riparte dall'inizio.
Esercizio4
Si realizzi il programma per un Arduino che ha sette uscite (da pin 0 a pin6) collegati a delle luci che illuminano un percorso pedonale.
Poi ci sono sette ingressi (da pin 7 a pin13) che sono collegati
a dei sensori di presenza. Il programma fa accendere le tre luci piu' vicine al punto in cui il sensore vede una persona. Se la persona entra nel percorso o esce si devono accendere solo le 2 luci piu' vicine all'ingresso o all'uscita.
Esercizio5
Si realizzi il programma per un Arduino che gestisce una cisterna di recupero dell'acqua piovana. Ci sono quattro uscite (da pin 0 a pin3), collegate a tre led e una pompa idraulica che fa partire l'irrigazione di un giardino. Ci sono poi tre ingressi (da pin4 a pin6): un sensore di troppo pieno, un sensore di serbatoio vuoto, un deviatore estate-inverno. Il programma fa accendere la pompa solo se il deviatore e' sulla posizione estate (pin6=1) e il serbatoio non e' vuoto (pin5=1), solo un'ora al giorno tutti i giorni dalle ore 20 alle 21.
Inoltre il programma accebde i led per visualizzare i seguenti stati: troppo pieno, serbatoio vuoto, pompa accesa.
Gestione di un cancello automatico
Si dispone di:
- di un sensore per sentire la presenza dell'auto davanti al cancello,
- di un sensore per ricevere il comando di apertura,
- di un motore per aprire il cancello,
- di un paletto elettromeccanico per bloccare il cancello nelle posizioni chiuso e aperto.
Un microcontrollore controlla il cancello.
Quando un auto si avvicina viene dato il comando di apertura, alza il paletto e
accende il motore che apre il cancello e attende per 30 secondi l'apertura.
Poi fa scendere il paletto per bloccare il cancello nella posizione aperto.
Attende che il sensore non rilevi più l'auto, poi alza il paletto,
Chiude il cancello spengendo il motore, attende 30 secondi, attende una nuova auto.
Esercizi di preparazione alla prova di verifica
Esercizio 1
Scrivere un programma per ARDUINO che accende due led lampeggianti simultaneamente se l'ingresso 4 è a 1 e accede i due led lampeggianti alternativamente se l'ingresso è a 0.
Esercizio 2
Scrivere un programma per un ARDUINO che accende un led se si preme un pulsante (ingresso 0) e si spenge se si preme un altro pulsante (ingresso 1).
Svolgimento
setup()
{
pinMode(0,INPUT);
pinMode(1,INPUT);
pinMode(2,OUTPUT);
}
loop()
{
while(!digitalRead(0));
digitalWrite(2,HIGH);
while(!digitalRead(1));
digitalWrite(2,LOW);
}
Esercizio 3
Scrivere un programma per un ARDUINO che accende un led se si preme contemporaneamente due pulsanti (ingresso 0 e ingresso 1) e si spenge se si preme uno dei due pulsanti da solo.
Esercizio 4
Scrivere un programma per un ARDUINO che fa lampeggiare un led su pin3 se si preme il pulsante (ingresso 0) e se si un altro pulsante (ingresso 1) fa lampeggiare un led su pin4. Se si preme un altro pulsante su pin2 si spegne tutto.
Svolgimento (da provare, migliorare e/o correggere)
setup()
{
pinMode(0,INPUT);
pinMode(1,INPUT);
pinMode(2,INPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
}
loop()
{
int lampeggio=0;
int led1=0;
int led2=0;
while(!digitalRead(0) && !digitalRead(1) && !digitalRead(4));
if ((digitalRead(0) && !lampeggio) || led1)
{
digitalWrite(3,HIGH);
lampeggio=1;
led1=1;
}
else
{
digitalWrite(3,LOW);
lampeggio=1;
led1=1;
}
if ((digitalRead(1) && !lampeggio) || led2)
{
digitalWrite(4,HIGH);
lampeggio=1;
led2=1;
}
else
{
digitalWrite(4,LOW);
lampeggio=1;
led2=1;
}
delay(500);
if (digitalRead(2) && lapeggio)
{
digitalWrite(3,LOW);
digitalWrite(4,LOW);
lampeggio=0;
}
}
Esercizio 5
Scrivere un programma per ARDUINO che accende tre led come in un semaforo con la seguente sequenza: rosso (1 secondo), giallo (0,25 secondi), verde (1,5 secondi).
Esercizio 6
Scrivere un programma per ARDUINO che scrive 1 o 0 sui pin da 0 a 4 in funzione degli ingressi da 5 a 9. Per esempio se il pin 5 è a 1, allora il pin 0 va a 1.
Esercizio 7
Scrivere un programma per ARDUINO che accende 13 led se si preme un pulsante e spenge tutto se si preme lo stesso pulsante.
Esercizio 8
Un cancello automatico dispone di due pistoni e di un paletto di blocco.
Scrivere un programma per l'ARDUINO che controlla il cancello.
Il processo è il seguente:
● si attende l’auto segnalata da una fotocellula davanti al cancello (pin0=1)
● si attende che venga premuto un pulsante (pin1=1)
● si attiva la salita del paletto di blocco del cancello (pin3=1)
● si attende 2 secondi
● si attivano i pistoni che fanno aprire il cancello (pin2=1)
● si attende che un microinterrutore segnali che il cancello è aperto (pin4=1)
● si disattivano i pistoni che fanno aprire il cancello (pin2=0)
● si attende 10 secondi
● si verifica che l'auto non sia più presente (pin0=0)
● si attivano i pistoni che fanno chiudere il cancello (pin5=1)
● si attende che un microinterrutore segnali che il cancello è aperto (pin6=1)
● si disattivano i pistoni che fanno chiudere il cancello (pin5=0)
● si attiva la discesa del paletto di blocco del cancello (pin3=0)
● si torna all'inizio
GARA di PROGRAMMAZIONE
SQUADRA1
Il contapersone
Si vuole utilizzare ARDUINO per realizzare un dispositivo che segnala il superamento della capienza massima di un cinema.
Il processo è il seguente:
● ogni 500 ms ARDUINO fa lampeggiare un led verde collegato al pin2
● un tornello segnala il passaggio di uno spettatore, ARDUINO attende pin0=1, poi attende pin0=0, poi incrementa una variabile che rappresenta il numero di persone entrate
● se si supera la capienza della sala (500 persone) ARDUINO fa lampeggiare a interrupt il led rosso collegato a pin3 (sempre ogni 500 ms)
● si attende il pulsante di reset (pin1=1) per tornare all'inizio del programma
SQUADRA 2
Il contapezzi
Si vuole utilizzare ARDUINO per realizzare un dispositivo contapezzi.
Il processo è il seguente:
● una fotocellula segnala il passaggio di un pezzo sul nastro trasportatore, ARDUINO attende pin0=1, poi attende pin0=0, poi incrementa una variabile che rappresenta il numero di pezzi contati
● viene attivato un ritardo di 250 ms
● ogni 200 ms ARDUINO fa lampeggiare un led verde collegato a pin1
● se si supera i 1000 pezzi ARDUINO fa lampeggiare il led rosso collegato a pin2 (ogni 200 ms)
● si attende il pulsante di reset (pin3=1) per tornare all'inizio del programma
SQUADRA 3
La foratrice
Una cella di foratura dispone di un trapano a colonna dotato di un pistone.
Un ARDUINO controlla il processo di foratura.
Il processo è il seguente:
● si attende che venga premuto il pulsante (pin0=1)
● si controlla che lo sportello di protezione (pin1=1) sia chiuso, se non lo è si torna all'inizio
● si attiva un pistone (pin2=1) che fa scendere il trapano (il trapano torna nella posizione di riposo grazie a una molla)
● si attende la discesa del trapano per 1 secondo
● si accende il motore del trapano (pin3=1)
● si controlla che il pulsante sia premuto e lo sportello sia chiuso, quando non è più verificata una di queste due condizioni si disattiva subito motore e pistone e si riparte dall'inizio
SQUADRA 4
La pressa
Si vuole utilizzare ARDUINO per realizzare il controllo di una pressa.
Il processo è il seguente:
● si attende la pressione dei due pulsanti di attivazione della pressa, posti a una distanza di 1 metro tra di loro, pin1=1 e pin2=1
● si chiude la pressa (pin0=1)
● si attende un tempo di 16 secondi esatti (utilizzare un ritardo di 5 s)
● si disattiva la pressa
● si attende che i pulsanti siano stati rilasciati entrambi e si torna all'inizio
● si attende il pulsante di reset (pin1=1) per tornare all'inizio del programma
SQUADRA 5
Giochi di luci
Si vuole utilizzare un ARDUINO per realizzare tre giochi di luci.
Il processo è il seguente:
● a interrupt si accendono 12 led secondo tre modalità: lampeggio ogni secondo, lampeggio ogni 3 secondi, lampeggio ogni 6 secondi, in ogni modalità
● nel main si attende la pressione di un pulsante pin0 e al suo rilascio si cambia modalità
CORREZIONE PROVA DI VERIFICA
FILA A
Esercizio 1
Scrivere un programma per ARDUINO per realizzare un dispositivo che conta le persone che entrano in una sala prima dell'inizio di un concerto.
La sequenza delle operazioni è la seguente:
1. si attende l'arrivo di una persona (pin0=1);
2. si attendono 4 secondi;
3. si attende l'ingresso di una persona (pin0=0);
4. si incrementa una variabile che rappresenta il numero di persone entrate;
5. se si supera la capienza della sala (1000 persone) ARDUINO accende il cartello luminoso (pin3=1) per bloccare l'acceso di altre persone;
6. si torna al punto 1.
setup()
{
pinMode(0,INPUT);
pinMode(3,OUTPUT);
}
loop()
{
int persone=0;
while(!digitalRead(0)); // attende arrivo persona
delay(4000); // attende 4 secondi
while(digitalRead(0)); // attende ingresso persona
persone++; // incrementa conteggio
if(persone==1000) digitalWrite(3,HIGH); // segnala capienza massima
}
Esercizio 2
Scrivere un programma per ARDUINO per fare lampeggiare 2 led in questo modo:
● se pin0=1 il led lampeggiano alternativamente;
● se pin0=0 il led lampeggiano insieme.
setup()
{
pinMode(0,INPUT);
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
}
loop()
{
if(!digitalRead(0))
{
digitalWrite(1,HIGH);
digitalWrite(2,HIGH);
delay(400);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
delay(400);
}
if(digitalRead(0))
{
digitalWrite(1,LOW);
digitalWrite(2,HIGH);
delay(400);
digitalWrite(1,HIGH);
digitalWrite(2,LOW);
delay(400);
}
}
Esecizio 3
Scrivere un programma per ARDUINO per realizzare il controllo di un forno industriale per il pane dotato di un nastro trasportatore.
La sequenza delle operazioni è la seguente:
1. si attende che una fotocellula, collocata all'ingresso segnali la presenza del panetto di pane da cuocere (pin0=1);
2. si attiva il nastro trasportatore (pin1=1);
3. si attende un tempo di 10 minuti esatti;
4. si disattiva il nastro trasportatore e si torna all'inizio.
setup()
{
pinMode(0,INPUT);
pinMode(1,OUTPUT);
}
loop()
{
while(!digitalRead(0)); // attende ingresso pane
digitalWrite(1,HIGH); // nastro ON
delay(600000); // aspetta 10 minuti = 10 x 60 s x 1000 ms
digitalWrite(1,LOW); // nastro OFF
}
Esercizio 4
Un robot dispone di una paletta per le pulizie azionata da un pistone e dotata di un aspiratore.
Scrivere un programma per ARDUINO che esegue la seguente sequenza:
1. si attende che venga individuato da un sensore un eventuale rifiuto (pin0=1);
2. si aziona la paletta (pin1=1);
3. si aspetta che la paletta sia pronta (2 secondi);
4. si aziona l'aspiratore (pin2=1) per rimuovere il rifiuto;
5. si attende che il rifiuto non venga più rilavato (pin0=0);
6. si disattiva la paletta (pin1=0) e si si spenge l'aspiratore (pin2=0);
7. si torna al punto 1.
setup()
{
pinMode(0,INPUT);
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
}
loop()
{
while(!digitalRead(0)); // attende rilevamento rifiuto
digitalWrite(1,HIGH); // paletta azionata
delay(2000); // aspetta 2 secondi
digitalWrite(2,HIGH); // aspiratore ON
while(digitalRead(0)); // attende fine rilevamento rifiuto
digitalWrite(1,LOW); // paletta OFF
digitalWrite(2,LOW); // aspiratore OFF
}
Esercizio 5
Scrivere un programma per ARDUINO per gestire un'insegna luminosa.
La sequenza delle operazioni è la seguente:
1. si attende che un pulsante (pin0) venga premuto e rilasciato;
2. si accendono 8 lampade (pin1-pin8) secondo la prima modalità: lampeggio alternato (4 lampade e 4 lampade) ogni secondo;
3. si attende che il pulsante (pin0) venga premuto e rilasciato;
4. si accendono 8 lampade secondo la prima modalità: lampeggio contemporaneo (8 lampade insieme) ogni 3 secondi;
5. se viene premuto il pulsante collegato al pin0 si torna all'inizio;
6. si torna al punto1.
setup()
{
pinMode(0,INPUT);
for(int i=1; i<=8; i++) pinMode(i,OUTPUT); // pin da 1 a 8 programmati come uscite
}
loop()
{
while(!digitalRead(0)); // attende pressione pulsante
while(digitalRead(0)); // attende rilascio pulsante
while(!digitalRead(0)) // ciclo attesa pressione pulsante
{
for(int i=1;i<=4;i++) digitalWrite(i,HIGH); // accende lampade
for(int i=5;i<=8;i++) digitalWrite(i,LOW); // spegne lampade
delay(500); // attesa per visualizzare lampeggio
for(int i=1;i<=4;i++) digitalWrite(i,LOW); // spegne lampade
for(int i=5;i<=8;i++) digitalWrite(i,HIGH); // accende lampade
delay(500); // attesa per visualizzare lampeggio
}
while(digitalRead(0)); // attende rilascio pulsante
while(!digitalRead(0)) // ciclo attesa pressione pulsante
{
for(int i=1;i<=8;i++) digitalWrite(i,LOW); // spegne lampade
delay(500); // attesa per visualizzare lampeggio
for(int i=1;i<=8;i++) digitalWrite(i,HIGH); // spegne lampade
delay(500); // attesa per visualizzare lampeggio
}
while(digitalRead(0)); // attende rilascio pulsante
while(!digitalRead(0)); // attende pressione pulsante
}
FILA B
Esercizio 1
Scrivere un programma per ARDUINO per fare lampeggiare 2 led in questo modo:
● se pin0=1 il led lampeggiano insieme;
● se pin0=0 il led lampeggiano alternativamente.
setup()
{
pinMode(0,INPUT);
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
}
loop()
{
if(digitalRead(0))
{
digitalWrite(1,HIGH);
digitalWrite(2,HIGH);
delay(400);
}
if(!digitalRead(0))
{
digitalWrite(1,LOW);
digitalWrite(2,HIGH);
delay(400);
}
if(digitalRead(0))
{
digitalWrite(1,LOW);
digitalWrite(2,LOW);
delay(400);
}
if(!digitalRead(0))
{
digitalWrite(1,HIGH);
digitalWrite(2,LOW);
delay(400);
}
}
Esercizio 2
Scrivere un programma per ARDUINO per realizzare un dispositivo che conta le persone che escono da un supermercato.
La sequenza delle operazioni è la seguente:
1. si attende l'arrivo di una persona (pin0=1);
2. si attendono 4 secondi;
2. si incrementa una variabile che rappresenta il numero di persone uscite;
3. se si supera il numero previsto dalla direzione del supermercato (1.000.000 di persone) ARDUINO accende la sirena (pin3=1) per premiare il milionesimo cliente;
4. si attende che il cliente sia uscito (pin0=0);
5. si torna al punto 1.
setup()
{
pinMode(0,INPUT);
pinMode(3,OUTPUT);
}
loop()
{
int persone=0;
while(!digitalRead(0)); // attende arrivo persona
delay(4000); // attende 4 secondi
persone++; // incrementa conteggio
if(persone==1000000) digitalWrite(3,HIGH); // segnala milionesimo cliente
while(digitalRead(0)); // attene uscita persona
}
Esercizio 3
Un robot dispone di una paletta per le pulizie azionata da un pistone e dotata di un aspiratore.
Scrivere un programma per ARDUINO che esegue la seguente sequenza:
1. si attende che venga individuato da un sensore un eventuale rifiuto (pin1=1);
2. si aziona la paletta (pin0=1);
3. si aspetta che la paletta sia pronta (2 secondi);
4. si aziona l'aspiratore (pin2=1) per rimuovere il rifiuto;
5. si attende che il rifiuto non venga più rilevato (pin1=0);
6. si disattiva la paletta (pin0=0) e si spenge l'aspiratore (pin2=0);
7. si torna al punto 1.
setup()
{
pinMode(0,INPUT);
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
}
loop()
{
while(!digitalRead(0)); // attende rilevamento rifiuto
digitalWrite(1,HIGH); // paletta azionata
delay(2000); // aspetta 2 secondi
digitalWrite(2,HIGH); // aspiratore ON
while(digitalRead(0)); // attende fine rilevamento rifiuto
digitalWrite(1,LOW); // paletta OFF
digitalWrite(2,LOW); // aspiratore OFF
}
Esercizio 4
Scrivere un programma per ARDUINO per realizzare un giochi di luci.
La sequenza delle operazioni è la seguente:
1. si attende che il pulsante (pin0) venga premuto e rilasciato;
2. si accendono 12 led (pin1-pin12) secondo la prima modalità: lampeggio alternato (6 led e 6 led) ogni secondo;
3. si attende che il pulsante (pin0) venga premuto e rilasciato;
4. si accendono 12 led secondo la prima modalità: lampeggio contemporaneo (12 led insieme) ogni 3 secondi;
5. se viene premuto il pulsante collegato al pin0 si torna all'inizio;
6. si torna al punto1.
setup()
{
pinMode(0,INPUT);
for(int i=1; i<=12; i++) pinMode(i,OUTPUT); // pin da 1 a 12 programmati come uscite
}
loop()
{
while(!digitalRead(0)); // attende pressione pulsante
while(digitalRead(0)); // attende rilascio pulsante
while(!digitalRead(0)) // ciclo attesa pressione pulsante
{
for(int i=1;i<=6;i++) digitalWrite(i,HIGH); // accende led
for(int i=7;i<=12;i++) digitalWrite(i,LOW); // spegne led
delay(500); // attesa per visualizzare lampeggio
for(int i=1;i<=6;i++) digitalWrite(i,LOW); // spegne led
for(int i=7;i<=12;i++) digitalWrite(i,HIGH); // accende led
delay(500); // attesa per visualizzare lampeggio
}
while(digitalRead(0)); // attende rilascio pulsante
while(!digitalRead(0)) // ciclo attesa pressione pulsante
{
for(int i=1;i<=12;i++) digitalWrite(i,LOW); // spegne led
delay(500); // attesa per visualizzare lampeggio
for(int i=1;i<=12;i++) digitalWrite(i,HIGH); // spegne led
delay(500); // attesa per visualizzare lampeggio
}
while(digitalRead(0)); // attende rilascio pulsante
while(!digitalRead(0)); // attende pressione pulsante
}
Esercizio 5
Scrivere un programma per ARDUINO per realizzare il controllo di un parcheggio aziendale.
La sequenza delle operazioni è la seguente:
1. si attende che il sistema di riconoscimento della targa dell'auto collocato all'ingresso segnali la presenza di un'auto aziendale (pin0=1);
2. si attiva l'apertura della sbarra (pin1=1);
3. si attende un tempo di 3 minuti esatti;
4. si chiude la sbarra e si torna all'inizio.
setup()
{
pinMode(0,INPUT);
pinMode(1,OUTPUT);
}
loop()
{
while(!digitalRead(0)); // attende riconoscimento targa
digitalWrite(1,HIGH); // apertura sbarra
delay(180000); // aspetta 3 minuti = 3 x 60 s x 1000 ms
digitalWrite(1,LOW); // chiusura sbarra
}
COMPITI per la VACANZE di NATALE
Da portare giovedì 9 per il controllo (insieme a tutti gli appunti del primo trimestre).
ESERCIZIO 1 - L'insegna
Si vuole utilizzare un ARDUINO per realizzare il controlo di un insegna luminosa.
Il processo è il seguente:
● si attende il livello logico basso da un sensore di luce (pin0=0), in modo da attivare l'insegna quando è buio
● solo quando è buio si accendono in sequenza le seguenti uscite:
- pin1 e pin2
- dopo 0,8 secondi pin3 e pin4
- dopo 0,8 secondi pin5 e pin6 e si spengono tutte le altre
- dopo 0,4 secondi pin1 e pin2
- dopo 0,4 secondi si spengono tutte
- dopo 0,4 secondi si ritorna all'inizio
Disegnare il diagrama di flusso del programma
Scrivere il programma per ARDUINO
Disegnare e dimensionare lo schema elettronico (il sensore sarà disegnato come un interruttore con la resistenza e non come un deviatore).
ESERCIZIO 2 - Il contapezzi
Si vuole utilizzare ARDUINO per realizzare un dispositivo contapezzi.
Il processo è il seguente:
● una fotocellula segnala il passaggio di un pezzo sul nastro tras portatore, ARDUINO attende pin0=1, poi attende pin0=0, poi incrementa una variabile che rappresenta il numero di pezzi contati
● se si supera i 1000 pezzi ARDUINO fa lampeggiare un led rosso collegato a pin2 altrimenti fa lampeggiare un led verde collegato a pin1
● se si supera i 1000 pezzi il programma attende che la pressione del pulsante di reset (pin3=1), azzera il conteggio e torna all'inizio del programma altrimenti si torna all'inizio del programma
Disegnare il diagramma di flusso del programma
Scrivere il programma per ARDUINO
Disegnare e dimensionare lo schema elettronico (la fotocellula sarà disegnata come un interruttore con la resistenza e non come un deviatore).
ESERCIZIO 3 - Il sumorobot
Si vuole utilizzare ARDUINO per realizzare il controlo di un robot da minisumo.
Il processo è il seguente:
● ARDUINO attende che venga premuto il pulsante di partenza (pin0=1)
● attende 5 secondi
● accende i due motori per andare avanti (pin1=1, pin2=0, pin3=1, pin4=0)
● legge i due sensori di prossimità pin5 e pin6 e opera con la seguente modalità:
- se pin5=1 (siamo sul bordo bianco) si torna indietro (pin1=0, pin2=1, pin3=0, pin4=1) per 2 secondi e si gira verso destra il robot per altri 2 secondi (pin1=1, pin2=0, pin3=0, pin4=1)
- se pin6=1 (siamo sul bordo bianco) si torna indietro (pin1=0, pin2=1, pin2=0, pin3=1) per 2 secondi e si gira il verso sinistra il robot per altri 2 secondi (pin1=0, pin2=1, pin2=1, pin3=0)
Disegnare il diagramma di flusso del programma
Scrivere il programma per ARDUINO
Disegnare e dimensionare lo schema elettronico (i sensori di prossimità saranno disegnati come interruttori con la loro resistenza e non come deviatori).
Uso dell'ingresso analogico su Arduino
Macchina per fare il pane
Impianto di illuminazione
Serbatoio dell'acqua
Correzione prova di verifica
FILA A
Scrivere un programma per ARDUINO per gestire l'irrigazione di un orto. L'acqua del pozzo non è sufficiente ad innaffiare tutto l'orto contemporaneamente. L'orto è diviso in 4 zone. L'irrigazione di ogni zona è controllata da una elettrovalvola. Le 4 elettrovalvole fanno passare l'acqua se i pin 0,1,2,3 vanno al livello logico alto.
Per far arrivare l'acqua occorre accendere la pompa che è collegata al pin 5.
L'irrigazione deve durare 10 minuti per ogni zona e deve essere fatta due volte al giorno, alle 7 e alle 20.
Quando viene acceso ARDUINO, attende lo Start tramite il pin 6 da parte di un operatore alle ore 7 e poi non ha più bisogno di altri segnali.
ARDUINO accende durante l'irrigazione il led rosso collegato al pin 7 e durante l'attesa tra un'irrigazione e l'altra accende il led verde collegato al pin 8.
SOLUZIONE
void setup()
{
pinMode(0,OUTPUT); // ev 1
pinMode(1,OUTPUT); // ev 2
pinMode(2,OUTPUT); // ev 3
pinMode(3,OUTPUT); // ev 4
pinMode(5,OUTPUT); // pompa
pinMode(6,INPUT); // start
pinMode(7,OUTPUT); // led rosso
pinMode(8,OUTPUT); // led verde
}
void loop()
{
while(!digitalRead(6));
while(1)
{
accendi();
delay(44400000);
accendi();
delay(37200000);
}
}
accendi()
{
digitalWrite(8,LOW);
digitalWrite(0,HIGH);
digitalWrite(5,HIGH);
digitalWrite(7,HIGH);
delay(600000); // x 4x10 min
digitalWrite(0,LOW);
digitalWrite(1,HIGH);
delay(600000);
digitalWrite(1,LOW);
digitalWrite(2,HIGH);
delay(600000);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
delay(600000);
digitalWrite(3,LOW);
digitalWrite(5,LOW);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
FILA B
Scrivere un programma per ARDUINO per gestire il riscaldamento di una palestra. Il sistema di riscaldamento non è in grado di scaldare tutta la palestra contemporaneamente. La palestra è divisa in 4 zone. Il riscaldamento di ogni zona è controllato da una elettrovalvola. Le 4 elettrovalvole fanno passare l'acqua calda nei vari settori se i pin 0,1,2,3 vanno al livello logico alto.
Per produrre l'acqua calda occorre accendere la caldaia che è collegata al pin 5.
Il riscaldamento deve durare 30 minuti per ogni zona e deve essere fatto due volte al giorno, alle 9 e alle 17.
Quando viene acceso ARDUINO, attende lo Start tramite il pin 6 da parte di un operatore alle ore 9 e poi non ha più bisogno di altri segnali.
ARDUINO accende durante il riscaldamento il led rosso collegato al pin 7 e durante l'assenza del riscaldamento accende il led verde collegato al pin 8.
SOLUZIONE
void setup()
{
pinMode(0,OUTPUT); // ev 1
pinMode(1,OUTPUT); // ev 2
pinMode(2,OUTPUT); // ev 3
pinMode(3,OUTPUT); // ev 4
pinMode(5,OUTPUT); // caldaia
pinMode(6,INPUT); // start
pinMode(7,OUTPUT); // led rosso
pinMode(8,OUTPUT); // led verde
}
void loop()
{
while(!digitalRead(6));
while(1)
{
accendi();
delay(32400000);
accendi();
delay(50400000);
}
}
accendi()
{
digitalWrite(8,LOW);
digitalWrite(0,HIGH);
digitalWrite(5,HIGH);
digitalWrite(7,HIGH);
delay(1800000); // 30 min = 60 x 1000 ms x 30
digitalWrite(0,LOW);
digitalWrite(1,HIGH);
delay(1800000);
digitalWrite(1,LOW);
digitalWrite(2,HIGH);
delay(1800000);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
delay(1800000);
digitalWrite(3,LOW);
digitalWrite(5,LOW);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
NTX
CONTROLLO ON/OFF per LINE-FOLLOWER
CONTROLO MORBIDO per LINE-FOLLOWER
task main()
{
int LetturaNero;
LetturaNero=SENSOR_1;
while(1)
{
OnFwd(OUT_B, SENSOR_1)
OnFwd(OUT_A, 48-SENSOR_1)
}
}