Archivi tag: shield

Lezione 4 – Arduino GamePad – Disegnare caratteri speciali su LCD1602 Keypad Shield della Keyestudio

In riferimento a quanto esposto a lezione questa mattina durante la lezione a distanza, aggiungo alcune indicazioni per disegnare icone personalizzate sul display: pacman, alieno, fantasmi, ecc… La modalità di realizzazione icone è la medesima di quella spiegata nella lezione svolta alcuni mesi fa: Disegnare caratteri personalizzati con Arduino per un LCD 16×2 in cui veniva utilizzato un display I2C.

Le modifiche per l’utilizzo dell’LCD1602 Keypad Shield della Keyestudio sono minime e di seguito indico alcuni esempi.

E’ importante, per inserire nuove icone sul display, studiare la lezione precedente in cui descrivo come realizzare le icone.

Di seguito tre esempi utili per sviluppare il vostro progetto di PCTO.

Esempio 1

In questo esempio mostro come visualizzare sulla prima riga del display una stringa di presentazione e sulla seconda riga 8 icone

1/*
2 *  Prof. Michele Maffucci
3 *  Crezione di caratteri personali
4 *  Utilizzo di un display LCD1602 Keypad Shield della Keyestudio
5 *  Data: 19.03.2021
6*/
7 
8// inclusione della libreria LiquidCrystal.h
9#include <LiquidCrystal.h>
10 
11// inizializza la libreria con i numeri dei pin dell'interfaccia
12LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
13 
14// caratteri personalizzati
15 
16byte lucchettoChiuso[8] = {
17  0b01110,
18  0b10001,
19  0b10001,
20  0b10001,
21  0b11111,
22  0b11011,
23  0b11011,
24  0b11111
25};
26 
27byte lucchettoAperto[8] = {
28  0b01110,
29  0b10000,
30  0b10000,
31  0b10000,
32  0b11111,
33  0b11011,
34  0b11011,
35  0b11111
36};
37 
38byte Altoparlante[8] = {
39  0b00001,
40  0b00011,
41  0b01111,
42  0b01111,
43  0b01111,
44  0b00011,
45  0b00001,
46  0b00000
47};
48 
49byte batteriaMezza[8] = {
50  0b01110,
51  0b11011,
52  0b10001,
53  0b10001,
54  0b10001,
55  0b11111,
56  0b11111,
57  0b11111
58};
59 
60byte alieno[8] = {
61  0b10001,
62  0b01010,
63  0b11111,
64  0b10101,
65  0b11111,
66  0b11111,
67  0b01010,
68  0b11011
69};
70 
71 
72byte pacmanBoccaChiusa[8] = {
73  0b01110,
74  0b11101,
75  0b11111,
76  0b11111,
77  0b11000,
78  0b11111,
79  0b11111,
80  0b01110
81};
82 
83byte pacmanBoccaAperta[8] = {
84  0b01110,
85  0b11101,
86  0b11111,
87  0b11100,
88  0b11000,
89  0b11000,
90  0b11111,
91  0b01110
92};
93 
94byte fantasmino[8] = {
95  0b01110,
96  0b11111,
97  0b10101,
98  0b11111,
99  0b11111,
100  0b11111,
101  0b11111,
102  0b10101
103};
104 
105void setup()
106{
107 // impostazione del numero di colonne e righe del display
108  lcd.begin(16, 2);
109 
110  // creazione nuovi caratteri
111  lcd.createChar(0, lucchettoChiuso);
112  lcd.createChar(1, lucchettoAperto);
113  lcd.createChar(2, Altoparlante);
114  lcd.createChar(3, batteriaMezza);
115  lcd.createChar(4, alieno);
116  lcd.createChar(5, pacmanBoccaChiusa);
117  lcd.createChar(6, pacmanBoccaAperta);
118  lcd.createChar(7, fantasmino);
119   
120  // Cancella il display
121  lcd.clear();
122 
123  // Stampa la stringa
124  lcd.print("PCTO a.s. 20/21");
125 
126}
127 
128void loop()
129{
130  lcd.setCursor(0, 1);
131  lcd.write(byte(0));
132 
133  lcd.setCursor(2, 1);
134  lcd.write(byte(1));
135 
136  lcd.setCursor(4, 1);
137  lcd.write(byte(2));
138 
139  lcd.setCursor(6, 1);
140  lcd.write(byte(3));
141 
142  lcd.setCursor(8, 1);
143  lcd.write(byte(4));
144 
145  lcd.setCursor(10, 1);
146  lcd.write(byte(5));
147 
148  lcd.setCursor(12, 1);
149  lcd.write(byte(6));
150 
151  lcd.setCursor(14, 1);
152  lcd.write(byte(7));
153}

