ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi...

13
ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno con un incremento di una unità alla volta. L’esercizio è stato realizzato sia con dei pulsanti meccanici che con dei pulsanti capacitivi. /* Matteo Zuccalà Incremento e decremento tramite due pulsanti Up e Down di una sequenza di numeri da 0 a 9 su Dispaly 7 Segmenti (catodo comune) con accensione del punto di 1/2 secondo ad ogni pressione del tasto.*/

Transcript of ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi...

Page 1: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

ESERCIZI CON PULSANTI

Vengono qui riportati due esercizi con il display a 7 segmenti led.

Si voleva eseguire un conteggio da 0 a 9 e ritorno con un incremento di una unità alla volta.

L’esercizio è stato realizzato sia con dei pulsanti meccanici che con dei pulsanti capacitivi.

/* Matteo Zuccalà

Incremento e decremento tramite due pulsanti Up e Down di

una sequenza di numeri da 0 a 9 su Dispaly 7 Segmenti (catodo comune)

con accensione del punto di 1/2 secondo ad ogni pressione del tasto.*/

Page 2: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

// Definizione dei pin

int led0 = 1; // Segmento e

int led1 = 2; // Segmento d

int led2 = 3; // Segmento c

int led3 = 4; // Segmento b

int led4 = 5; // Segmento a

int led5 = 6; // Segmento f

int led6 = 7; // Segmento g

int ledp = 8; // Segmento dp

int buttonUp = 12;

int buttonDown = 13;

// Definizione delle variabili

int led = 0; // Led da accendere

void setup () {

// Impostazione dei pin come uscite

pinMode (led0, OUTPUT);

pinMode (led1, OUTPUT);

pinMode (led2, OUTPUT);

pinMode (led3, OUTPUT);

pinMode (led4, OUTPUT);

pinMode (led5, OUTPUT);

pinMode (led6, OUTPUT);

pinMode (ledp, OUTPUT);

// Impostazione dei pin come ingressi

pinMode (buttonUp, INPUT);

Page 3: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

pinMode (buttonDown, INPUT);

digitalWrite (buttonUp, HIGH); //Imposto resistenza di Pull-Up interna

digitalWrite (buttonDown, HIGH); //Imposto resistenza di Pull-Up interna

}

void loop () {

if (digitalRead (buttonUp) == 0){ // Se il pulsante UP è premuto

led++; // Incrementa la variabile led

if (led>9) { // Se la variabile supera il valore 9

led=9; // Lascia la variabile a 9

}

delay (500); // Pausa per antirimbalzo

digitalWrite (ledp, HIGH); // Accendi il punto

delay(500); // per 1/2 secondo

digitalWrite (ledp, LOW); // Spegni il punto

}

if (digitalRead (buttonDown) == 0){ // Se il pulsante DOWN è premuto

led--; // Decrementa la variabile led

if (led<0) { // Se la variabile è inferiore al valore 0

led=0; // Lascia la variabile a 0

}

delay (500); // Pausa per antirimbalzo

digitalWrite (ledp, HIGH); // Accendi il punto

delay(500); // per 1/2 secondo

digitalWrite (ledp, LOW); // Spegni il punto

}

if (led==0) {

digitalWrite (led0, HIGH); // Segmento e

digitalWrite (led1, HIGH); // Segmento d

digitalWrite (led2, HIGH); // Segmento c

digitalWrite (led3, HIGH); // Segmento b

digitalWrite (led4, HIGH); // Segmento a

digitalWrite (led5, HIGH); // Segmento f

digitalWrite (led6, LOW); // Segmento g

Page 4: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

}

if (led==1) {

digitalWrite (led0, LOW);

digitalWrite (led1, LOW);

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

digitalWrite (led4, LOW);

digitalWrite (led5, LOW);

digitalWrite (led6, LOW);

}

if (led==2) {

digitalWrite (led0, HIGH);

digitalWrite (led1, HIGH);

digitalWrite (led2, LOW);

digitalWrite (led3, HIGH);

digitalWrite (led4, HIGH);

digitalWrite (led5, LOW);

digitalWrite (led6, HIGH);

}

if (led==3) {

digitalWrite (led0, LOW);

digitalWrite (led1, HIGH);

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

digitalWrite (led4, HIGH);

digitalWrite (led5, LOW);

digitalWrite (led6, HIGH);

}

if (led==4) {

digitalWrite (led0, LOW);

digitalWrite (led1, LOW);

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

Page 5: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

digitalWrite (led4, LOW);

digitalWrite (led5, HIGH);

digitalWrite (led6, HIGH);

}

if (led==5) {

digitalWrite (led0, LOW);

digitalWrite (led1, HIGH);

digitalWrite (led2, HIGH);

digitalWrite (led3, LOW);

digitalWrite (led4, HIGH);

digitalWrite (led5, HIGH);

digitalWrite (led6, HIGH);

}

if (led==6) {

digitalWrite (led0, HIGH);

digitalWrite (led1, HIGH);

digitalWrite (led2, HIGH);

digitalWrite (led3, LOW);

digitalWrite (led4, HIGH);

digitalWrite (led5, HIGH);

digitalWrite (led6, HIGH);

}

if (led==7)

digitalWrite (led0, LOW);

digitalWrite (led1, LOW);

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

digitalWrite (led4, HIGH);

digitalWrite (led5, LOW);

digitalWrite (led6, LOW);

}

