solo per curiosità : display

stavo cercando su google progetti per arduino e mi sono imbattuto in un sito in cui arduino viene collegato ad un display della nokia.
mi sono posto questa domanda : come si programma questo display ? si comanda pixel per pixel ? qualcuno mi puo chiarire un po il concetto ,cioe come inserire i colori in ogni pixel , magari inserendo degli esempi di sketc . il fatto di collegare un display a colori ad arduino mi affascina :astonished:

p.s potete fare una guida dettagliata o darmi dei link , in quelli che ho trovato non ho capito niente :fearful: :blush:

A quale display ti riferisci?
A colori conosco il Nokia 6100 che può lavorare con l'Arduino. Ci dovrebbe essere una libreria già pronta in circolazione...

I display dei telefonini sono sempre display grafici che vuol dire che si pilotano i singoli pixel.
La libreria a secondo della complessitá da delle funzioni per settare i singoli pixel, disegnare delle figure geometriche basilari (rette, cerchi), da stampare dei testi.

Ciao Uwe

non mi riferisco ad un display preciso , vorrei sapere in generale come funzionano . per es come si fa a ottenere icone simili ad i phone su un display . lo so ci sono le librerie ma le cose le voglio capire

michaelferrara:
non mi riferisco ad un display preciso , vorrei sapere in generale come funzionano . per es come si fa a ottenere icone simili ad i phone su un display . lo so ci sono le librerie ma le cose le voglio capire

Io ho un display con sd, metto l'immagine sulla scheda SD, e dopo la faccio visualizzare al display con una stringa su arduino, semplicissimo!
Ciao
C

ma se è un display touch come faccio a far capire ad arduino quando tocco un icona o come faccio a far visualizzare la temperatura o l orologio

michaelferrara:
ma se è un display touch come faccio a far capire ad arduino quando tocco un icona

Analogread.
Ciao
C

michaelferrara:
ma se è un display touch come faccio a far capire ad arduino quando tocco un icona

Se compri un display LCD di quelli tipo 65K di colori e risoluzioni di 240x320 o similari scordati di poterlo collegare all'Arduino e pilotarlo da lui. Esistono diversi rivenditori che vendono degli shield con già montato oltre al display tutta l'elettronica di pilotaggio e le librerie per pilotare il driver del display. Tu devi cercare uno di questi oggetti, non i display nudi e crudi.
A questo punto è tutta una questione di programmazione.

o come faccio a far visualizzare la temperatura o l orologio

La temperatura la leggi con un sensore e poi la visualizzi con le lib di cui sopra. Idem l'orologio, avrai un RTC esterno che leggi e di cui stampi l'orario sempre con le lib.

un es di programma. please

@michaelferrara
Non siamo scrittori a comando di codici...
Cmq prima devi dire che display vuoi usare, che RTC visto che cambiano le librerie, dopo ti documenti e cominci a chiederci aiuto

Non hai lo shield col display, non hai niente in mano e chiedi un programma? :wink:
E su che base uno dovrebbe realizzare questo programma? :stuck_out_tongue:

Il consiglio che posso darti è quello di cercarti lo shield che ti piace, e vedere se il produttore, insieme alle librerie fornisce degli esempi di codice, ed esaminare quelli.

michaelferrara:
non mi riferisco ad un display preciso , vorrei sapere in generale come funzionano . per es come si fa a ottenere icone simili ad i phone su un display . lo so ci sono le librerie ma le cose le voglio capire

se fai queste domande hai "grosse lacune" e forse non sai nemmeno di che cosa stai parlando

i display tipo i phone sono più cose a se stanti con la loro elettronica di pilotaggio appiccicata sul retro del display

e di solito basta dare il comando print con altri poche istruzioni per visualizzare il dato

Non parlavo del display ma delle icone

Per es questo come ha programmato Arduino http://www.sorbanello.it/Arduino/Arduino/Progetto.html