Esempio 2

In questo secondo esempio mostriamo come visualizzare l’icona del Pacman che va avanti e indietro sulla prima riga del display

1/*
2 *  Prof. Michele Maffucci
3 *  Crezione di caratteri personali
4 *  Utilizzo di un display LCD1602 Keypad Shield della Keyestudio
5 *  Data: 19.03.2021
6 
7 *  Movimento verso destra e sinistra di una icona (alieno)
8*/
9 
10// inclusione della libreria LiquidCrystal.h
11#include <LiquidCrystal.h>
12 
13// inizializza la libreria con i numeri dei pin dell'interfaccia
14LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
15 
16// Velocità con cui viene stampato il l'icona 
17int velocita = 300;
18 
19// caratteri personalizzati
20 
21byte alieno[8] = {
22  0b10001,
23  0b01010,
24  0b11111,
25  0b10101,
26  0b11111,
27  0b11111,
28  0b01010,
29  0b11011
30};
31 
32void setup()
33{
34 // impostazione del numero di colonne e righe del display
35  lcd.begin(16, 2);
36 
37  // creazione nuovi caratteri
38  lcd.createChar(4, alieno);
39 
40  // visualizzazione sul display del nome
41  // dell'attività
42   
43  // Cancella il display
44  lcd.clear();
45 
46  // Stampa la stringa
47  lcd.print("PCTO a.s. 20/21");
48  delay(1000);
49 
50  // Cancella il display
51  lcd.clear();
52}
53 
54void loop()
55{
56   // Movimento verso destra del carattere
57  for (int contatorePosizioneColonna = 0; contatorePosizioneColonna < 16; contatorePosizioneColonna++) {
58    // Cancella il display
59    lcd.clear();
60    // Spostamento di una posizione verso destra del cursore
61    lcd.setCursor(contatorePosizioneColonna, 0);
62    // Stampa del icona: alieno
63    lcd.write(byte(4));
64    // Attesa di un'istante per percepire il movimento del carattere
65    delay(velocita);
66  }
67 
68  // Movimento verso sinistra del carattere
69  for (int contatorePosizioneColonna = 16; contatorePosizioneColonna > 0; contatorePosizioneColonna--) {
70    // Cancella il display
71    lcd.clear();
72    // Spostamento di una posizione verso sinistra del cursore
73    lcd.setCursor(contatorePosizioneColonna, 0);
74    // Stampa del icona: alieno
75    lcd.write(byte(4));
76    // Attesa di un'istante per percepire il movimento del carattere
77    delay(velocita);
78  }
79}

Esempio 3

Realizzare le medesime funzionalità dell’esercizio precedente in cui l’icona del Pacman nell’avanzamento apre e chiude la bocca.
In questo esempio il Pacman quando torna indietro non si gira.

