Peppe_H
Posts: 26
Joined: Thu Sep 04, 2014 1:21 pm

aiuto per display lcd 16x2

Wed Oct 08, 2014 12:58 pm

salve,
volevo proseguire con i miei esperimenti collegando al raspberry un display lcd 16x2 per far stampare i dati provenienti dal sensore DHT 11 ma mi accontento anche solo di vederlo funzionare con altro.
ho seguito questa guida http://ozzmaker.com/2013/10/04/interfac ... rce=feedly con i collegamenti indicati ma al momento di scrivere il codice mi blocco!!!! ho eseguito l'installazione da terminal....e poi???il display non si illumina neanche mi sembra scollegato!
sapreste aiutarmi????
grazie

Peppe_H
Posts: 26
Joined: Thu Sep 04, 2014 1:21 pm

Re: aiuto per display lcd 16x2

Wed Oct 08, 2014 1:21 pm

ok ripassando i collegamenti sono riuscito a far accendere il display.... ora vorrei una mano per scrivere il codice che mi consenta di visualizzare "qualcosa" oppure meglio i dati provenienti dal sensore DHT11 (già collegato e funzionante)

Peppe_H
Posts: 26
Joined: Thu Sep 04, 2014 1:21 pm

Re: aiuto per display lcd 16x2

Wed Oct 08, 2014 2:54 pm

seguendo la guida di questo link https://github.com/dbrgn/RPLCD

Writing To Display
Basic text output with multiline control.

>>> from RPLCD import CharLCD
>>> lcd = CharLCD()
>>> lcd.write_string(u'Raspberry Pi HD44780')
>>> lcd.cursor_pos = (2, 0)
>>> lcd.write_string(u'http://github.com/\n\rdbrgn/RPLCD')

ma ecco cosa mi restituisce:

pi@raspberrypi ~ $ python
Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from RPLCD import CharLCD
>>> lcd = CharLCD()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/RPLCD/lcd.py", line 191, in __init__
GPIO.setup(pin, GPIO.OUT)
RuntimeError: No access to /dev/mem. Try running as root!
>>>

quale può essere l'errore???grazie mille a chi risponde!

Fabiux
Posts: 31
Joined: Wed Mar 27, 2013 5:49 am

Re: aiuto per display lcd 16x2

Mon Oct 13, 2014 11:00 am

ma lanci i comandi direttamente dal terminale python????

non puoi salvare lo script in un file tipo lcd.py e poi lanciare lo script con il comando python lcd.py?


cmq... a parte questo, non conosco il python. Io ho fatto funzionare l'lcd 16x2 con la libreria wiringPi (www.wiringpi.com), che è una libreria C. Ci sta già pronto l'esempio!

Ciao
Fabio

Peppe_H
Posts: 26
Joined: Thu Sep 04, 2014 1:21 pm

Re: aiuto per display lcd 16x2

Tue Oct 14, 2014 8:17 am

Grazie x la risposta intanto...compilo in python xke mi restituisce in tempo reale il risultato e in questo caso l errore.se facessi il file .py dopo nell esecuzione mi darebbe lo stesso messaggio..cmq tu che hai già fatto qualcosa von il display riusciresti ad indicarmi i passaggi con wiringpi? Ho dato un occhiata ma a parte il download nn ho capito gran che. ...grazie

Fabiux
Posts: 31
Joined: Wed Mar 27, 2013 5:49 am

Re: aiuto per display lcd 16x2

Tue Oct 14, 2014 9:43 am

hai dato un'occhiata a questa pagina?

http://wiringpi.com/dev-lib/lcd-library/

c'è scritto praticamente tutto. inoltre dentro alla libreria c'è un file di esempio che puoi usare come modello.

Peppe_H
Posts: 26
Joined: Thu Sep 04, 2014 1:21 pm

Re: aiuto per display lcd 16x2

Wed Oct 15, 2014 2:24 pm

scusami... sembrerò imbranato ma mi sono perso....non so che comando eseguire e come.... ho cablato il display seguendo entrambi i metodi 4bit e 8bit. ho un display 16x2 blu.
mi indicheresti i passi da effettuare per scrivere sul display??? al momento vedo solo dei quadratini grigi con sfondo blu che si regolano agendo sul potenziometro. -.- :? :? :?

Fabiux
Posts: 31
Joined: Wed Mar 27, 2013 5:49 am

Re: aiuto per display lcd 16x2

Wed Oct 15, 2014 3:08 pm

hai scaricato e installato la libreria wiringPi?

una volta installata e configurata, nella cartella "examples" c'è un file che si chiama "lcd.c"

