A Difesa della Costituzione
Articolo 21, ANPI, FIAP (Federazione Italiana Associazioni Partigiane) Piemonte, Giustizia e Libertà, Comitato Piemontese e Valdostano Salviamo la Costituzione
INVITANO
i cittadini torinesi a manifestare, senza bandiere o simboli di partito e di associazioni, il 12 marzo 2011 in Piazza Castello a Torino dalle 14 alle 17
Per la salvezza della Costituzione della Repubblica e dei suoi inderogabili principi
Per la libertà di informazione e allinformazione ? Per la Giustizia uguale per tutti ? Per la scuola pubblica
Prenderò spunto dal commento che mi è stato lasciato da un mio studente per introdurre l’uso delle istruzioni:
if
if...else
Switch Case
Lo scopo di questa lezione è quello di realizzare un programma che conta quante volte il pulsante viene premuto, per un ciclo di 4 pressioni, alla quinta pressione il led lampeggia una volta e poi si riavvia il ciclo.
Per questa lezione useremo:
breadboard
4 diodi led
1 pulsante
1 resistenza da 10KOhm
Arduino duemilanove
La prima versione del programma è quella che è stata realizzata dal mio studente, realizzazione di uno sketch per effettuare la seguente funzione:
Prima pressione: led lampeggia ogni mezzo secondo
Seconda pressione: led lampeggia ogni secondo
Terza pressione: led lampeggia ogni secondo e mezzo
Quarta pressione: led si spegne
Realizziamo un circuito come indicato nelle immagini che seguono:
La proposta interessante ed elegante dell’allievo, sfrutta l’istruzione “Switch Case” che permette di definire quale porzione di codice eseguire in funzione del valore di una variabile. Ciò consente di evitare lunghe catene di if-else.
Il “break” alla fine di ogni “case” viene usato per interrompere il controllo degli altri “case“.
// Esempio 05:
// Primo tocco: led lampeggia ogni mezzo secondo
// Secondo tocco: led lampeggia ogni secondo
// Terzo tocco: led lampeggia ogni secondo e mezzo
// Quarto tocco: led si spegne
const int BUTTON = 2; // pin di input a cui è collegato il pulsante
const int LED = 13; // LED collegato al pin digitale 13
// Variabili globali (tutti interi)
int statoButton = 0; // stato del pulsante (inizialmente non premuto)
int lastStatoButton = 0; // ultimo stato del pulsante (per ora non premuto)
int countButton = 0; // Conteggio del bottone
// Avvio dell'applicazione
void setup()
{
pinMode(LED, OUTPUT); // imposta il pin digitale come output
pinMode(BUTTON, INPUT); // imposta il pin digitale come input
}
// Avvio del loop
void loop()
{
// Verifico se l'utente ha premuto il bottone
if(digitalRead(BUTTON))
{
// Aspetto 15ms per far alzare il dito all'utente
delay(15);
// Cambio l'ultimo stato del bottone
if(lastStatoButton==0) lastStatoButton=1;
else lastStatoButton=0;
// Aumento il count del bottone
if(countButton<=3) countButton=countButton+1;
else countButton=0;
}
// In base allo stato del bottone scelgo l'azione del led
switch (countButton)
{
// Led lampeggia ogni mezzo secondo
case 1:
digitalWrite(LED, HIGH); // accende il LED
delay(500); // aspetta un secondo
digitalWrite(LED, LOW); // spegne il LED
delay(500); // aspetta un secondo
break;
// Led lampeggia ogni secondo
case 2:
digitalWrite(LED, HIGH); // accende il LED
delay(1000); // aspetta un secondo
digitalWrite(LED, LOW); // spegne il LED
delay(1000); // aspettaun secondo
break;
// led lampeggia ogni secondo e mezzo
case 3:
digitalWrite(LED, HIGH); // accende il LED
delay(1500); // aspetta un secondo
digitalWrite(LED, LOW); // spegne il LED
delay(1500); // aspetta un secondo
break;
// Led si spegne
case 0:
delay(15);
digitalWrite(LED, LOW);
delay(5000); // aspetta un secondo
break;
}
}
Il programma come si intuisce dal filmato, presenta alcuni problemi.
Rimbalzo
Il problema dei segnali spuri dovuti al rimbalzo del pulsante non consente di controllare esattamente la selezione.
Attesa
Durante l’attesa, mentre si vede lampeggiare il led, premendo il pulsante non si ha cambiamento di stato fino a quando non termina il tempo in cui lampeggia il led.
Discriminare
Difficoltà di discriminare in quale situazione ci si trova, tempi troppo brevi per percepire la differenza delle 4 condizioni.
Per risolvere i problemi sopra elencati vi propongo 6 varianti all’esempio 1, ciò mi permetterà di introdurre nuove istruzioni del linguaggio di programmazione.
Prima di fornirvi le mie soluzioni ho necessità di introdurre l’uso dell’istruzioni Serial ed utilizzare il programma “StateChangeDetection” che potete trovare in File > Examples > 2.Digitale > StateChangeDetection o direttamente on-line sul sito Arduino che trovate di seguito
Da poco chiuso il contest sul 555, moltissime le adesioni.
Di seguito alcuni video di progetti molto interessanti che potranno essere usati come spunto per interessantissime esperienze di laboratorio a scuola.
Hi Everyone,
Jeri and I are hard at work thinning the pack to pass on to our hack-master judges by next week. And don’t worry, even if you didn’t make the first cut, you’ll still be eligible for some of the door prizes from our wonderful sponsors. We’ll be announcing those judges soon.
In the meantime, I wanted to highlight only a few of the amazing projects we’ve already seen. Why should the aggregator sites get all the fun? We’ll be posting links to all of the entries in the coming days, once the entries have advanced to the next round. Check out 3 videos Jeri and I thought were particularly fun and inventive:
Circuito equivalente di Thévenin – cambiando il valore della resistenza di carico è possibile visualizzare i valori di corrente e tensione del circuito. (Cuthbert A. Nyack)
Nigel Marsh: Come far funzionare il binomio lavoro-vita privata
Cari amici, cari studenti, vi consiglio di vedere questi 10 minuti di filmato del TED che potrebbero farvi capire quanto sia importante aver consapevolezza del momento che state vivendo.
Il filmato è sottotitolato in italiano (nel video allegato click su “View subtitle” e selezionate “Italian”).
Il binomio lavoro-vita privata, dice Nigel Marsh, è troppo importante per farlo gestire dal vostro datore di lavoro. Al TEDx di Sydney, Marsh fa il tracciato di una giornata ideale equamente divisa tra impegni familiari, tempo da dedicare a se stessi e produttività — e propone delle idee stimolanti per incoraggiarci a raggiungere questo equilibrio.
Tra le molte cose dette mi piace molto il passaggio:
…sta a noi come individui assumere il controllo e la responsabilità del tipo di vita che vogliamo vivere. Se non sarete voi a disegnare la vostra vita sarà qualcun altro a farlo per voi. E a voi potrebbe non piacere la loro idea di ‘equilibrio’…