1/*
2    Prof. Michele Maffucci
3    Crezione di caratteri personali
4    Utilizzo di un display LCD1602 Keypad Shield della Keyestudio
5    Data: 19.03.2021
6 
7    Movimento verso destra e sinistra di una icona (Pacman)
8    Durante il movimento il Pacman apre e chiude la bocca
9*/
10 
11// inclusione della libreria LiquidCrystal.h
12#include <LiquidCrystal.h>
13 
14// inizializza la libreria con i numeri dei pin dell'interfaccia
15LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
16 
17// Velocità con cui viene stampato il l'icona
18int velocita = 300;
19 
20// caratteri personalizzati
21 
22byte pacmanBoccaChiusa[8] = {
23  0b01110,
24  0b11101,
25  0b11111,
26  0b11111,
27  0b11000,
28  0b11111,
29  0b11111,
30  0b01110
31};
32 
33byte pacmanBoccaAperta[8] = {
34  0b01110,
35  0b11101,
36  0b11111,
37  0b11100,
38  0b11000,
39  0b11000,
40  0b11111,
41  0b01110
42};
43 
44void setup()
45{
46  // impostazione del numero di colonne e righe del display
47  lcd.begin(16, 2);
48 
49  // creazione nuovi caratteri
50  lcd.createChar(0, pacmanBoccaChiusa);
51  lcd.createChar(1, pacmanBoccaAperta);
52 
53  // Cancella il display
54  lcd.clear();
55 
56  // Stampa la stringa
57  lcd.print("PCTO a.s. 20/21");
58}
59 
60void loop()
61{
62 
63  // Movimento verso destra del carattere
64  for (int contatorePosizioneColonna = 0; contatorePosizioneColonna < 16; contatorePosizioneColonna++) {
65    // Cancella il display
66    lcd.clear();
67    // Spostamento di una posizione verso destra del cursore
68    lcd.setCursor(contatorePosizioneColonna, 0);
69    if (contatorePosizioneColonna % 2 == 0) {
70      // Stampa del icona: Pacman bocca chiusa
71      lcd.write(byte(0));
72    }
73    else
74    {
75      // Stampa del icona: Pacman bocca aperta
76      lcd.write(byte(1));
77    }
78    // Attesa di un'istante per percepire il movimento del carattere
79    delay(velocita);
80  }
81 
82  // Movimento verso sinistra del carattere
83  for (int contatorePosizioneColonna = 16; contatorePosizioneColonna > 0; contatorePosizioneColonna--) {
84    // Cancella il display
85    lcd.clear();
86    // Spostamento di una posizione verso sinistra del cursore
87    lcd.setCursor(contatorePosizioneColonna, 0);
88    if (contatorePosizioneColonna % 2 == 0) {
89      // Stampa del icona: Pacman bocca chiusa
90      lcd.write(byte(0));
91    }
92    else
93    {
94      // Stampa del icona: Pacman bocca aperta
95      lcd.write(byte(1));
96    }
97    // Attesa di un'istante per percepire il movimento del carattere
98    delay(velocita);
99  }
100}

Esercizio 1

Eseguire le stesse funzionalità dell’esempio 3 in cui però il Pacman rivolga il viso nella stessa direzione del movimento.

Esercizio 2

Movimentare il Pacman con i pulsanti RIGHT e LEFT, rivolgendo sempre il viso nella giusta posizione di movimento.

Buon Coding a tutti 🙂

Annikken Andee – estendere in modo semplice il controllo di progetti Arduino utilizzando dispositivi mobili

Annikken-Andee

Tra breve incomincerò un ciclo di lezioni a scuola in cui ad una classe quinta (manutentori) sottoporrò una serie di moduli didattici da tre ore settimanali in cui saranno rivisti concetti di elettronica e misure elettroniche, impiantistica civile ed industriale, per poi giungere all’automazione realizzata con PLC e successivamente con Arduino, ovviamente il tutto finalizzato per l’esame di Maturità.
Mostrerò come realizzare semplici sistemi demotici o di controllo su impianti industriali utilizzando tecnologia a basso costo. Tutte le lezioni avranno quindi una forte connotazione sperimentale.

Da circa due giorni sto disegnando la parte delle lezioni che riguarda brevi esercitazioni in cui il controllo viene effettuato utilizzando Annikken Andee, uno shield che permette di controllare attuatori e sensori direttamente da uno dispositivo iOS o Android. La caratteristica più importante del prodotto risiede nella possibilità di poter realizzare l’interfaccia grafiche per azionare o leggere dati e visualizzare grafici, direttamente dall’IDE di Arduino senza la necessità di implementare un’App apposita per le due piattaforme.
Dovrete installare l’App gratuita Andee e collegarvi allo shield Andee via Bluetooth, nel momento in cui farete l’upload dello sketch su Arduino, all’interno dell’App Andee apparirà l’interfaccia grafica che avrete codificato nello sketch.

