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

/* 
 *  Prof. Michele Maffucci
 *  Crezione di caratteri personali
 *  Utilizzo di un display LCD1602 Keypad Shield della Keyestudio
 *  Data: 19.03.2021
*/

// inclusione della libreria LiquidCrystal.h
#include <LiquidCrystal.h>

// inizializza la libreria con i numeri dei pin dell'interfaccia
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// caratteri personalizzati

byte lucchettoChiuso[8] = {
  0b01110,
  0b10001,
  0b10001,
  0b10001,
  0b11111,
  0b11011,
  0b11011,
  0b11111
};

byte lucchettoAperto[8] = {
  0b01110,
  0b10000,
  0b10000,
  0b10000,
  0b11111,
  0b11011,
  0b11011,
  0b11111
};

byte Altoparlante[8] = {
  0b00001,
  0b00011,
  0b01111,
  0b01111,
  0b01111,
  0b00011,
  0b00001,
  0b00000
};

byte batteriaMezza[8] = {
  0b01110,
  0b11011,
  0b10001,
  0b10001,
  0b10001,
  0b11111,
  0b11111,
  0b11111
};

byte alieno[8] = {
  0b10001,
  0b01010,
  0b11111,
  0b10101,
  0b11111,
  0b11111,
  0b01010,
  0b11011
};


byte pacmanBoccaChiusa[8] = {
  0b01110,
  0b11101,
  0b11111,
  0b11111,
  0b11000,
  0b11111,
  0b11111,
  0b01110
};

byte pacmanBoccaAperta[8] = {
  0b01110,
  0b11101,
  0b11111,
  0b11100,
  0b11000,
  0b11000,
  0b11111,
  0b01110
};

byte fantasmino[8] = {
  0b01110,
  0b11111,
  0b10101,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b10101
};

void setup()
{
 // impostazione del numero di colonne e righe del display
  lcd.begin(16, 2);

  // creazione nuovi caratteri
  lcd.createChar(0, lucchettoChiuso);
  lcd.createChar(1, lucchettoAperto);
  lcd.createChar(2, Altoparlante);
  lcd.createChar(3, batteriaMezza);
  lcd.createChar(4, alieno);
  lcd.createChar(5, pacmanBoccaChiusa);
  lcd.createChar(6, pacmanBoccaAperta);
  lcd.createChar(7, fantasmino);
  
  // Cancella il display
  lcd.clear();

  // Stampa la stringa
  lcd.print("PCTO a.s. 20/21");

}

void loop()
{
  lcd.setCursor(0, 1);
  lcd.write(byte(0));

  lcd.setCursor(2, 1);
  lcd.write(byte(1));

  lcd.setCursor(4, 1);
  lcd.write(byte(2));

  lcd.setCursor(6, 1);
  lcd.write(byte(3));

  lcd.setCursor(8, 1);
  lcd.write(byte(4));

  lcd.setCursor(10, 1);
  lcd.write(byte(5));

  lcd.setCursor(12, 1);
  lcd.write(byte(6));

  lcd.setCursor(14, 1);
  lcd.write(byte(7));
}

Esempio 2

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

/* 
 *  Prof. Michele Maffucci
 *  Crezione di caratteri personali
 *  Utilizzo di un display LCD1602 Keypad Shield della Keyestudio
 *  Data: 19.03.2021
 *  
 *  Movimento verso destra e sinistra di una icona (alieno)
*/

// inclusione della libreria LiquidCrystal.h
#include <LiquidCrystal.h>

// inizializza la libreria con i numeri dei pin dell'interfaccia
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// Velocità con cui viene stampato il l'icona  
int velocita = 300;

// caratteri personalizzati

byte alieno[8] = {
  0b10001,
  0b01010,
  0b11111,
  0b10101,
  0b11111,
  0b11111,
  0b01010,
  0b11011
};