prova a compilarlo con il comando

Code: Select all

gcc lcd.c -o lcd -lwiringPi -lwiringPiDev
se la compilazione va a buon fine, lancia l'eseguibile con il comando ./lcd e ti dovrebbe comparire qualcosa sullo schermo.

se tutto va bene, puoi prendere come esempio il file lcd.c e lavorarci sopra per far vedere sul display quello che vuoi.

ciao
Fabio

Peppe_H
Posts: 26
Joined: Thu Sep 04, 2014 1:21 pm

Re: aiuto per display lcd 16x2

Wed Oct 15, 2014 3:47 pm

grazie infinite fabio per la pazienza....credo te ne serva altra però se vuoi aiutarmi. scrivo qui perché magari può essere di aiuto a qualche altro neofita come me!

allora ricapitolando....ho installato la libreria wiringpi http://wiringpi.com/download-and-install/ ho anche effettuato il test di verifica e sembra sia tutto ok!

ora per procedere all'utilizzo del display come dici tu devo procurarmi il file lcd.c (tra l'altro non ho capito di che file si tratta) allora vado a questo link http://wiringpi.com/examples/adafruit-r ... -wiringpi/ ma oltre a non trovare la cartella dove scaricare il file lcd.c vedo che si riferisce al display adafruit con modulo i2c....io sto utilizzando il semplice display 16x2 hd44780.

:?: :?: :?: :?: :?:

Fabiux
Posts: 31
Joined: Wed Mar 27, 2013 5:49 am

Re: aiuto per display lcd 16x2

Sun Oct 19, 2014 8:05 am

dopo aver installato la libreria dovresti avere da qualche parte sul raspberry la libreria scompattata in cui è presente la cartella examples e dentro un file che si chiama lcd.c...

in ogni caso, per tagliare la testa al toro, ti riporto qui il codice che devi compilare:

Code: Select all

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#include <unistd.h>
#include <string.h>
#include <time.h>

#include <wiringPi.h>
#include <lcd.h>

#define LCD_ROW				2
#define LCD_COL				16
#define LCD_BIT				4

#define LCD_RS				x    //PIN raspberry a cui hai collegato il PIN RS del display
#define LCD_E				x    //PIN raspberry a cui hai collegato il PIN E del display
#define LCD_D4				x    //PIN raspberry a cui hai collegato il PIN D4 del display (configurazione 4 bit)
#define LCD_D5				x
#define LCD_D6				x
#define LCD_D7				x

int lcdHandle;

int main (int argc, char** argv){

	/* Inizializzazione del display LCD */
	lcdHandle = lcdInit(LCD_ROW, LCD_COL, LCD_BIT, LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7, 0, 0, 0, 0);
		
	/* Output sul display*/
	lcdPosition(lcdHandle, 0, 0); lcdPuts(lcdHandle, "Raspberry");
	lcdPosition(lcdHandle, 0, 1); lcdPuts(lcdHandle, "PI");
	
        exit 0;
}

Questo codice ti dovrebbe permettere (al momento non ho modo di provarlo) di scrivere Raspberry e PI sulle due righe del display.