Annikken-Andee-b

Andee è disponibile per iOS, per Android ed esiste una versione nominata “Andee U” venduta con il kit Sentry Gun che supporta contemporaneamente sia iOS che Android.

Dal punto di vista dei tempi didattici e del “divertimento” dello studente, il prodotto è estremamente utile ed anche se si possiede una competenza di base nella programmazione di Arduino, si potranno ottenere buoni risultati in poco tempo soprattutto perché programmare l’interfaccia grafica non è complicato.

Vi rimando alla visione del video che trovate di seguito (perdonate la scarsa qualità), nel primo effettuo con il il mio smartphone: l’accensione e lo spegnimento di una lampada a 220V, di una sirena, rilevazione della temperatura ambiente.
Con circuiti analoghi, affiancati ai normali pannelli per impianti elettrici civili ed industriali, farò controllare: l’accensione di lampade, apertura e chiusura di cancelli, rilevazioni allarmi di qualsiasi genere, controllo motori elettrici e molto altro.
Interessante la possibilità che ho sperimentato del controllo di rotazione di servomotori, stabilire l’angolo di rotazione di un motorino passo passo, oppure far inviare SMS al cellulare in caso di allarmi impostati da programma… e tantissimo altro…

Vi allego inoltre i seguenti video:

Tutte le informazioni utili potrete trovarle sul sito di riferimento.
su cui potrete seguire, nella sezione: resource tutte le lezioni che vi condurranno ad un’utilizzo completo dello scheda.

Per poter utilizzare Andee dovrete quindi: installare l’App corrispondente per il dispositivo mobile che possedete, installare la libreria Andee nell’IDE Arduino e procedere al collegamento tra dispositivo e Andee.

In successivi articoli pubblicherò spiegazioni ed esercitazioni con relativi sketch.

Un caro saluto a tutti.

Nuova versine dello shield GSM GPS per Arduino

Ricevo da Boris Landoni, Responsabile Tecnico Futura Elettronica srl, la segnalazione che è stata resa disponibile la nuova versione della GSM Shield, basata sui moduli GSM/GPRS SIM900 o GSM/GPRS & GPS SIM908. Moltissime le innovazioni ed i miglioramenti che consento la massima personalizzazione.

Per tutti i dettagli vi invito alla lettura dell’articolo su open-electronics.org.

PCB per realizzare shield Arduino

Di recente una chiaccherata con l’amico Gianni M.
Un “vero preside” purtroppo in pensione, ex insegnante di elettronica, uno di quei presidi che non si richiudeva nell’alcova del suo ufficio ma entrava nelle classi e nei laboratori per osservare e lavorare con i ragazzi.
Anche lui impegnato in attività di ricerca con Arduino e di recente ci siamo sentiti per condividere idee di progetti, tra le molte attività in corso Gianni dovrà a breve realizzare degli shield ed ha necessità delle librerie Arduino per Kicad per poter implementare le sue schede.

Già in passato vi avevo dato una mia soluzione, molto alternativa per la costruzione di una proto shield con basette millefori, ma sicuramente per soluzioni un po’ più “ordinate” è bene implementare un circuito stampato.
Io per le attività con i miei ragazzi prediligo Eagle, ma di seguito ho cercato di collezionare una serie di risorse sia per KiCad che Eagle, spero possano esservi di aiuto, non sono in ordine di importanza e si aggiungo a quanto condiviso con Gianni.

Se avete altre segnalazioni sarò ben felice di aggiungerle alla lista.

Rilevatore di radioattività realizzato con Arduino

Non finisco di stupirmi!
In questi giorni sto valutando l’acquisto di alcuni shield per le mie sperimentazioni in classe e un valido riferimento on-line è l’ottimo Cooking hacks, da cui più volte mi sono fornito, puntualità nelle consegne ed immediata risoluzione di problematiche tecniche. Recentemente sono stati messi in vendita due shild per Arduino molto interessanti che consentono di misurare la radioattività ambientale.

Seguite i link sopra indicati per avere dettagli tecnici.
Vi allego immagini e video dimostrativo dei prodotti.