void setup()
{
 // impostazione del numero di colonne e righe del display
  lcd.begin(16, 2);

  // creazione nuovi caratteri
  lcd.createChar(4, alieno);

  // visualizzazione sul display del nome
  // dell'attività
  
  // Cancella il display
  lcd.clear();

  // Stampa la stringa
  lcd.print("PCTO a.s. 20/21");
  delay(1000);

  // Cancella il display
  lcd.clear();
}

void loop()
{
   // Movimento verso destra del carattere
  for (int contatorePosizioneColonna = 0; contatorePosizioneColonna < 16; contatorePosizioneColonna++) {
    // Cancella il display
    lcd.clear();
    // Spostamento di una posizione verso destra del cursore
    lcd.setCursor(contatorePosizioneColonna, 0);
    // Stampa del icona: alieno
    lcd.write(byte(4));
    // Attesa di un'istante per percepire il movimento del carattere
    delay(velocita);
  }

  // Movimento verso sinistra del carattere
  for (int contatorePosizioneColonna = 16; contatorePosizioneColonna > 0; contatorePosizioneColonna--) {
    // Cancella il display
    lcd.clear();
    // Spostamento di una posizione verso sinistra del cursore
    lcd.setCursor(contatorePosizioneColonna, 0);
    // Stampa del icona: alieno
    lcd.write(byte(4));
    // Attesa di un'istante per percepire il movimento del carattere
    delay(velocita);
  }
}

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.


/*
    Prof. Michele Maffucci
    Crezione di caratteri personali
    Utilizzo di un display LCD1602 Keypad Shield della Keyestudio
    Data: 19.03.2021

    Movimento verso destra e sinistra di una icona (Pacman)
    Durante il movimento il Pacman apre e chiude la bocca
*/

// inclusione della libreria LiquidCrystal.h
#include <LiquidCrystal.h>

// inizializza la libreria con i numeri dei pin dell'interfaccia
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// Velocità con cui viene stampato il l'icona
int velocita = 300;

// caratteri personalizzati

byte pacmanBoccaChiusa[8] = {
  0b01110,
  0b11101,
  0b11111,
  0b11111,
  0b11000,
  0b11111,
  0b11111,
  0b01110
};

byte pacmanBoccaAperta[8] = {
  0b01110,
  0b11101,
  0b11111,
  0b11100,
  0b11000,
  0b11000,
  0b11111,
  0b01110
};

void setup()
{
  // impostazione del numero di colonne e righe del display
  lcd.begin(16, 2);

  // creazione nuovi caratteri
  lcd.createChar(0, pacmanBoccaChiusa);
  lcd.createChar(1, pacmanBoccaAperta);

  // Cancella il display
  lcd.clear();

  // Stampa la stringa
  lcd.print("PCTO a.s. 20/21");
}

void loop()
{

  // Movimento verso destra del carattere
  for (int contatorePosizioneColonna = 0; contatorePosizioneColonna < 16; contatorePosizioneColonna++) {
    // Cancella il display
    lcd.clear();
    // Spostamento di una posizione verso destra del cursore
    lcd.setCursor(contatorePosizioneColonna, 0);
    if (contatorePosizioneColonna % 2 == 0) {
      // Stampa del icona: Pacman bocca chiusa
      lcd.write(byte(0));
    }
    else
    {
      // Stampa del icona: Pacman bocca aperta
      lcd.write(byte(1));
    }
    // Attesa di un'istante per percepire il movimento del carattere
    delay(velocita);
  }

  // Movimento verso sinistra del carattere
  for (int contatorePosizioneColonna = 16; contatorePosizioneColonna > 0; contatorePosizioneColonna--) {
    // Cancella il display
    lcd.clear();
    // Spostamento di una posizione verso sinistra del cursore
    lcd.setCursor(contatorePosizioneColonna, 0);
    if (contatorePosizioneColonna % 2 == 0) {
      // Stampa del icona: Pacman bocca chiusa
      lcd.write(byte(0));
    }
    else
    {
      // Stampa del icona: Pacman bocca aperta
      lcd.write(byte(1));
    }
    // Attesa di un'istante per percepire il movimento del carattere
    delay(velocita);
  }
}

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.