Brevemente, all'inizio definisci un po' di costanti che descrivono come hai collegato il display al raspberry (ricordati di sostituire le X secondo lo schema di connessione che hai utilizzato (per il numero dei pin del rasp devi usare la numerazione che trovi qui: http://wiringpi.com/pins/special-pin-functions/).

poi parte la funzione main, che è obbligatoria nel codice c. Per prima cosa crei un handle per poter usare il display attraverso la funzione lcdInit. Una volta inizializzato puoi iniziare a scrivere posizionando il cursore con il comando lcdPosition e poi scrivendo con il comando lcdPuts.

Fammi sapere se l'esempio funziona, non avendo modo di provarlo potrei essermi dimenticato qualcosa.

ciao
Fabio

Peppe_H
Posts: 26
Joined: Thu Sep 04, 2014 1:21 pm

Re: aiuto per display lcd 16x2

Tue Dec 02, 2014 6:17 pm

Fabiux wrote:hai scaricato e installato la libreria wiringPi?

una volta installata e configurata, nella cartella "examples" c'è un file che si chiama "lcd.c"

prova a compilarlo con il comando

Code: Select all

gcc lcd.c -o lcd -lwiringPi -lwiringPiDev
se la compilazione va a buon fine, lancia l'eseguibile con il comando ./lcd e ti dovrebbe comparire qualcosa sullo schermo.

se tutto va bene, puoi prendere come esempio il file lcd.c e lavorarci sopra per far vedere sul display quello che vuoi.

ciao
Fabio
bene... ho esaminato questa tua risposta ed ho trovato il file in questione...
pi@raspberrypi ~ $ gcc lcd.c -o lcd -lwiringPi -lwiringPiDev
pi@raspberrypi ~ $ ./lcd
Usage: ./lcd bits cols rows
pi@raspberrypi ~ $

cosa devo fare?

Peppe_H
Posts: 26
Joined: Thu Sep 04, 2014 1:21 pm

Re: aiuto per display lcd 16x2

Tue Dec 02, 2014 7:02 pm

scusami... ho ripreso l'argomento dopo un po di tempo....se hai voglia di aiutarmi riepilogo la situazione:
ho capito che esistono 2 tipi di display uno a 4 bit diciamo bianco e nero e un altro a 8 bit a colori giusto? è questa la differenza tra i due?
io penso di avere quello a 4 bit 16x2 come nella foto in questo link:
http://i0.wp.com/ozzmaker.com/wp-conten ... /OLED3.jpg
ho creato questi collegamenti come da foto ma il display non si illumina neanche!!! se invece collego l'alimentazione ai pin del display n* 16 e 15 almeno così il display si accende! allora volevo partire proprio dalla configurazione hardware per capire dopo come programmare! secondo te come dovrei collegare il display al raspberry? il link che ho citato è un buon riferimento?
grazie ancora...

Fabiux
Posts: 31
Joined: Wed Mar 27, 2013 5:49 am

Re: aiuto per display lcd 16x2

Wed Dec 03, 2014 1:23 pm

ciao,
se il display è un 16x2 con chip hd44780u (lo dovresti vedere scritto dietro da qualche parte), segui le istruzioni che trovi a questa pagina: http://wiringpi.com/dev-lib/lcd-library/

Ti spiega anche la differenza tra 4 e 8 bit.

Ciao
Fabio

Peppe_H
Posts: 26
Joined: Thu Sep 04, 2014 1:21 pm

Re: aiuto per display lcd 16x2

Wed Dec 03, 2014 6:00 pm

ottimo!!! sono riuscito a capire come cablare il display ed ho stampato finalmente sopra qualcosa!!!
dopo aver dato questo comando gcc lcd.c -o lcd -lwiringPi -lwiringPiDev eseguo sudo ./lcd e il display mi restituisce il testo.
mi sapresti spiegare cosa vogliono significare questi comandi?
mi diresti come procedere se volessi stampare ad esempio i dati provenienti dal sensore dht11.??

questo è il contenuto del file lcd.c il display stampa ciò che è scritto alla voce "lcdputs"
#include <wiringPi.h> //WiringPi headers
#include <lcd.h> //LCD headers from WiringPi
#include <stdio.h> //Needed for the printf function below

//Pin numbers below are the WiringPi pin numbers

#define LCD_RS 3 //Register select pin
#define LCD_E 0 //Enable Pin
#define LCD_D4 6 //Data pin 4
#define LCD_D5 1 //Data pin 5
#define LCD_D6 5 //Data pin 6
#define LCD_D7 4 //Data pin 7

int main()
{
int lcd; //Handle for LCD
wiringPiSetup(); //Initialise WiringPi

//Initialise LCD(int rows, int cols, int bits, int rs, int enable, int d0, int d1, int d2, int d3, int d4, int d5, int d6, int d7)
if (lcd = lcdInit (2, 16,4, LCD_RS, LCD_E ,LCD_D4 , LCD_D5, LCD_D6,LCD_D7,0,0,0,0)){
printf ("lcdInit failed! \n");
return -1 ;
}

lcdPosition(lcd,0,0); //Position cursor on the first line in the first column
lcdPuts(lcd, "ciao"); //Print the text on the LCD at the current cursor postion
getchar(); //Wait for key press
lcdClear(lcd); //Clear the display
}

Fabiux
Posts: 31
Joined: Wed Mar 27, 2013 5:49 am

Re: aiuto per display lcd 16x2

Thu Dec 04, 2014 3:55 pm

devi semplicemente fare un ciclo infinito in cui pre prima cosa pulisci lo schermo (lcdClear), acquisisci il valore dal sensore (non ho idea di come si usi il dht11) e poi lo scriva sul display con lcdputs. alla fine del ciclo mette un ritardo con una sleep di un secondo, almeno il processo non va ad occupare il 100% della cpu.

per quanto riguarda le varie funzioni della libreria, la spiegazione la trovi sulla pagina che ti ho linkato.

ciao
Fabio

Return to “Italiano”