ITIS “F.GIORDANI” Caserta

A.S. 2016/17

classe 3D informatica

indirizzo di studio: Informatica e Telecomunicazione – articolazione Informatica

Materia: Informatica

Programmatore: Alessandro Bonomo , Valentino Vincenzo

Sistema Operativo: Windows 10

Compilatore:  Arduino

Linguaggio: Arduino

Obiettivo didattico: Uso di costrutti iterativi , selettivi , passaggio di parametri , vettori e procedure.

Obiettivo dell’ esercitazione: far comparire sul display a 7 segmenti una conta da 0 a 9 che incrementa se premuto un pulsante da telecomando a infrarossi oppure un normale bottone.

Elenco attrezzature e materiali:

1.Scheda Arduino Uno

2.resistenze 220 ohm (X7) + resistenza 1k

3. Cavi di collegamento

4.display a 7 segmenti

5.Breadboard

6.Cavo usb per collegare arduino con il pc

7.bottone

8. ricevitore a infrarossi , telecomando a infrarossi
whatsapp-image-2017-04-24-at-12-09-50

Codice pseudolinguaggio/flowchart:

1-4 Includo librerie per usare il telecomando e il ricevitore a infrarossi.

Problemi ad includere la libreria?: http://www.maffucci.it/2015/05/10/arduino-problemi-con-la-libreria-irremote-h-come-risolverli/
7 dichiaro il prototipo della procedura ScriviNumOnDisplay , la procedura riceve un vettore bool come parametro
8 -14 dichiarazioni commentate
15-25 array che contengono sequenze binarie che rappresentano il numero su display
35 fai una sola volta
{
inizializza ricevitore
imposta i pin collegati attraverso una resistenza ad i segmenti in OUTPUT
imposta il pin collegato al bottone come INPUT
inizializza il display a 0
49 }
50 fai sempre
{
leggi stato del pulsante e assegna in statoPulsante
se pulsante del telecomando premuto o pulsante (pin 8) premuto
{
aspetta 200 millisecondi
se lo stato del display e’ 9 allora ponilo a 0
altrimenti incrementa lo stato del display
instrada la variabile statoDisplay

{
se 0 scrivi 0 su display

se 9 scrivi 9 su display
}
ricevi prossimo valore (ricevitore)
}
86 }
87 procedura scrivi su display (ricevo vettore bool)
{
dichiaro variabile locale segmentoLed = a(primo segmento)
fai 7 volte

{
scrivi su pin (segmentoLed,num[i])
incrementa segmentoLed
}
95 }

Codice Arduino:

{
#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>
/*Alessandro Bonomo 4-20-17*/
//prototipi
void scriviNumOnDisplay(int vett[]);
//variabili
int pulsante=8; //pin collegato al pulsante
bool statoPulsante; //variabile che statoDisplayiene lo stato del pulsante
int statoDisplay=0;
int receiver = 11; //pin collegato al ricevitore a infrarossi del telecomando
IRrecv irrecv(receiver);
decode_results results;
//ciascun numero è rappresentato in un vettore mediante una sequenza binaria
bool zero[7]={1,1,1,1,1,1,0};
bool uno[7]={0,1,1,0,0,0,0};
bool due[7]={1,1,0,1,1,0,1};
bool tre[7]={1,1,1,1,0,0,1};
bool quattro[7]={0,1,1,0,0,1,1};
bool cinque[7]={1,0,1,1,0,1,1};
bool sei[7]={1,0,1,1,1,1,1};
bool sette[7]={1,1,1,0,0,0,0};
bool otto[7]={1,1,1,1,1,1,1};
bool nove[7]={1,1,1,1,0,1,1};
//costanti che assorbono il nome del segmento al relativo pin
const int a=1;
const int b=2;
const int c=3;
const int d=4;
const int e=5;
const int f=6;
const int g=7;

void setup()
{

irrecv.enableIRIn(); //inizializza il ricevitore del telecomando
pinMode(a,OUTPUT);
pinMode(b,OUTPUT);
pinMode(c,OUTPUT);
pinMode(d,OUTPUT);
pinMode(e,OUTPUT);
pinMode(f,OUTPUT);
pinMode(g,OUTPUT);
pinMode(pulsante,INPUT);
scriviNumOnDisplay(zero); //inizializza il display a 0

}
void loop()
{
statoPulsante=digitalRead(pulsante);
if (irrecv.decode(&results)||statoPulsante)
{
delay(200);
if (statoDisplay==9) statoDisplay=0;
else statoDisplay++;

switch (statoDisplay)
{
case 0: scriviNumOnDisplay(zero);
break;
case 1: scriviNumOnDisplay(uno);
break;
case 2: scriviNumOnDisplay(due);
break;
case 3: scriviNumOnDisplay(tre);
break;
case 4: scriviNumOnDisplay(quattro);
break;
case 5: scriviNumOnDisplay(cinque);
break;
case 6: scriviNumOnDisplay(sei);
break;
case 7: scriviNumOnDisplay(sette);
break;
case 8: scriviNumOnDisplay(otto);
break;
case 9: scriviNumOnDisplay(nove);
break;
}
irrecv.resume();//ricevi prossimo valore
}
}
void scriviNumOnDisplay(bool num[])
{
int segmentoLed =a;
for (int i=0;i<7;i++)
{
digitalWrite(segmentoLed,num[i]);
segmentoLed++;
}
}

Schema collegamenti elettronici:
7segmentiradattabile

Descrizione top-down dei passi realizzativi:

  1. Realizzare il circuito
  2. Scrivere il codice arduino
  3. Collegare la scheda arduino al pc tramite il cavo usb
  4. Caricare il programma cliccando sul pulsante “carica” dell‘ambiente software arduino

Test finale:
Osservare l’ incremento della conta sul display quando si preme il normale bottone oppure
un bottone del telecomando.
whatsapp-image-2017-04-24-at-12-09-32