if (led==8) {

digitalWrite (led0, HIGH);

Page 6: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

digitalWrite (led1, HIGH);

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

digitalWrite (led4, HIGH);

digitalWrite (led5, HIGH);

digitalWrite (led6, HIGH);

} if (led==9) {

digitalWrite (led0, LOW);

digitalWrite (led1, HIGH);

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

digitalWrite (led4, HIGH);

digitalWrite (led5, HIGH);

digitalWrite (led6, HIGH);

}

}

Display 7 segmenti comandato da due pulsanti .

Partendo dallo sketch che trovate alla pagina del link, modificatelo con i vostri dati (nome e cognome)

aggiungendo i seguenti requisiti:

1. commenti che ne spieghino tutti i passaggi importanti.

Per esempio:

la riga “void LedAcceso(int n)” dovrebbe essere seguita da un commento che ne spieghi la funzione

(a cosa serve)

2. i pin da usare per pilotare il display non devono essere quelli dello sketch di partenza ma quelli da 1

a 7. Modificate lo sketch in modo che non siano usati i pin da 8 a 13 per il display. Vanno usate le

resistenze per proteggere i LED del display.

3. Lo sketch originale serve per eseguire un conteggio automatico da o a 9 con intervallo di 1 secondo.

Va modificato in modo che il display mostri, all’accensione, il numero “0” e tale cifra aumenti o

diminuisca premendo due pulsanti.

In pratica vi devono essere due pulsanti (che potremmo chiamare “up” e “down”) che avranno il

compito di variare la cifra mostrata dal display. Considerate che:

Page 7: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

a. premendo “up” la cifra si incrementa di un numero fino a 9 ma, arrivato al 9, ogni

successiva pressione non deve cambiare più nulla (rimane a 9)

b. premendo “down” la cifra diminuisce di un numero fino a 0 ma, se il display mostra 0, ogni

successiva pressione non deve cambiare più nulla (rimane a 0)

c. ad ogni pressione di “up” (o “down”) si deve avere un incremento (o decremento) di una

unità e non di più di una. Per esempio, deve essere chiaro che premendo il tasto “up” la

cifra deve passare da 6 a 7 e non a 8 o 9)

4. Non vi dovranno essere righe inutili (es. variabili o funzioni non necessarie al funzionamento del

circuito), neppure quello per un eventuale debug (test del funzionamento degli script)

5. per la valutazione si considereranno i seguenti parametri:

a. il circuito funzionante varrà 60 punti. Per la sufficienza, il requisito del corretto

funzionamento (come da indicazioni al punto 3) e la corretta piedinatura (come da

indicazioni al punto 2), sono condizione necessaria.

b. a patto che il circuito sia funzionante, verranno aggiunti da 0 a 15 punti se saranno aggiunti

commenti precisi e chiari nei passaggi fondamentali (vedi esempio al punto 1) e se

verranno seguite le indicazioni al punto 4.

c. a patto che il circuito sia funzionante, verranno aggiunti altri 10 punti se, ad ogni pressione

di uno dei due pulsanti si accenderà, per ½ secondo, il puntino del display. In questo caso

siete autorizzati ad usare il pin 8 per comandarlo.

d. a patto che il circuito sia funzionante,i rimanenti 15 punti saranno aggiunti se, al posto di

usare due pulsanti fisici, userete due pulsanti “touch” come quello sperimentato nel

precedente compito.

Riportate qui di seguito il vostro sketch completo di eventuali commenti: in classe mostrerete il circuito

funzionante durante la lezione del 7 Gennaio. Non allegate altri file ma usate SOLO questo documento.

Buon lavoro e buone feste.

VOSTRO SKETCH:

/* Matteo Zuccalà

Incremento e decremento tramite due sensori capacitivi Up e Down di

una sequenza di numeri da 0 a 9 su Dispaly 7 Segmenti (catodo comune)

con accensione del punto di 1/2 secondo ad ogni pressione del tasto.*/

#include <CapacitiveSensor.h>

// Definizione dei pin

int led0 = 1; // Segmento e

Page 8: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

int led1 = 2; // Segmento d

int led2 = 3; // Segmento c

int led3 = 4; // Segmento b

int led4 = 5; // Segmento a

int led5 = 6; // Segmento f