michaelferrara:
Per es questo come ha programmato Arduino?

Ho dato un occhio veloce veloce allo sketch, e sembra che carichi delle immagini da una scheda microSD

michaelferrara:
Per es questo come ha programmato Arduino http://www.sorbanello.it/Arduino/Arduino/Progetto.html

... qui Overview | 2.8" TFT Touch Shield | Adafruit Learning System il tutorial scritto da Adafruit con tutte le spiegazioni che cerchi ! :wink:

Guglielmo

michaelferrara:
Non parlavo del display ma delle icone

Le icone su un display hanno un estensione ben precisa, una posizione x1 di inizio e un x2 di fine. La stessa cosa in direzione y. Con la libreria data col display (come giá detto Ti sceglierai un display che viene venduto "per Arduino" e per il quale il rivenditori da una libreria e degli esempi) puoi leggere la posizione selezionata sul touchpannel posto davanti al display. Poi controlli se la posizione x é tra i due valori x1 e x2 e nello stesso momento y é tra y1 e y2. In quel caso hai toccato il display in corrispondenza della icona. A secondo della disposizione delle icone puoi anche aumentare l'aria di riconoscimento della pressione icona su un aria piú grande della icona stessa. Questo per esempio se ne hai solo 2 icone su tutto il display.

Ciao Uwe

i fonts a che servono , ne allego alcuni http://www.sorbanello.it/Arduino/Arduino/Sketch.html

Fonts.zip (12.1 KB)

tutti questi codici a che servono / / Questo è impressionante in formato bitmap

PROGMEM prog_uchar impressionante [] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x1C,
  0x0C, 0x0C, 0x06, 0x06, 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07,
  0x07, 0x07, 0x0E, 0x06, 0x1C, 0x1C, 0x38, 0x70, 0x70, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0x3C, 0xCE, 0x67, 0x33, 0x18, 0x08,
  0x08, 0xC8, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
  0x70, 0x38, 0x18, 0x18, 0x08, 0x08, 0x08, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x01, 0x07,
  0x0F, 0x3C, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0x00, 0x0C, 0x7F,
  0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, 0x61, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x7F, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, 0x63,
  0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF,
  0xF0, 0x00, 0x00, 0x00, 0x08, 0x08, 0xFC, 0x8C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
  0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
  0x0C, 0x0C, 0x0C, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x3C, 0x70, 0xE0, 0x80, 0x00, 0x07, 0x0C, 0x38, 0x60, 0xC0,
  0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0,
  0xF0, 0xE0, 0xC0, 0x80, 0xC0, 0x30, 0x18, 0x0F, 0x00, 0x00, 0x80, 0xC0, 0x70, 0x3C, 0x1F, 0x07,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06,
  0x0E, 0x1C, 0x18, 0x38, 0x31, 0x73, 0x62, 0x66, 0x64, 0xC7, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF,
  0xC7, 0xC7, 0xC7, 0x67, 0x63, 0x63, 0x71, 0x30, 0x38, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x01,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

li ho presi su questa discursione Arduino Forum
non riesco a trovare una guida fatta bene

La lettura della pressione del dito la fa leggendo le coordinate restituite dal display (lette tramite apposita libreria fornita dal produttore).
In pratica ha creato delle zone rettangolari in cui visualizza le immagini. Leggendo poi un tocco all'interno di quell'area, "simula" la pressione della relativa immagine.

Come fa a saperlo?
Metti che un'immagine è larga 40x40 pixel e venga posizionata a 100,100 (X,Y).
Con un doppio if controlla se il punto P con coordinate x,y corrispondenti al punto in cui l'utente ha toccato lo schermo ricade nell'intervallo (X, Y )-(X+40, Y+40).
Se ricade lì dentro, vuol dire che l'utente ha toccato lo schermo in corrispondenza dell'immagine visualizzata.

E così fa con le altre immagini.