int led6 = 7; // Segmento g

int ledp = 8; // Segmento dp

// Definizione delle variabili

int led = 0; // Led da accendere

CapacitiveSensor cs_11_12 = CapacitiveSensor(11,12);

CapacitiveSensor cs_11_13 = CapacitiveSensor(11,13);

void setup () {

// Impostazione dei pin come uscite

pinMode (led0, OUTPUT);

pinMode (led1, OUTPUT);

pinMode (led2, OUTPUT);

pinMode (led3, OUTPUT);

pinMode (led4, OUTPUT);

pinMode (led5, OUTPUT);

pinMode (led6, OUTPUT);

pinMode (ledp, OUTPUT);

// Impostazione dei pin come ingressi

cs_11_12.set_CS_AutocaL_Millis(0xFFFFFFFF);

}

void loop () {

Page 9: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

long total1 = cs_11_12.capacitiveSensor(30);

long total2 = cs_11_13.capacitiveSensor(30);

if (total1>100) { // Se il pulsante UP è premuto

led++; // Incrementa la variabile led

if (led>9) { // Se la variabile supera il valore 9

led=9; // Lascia la variabile a 9

}

delay (500); // Pausa per antirimbalzo

digitalWrite (ledp, HIGH); // Accendi il punto

delay(500); // per 1/2 secondo

digitalWrite (ledp, LOW); // Spegni il punto

}

if (total2>100) { // Se il pulsante DOWN è premuto

led--; // Decrementa la variabile led

if (led<0) { // Se la variabile è inferiore al valore 0

led=0; // Lascia la variabile a 0

}

delay (500); // Pausa per antirimbalzo

digitalWrite (ledp, HIGH); // Accendi il punto

delay(500); // per 1/2 secondo

digitalWrite (ledp, LOW); // Spegni il punto

}

if (led==0) {

digitalWrite (led0, HIGH); // Segmento e

digitalWrite (led1, HIGH); // Segmento d

digitalWrite (led2, HIGH); // Segmento c

digitalWrite (led3, HIGH); // Segmento b

digitalWrite (led4, HIGH); // Segmento a

digitalWrite (led5, HIGH); // Segmento f

digitalWrite (led6, LOW); // Segmento g

}

Page 10: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

if (led==1) {

digitalWrite (led0, LOW);

digitalWrite (led1, LOW);

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

digitalWrite (led4, LOW);

digitalWrite (led5, LOW);

digitalWrite (led6, LOW);

}

if (led==2) {

digitalWrite (led0, HIGH);

digitalWrite (led1, HIGH);

digitalWrite (led2, LOW);

digitalWrite (led3, HIGH);

digitalWrite (led4, HIGH);

digitalWrite (led5, LOW);

digitalWrite (led6, HIGH);

}

if (led==3) {

digitalWrite (led0, LOW);

digitalWrite (led1, HIGH);

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

digitalWrite (led4, HIGH);

digitalWrite (led5, LOW);

digitalWrite (led6, HIGH);

}

if (led==4) {

digitalWrite (led0, LOW);

digitalWrite (led1, LOW);

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

digitalWrite (led4, LOW);

Page 11: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

digitalWrite (led5, HIGH);

digitalWrite (led6, HIGH);

}

if (led==5) {

digitalWrite (led0, LOW);

digitalWrite (led1, HIGH);

digitalWrite (led2, HIGH);

digitalWrite (led3, LOW);

digitalWrite (led4, HIGH);

digitalWrite (led5, HIGH);

digitalWrite (led6, HIGH);

}

if (led==6) {

digitalWrite (led0, HIGH);

digitalWrite (led1, HIGH);

digitalWrite (led2, HIGH);

digitalWrite (led3, LOW);

digitalWrite (led4, HIGH);

digitalWrite (led5, HIGH);

digitalWrite (led6, HIGH);

}

if (led==7) {

digitalWrite (led0, LOW);

digitalWrite (led1, LOW);

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

digitalWrite (led4, HIGH);

digitalWrite (led5, LOW);

digitalWrite (led6, LOW);

}

if (led==8) {

digitalWrite (led0, HIGH);

digitalWrite (led1, HIGH);

Page 12: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

digitalWrite (led4, HIGH);

digitalWrite (led5, HIGH);

digitalWrite (led6, HIGH);

} if (led==9) {

digitalWrite (led0, LOW);

digitalWrite (led1, HIGH);

digitalWrite (led2, HIGH);

digitalWrite (led3, HIGH);

digitalWrite (led4, HIGH);

digitalWrite (led5, HIGH);

digitalWrite (led6, HIGH);

}

}

Page 13: ESERCIZI CON PULSANTI - WordPress.com · ESERCIZI CON PULSANTI Vengono qui riportati due esercizi con il display a 7 segmenti led. Si voleva eseguire un conteggio da 0 a 9 e ritorno