link per lcd grafico

Salve a tutti, come scritto qualche giorno fa sto preparando un progetto con un lcd grafico ed un mcp 23017 che comunica con arduino attraverso il bus I2C. Tendenzialmente avrei anche trovato in rete uno sketch che con pochissime modifiche e aggiungendo lo sketch già fatto da me calzerebbe a pennello per quello che devo fare, il link è http://forum.arduino.cc/index.php?topic=52271.0 e lo sketch a cui mi riferisco è:

int sensorPin = A0;    // select the input pin for the potentiometer
char buf [20];

void loop () 
{
  // read the value from the sensor:
  int sensorValue = analogRead(sensorPin);   

  // draw bar
  lcd.clear (0, 16, sensorValue / 10, 23, 0xFF);  
  lcd.clear (sensorValue / 10 + 1, 16, 127, 23, 0);  
  lcd.gotoxy (0, 32);
  lcd.clear (0, 32, 127, 39);
  sprintf (buf, "Value: %i", sensorValue);
  lcd.string (buf);  
  
  delay (100);
}  // end of loop

Ora la domanda che voglio porre è, sapreste indicarmi un link dove trovare informazioni sulle varie sintassi utilizzate nello sketch? Per intenderci meglio, dove viene utilizzata la scritta ad esempio lcd.clear mi piacerebbe capire il significato dei valori immessi tra parentesi, così da essere un po' più autonomo per poter eseguire le piccole modifiche di cui parlavo. Ho cercato in "LINK UTILI" del forum e sul sito http://www.processing.org, ma non ho trovato quello che cercavo.

Grazie

Meluino

per la libreria lcd qui trovi esempi e spiegazioni delle varie funzioni http://arduino.cc/en/Reference/LiquidCrystal

per le funzioni del core arduino qui. http://arduino.cc/en/Reference/HomePage

o più in generale, se non si trovano riferimenti basta andare a leggere il file .cpp della libreria in questione

meluino: Ho cercato in "LINK UTILI" del forum e sul sito http://www.processing.org, ma non ho trovato quello che cercavo.

:astonished: Scusa ma Processing è un'altra cosa rispetto ad Arduino. L'IDE di Arduino deriva da quello di Processing. Questo è tutto quello che hanno in comune. Processing è per PC (Windows/Linux/Mac) e si programma in Java.

ricdata: per la libreria lcd qui trovi esempi e spiegazioni delle varie funzioni http://arduino.cc/en/Reference/LiquidCrystal

per le funzioni del core arduino qui. http://arduino.cc/en/Reference/HomePage

o più in generale, se non si trovano riferimenti basta andare a leggere il file .cpp della libreria in questione

GRAZIE MILLE per l'aiuto, stasera darò un'occhiata ai link che mi hai dato!!!

nid69ita:

meluino: Ho cercato in "LINK UTILI" del forum e sul sito http://www.processing.org, ma non ho trovato quello che cercavo.

:astonished: Scusa ma Processing è un'altra cosa rispetto ad Arduino. L'IDE di Arduino deriva da quello di Processing. Questo è tutto quello che hanno in comune. Processing è per PC (Windows/Linux/Mac) e si programma in Java.

:~ :~ :~

Questa cosa la ignoravo, ho iniziato a far riferimento a quel sito perché nel libro "Getting Started with Arduino" si dice che il linguaggio è modellato sul processing, immaginavo che vi fossero differenze di sorta, però sta di fatto che in passato quel sito mi è stato utile per capire certe sintassi che si utilizzano anche per arduino, sarà stata la fortuna del principiante!!!!

Tieni conto che i costrutti base (if, while, etc.) tra C e Java sono molto [u]simili/u. Per un manualetto su Arduino e C puoi cercare un pdf fatto dalla prof. Marsella Tiziana e reso pubblico. Cerca in internet "Arduino Marsella Tiziani", trovi due pdf interessanti.

nid69ita: Tieni conto che i costrutti base (if, while, etc.) tra C e Java sono molto [u]simili/u. Per un manualetto su Arduino e C puoi cercare un pdf fatto dalla prof. Marsella Tiziana e reso pubblico. Cerca in internet "Arduino Marsella Tiziani", trovi due pdf interessanti.

Cercati, trovati e scaricati, grazie della dritta!! ;)

Premetto che ancora non ho visionato il file .ccp, ma ho guardato i link che mi sono stai inviati, consultando la funzione lcd.clear sono rimasto un po' disorientato!! L'aiuto che trovo è "pulisce lo schermo e posiziona il cursore in alto a sinistra", ma allora nello sketch che ho postato, tutti quei valori tra parentesi che significato hanno??? Possibile che non vi siano spiegazioni nemmeno sule Reference ufficiali di arduino? Scusate l'insistenza ma vorrei proprio capire.

Meluino

la mancanza dell'inclusione della libreria nello sketch che hai postato mi ha tratto in inganno. pensavo si trattasse della libreria standard per LCD. in effetti si tratta di un 'altra libreria sviluppata da gammon per gli LCD grafici e non testuali.

comunque, se segui il link postato dallo stesso gammon nel primo post ti porta al suo sito dove spiega tutto dettagliatamente. la libreria che usa è I2C_graphical_LCD_display

la funzione clear() è questa:

// clear rectangle x1,y1,x2,y2 (inclusive) to val (eg. 0x00 for black, 0xFF for white) // default is entire screen to black // rectangle is forced to nearest (lower) 8 pixels vertically // this if faster than lcd_fill_rect because it doesn't read from the display

// Approx time to run: 120 ms on Arduino Uno for 20 x 50 pixel rectangle void I2C_graphical_LCD_display::clear (const byte x1, // start pixel const byte y1, const byte x2, // end pixel const byte y2, const byte val) // what to fill with

Grazie "ricdata" per gli aiuti e per l'interessamento . In effetti forse ieri sono stati un po' troppo precipitoso a postare i miei dubbi, se come avevi detto tu nel tuo post avessi fatto riferimento al file .ccp avrei trovato le risposte che cercavo, o almeno in parte. Infatti all'interno del file c'è un punto in cui viene spiegato la funzione "clear" e cosa stanno a significare i numeri all'interno delle parentesi, non sono un softwerista, ma qualcosina ho recepito ed infatti sono riuscito a fare le modifiche che volevo fare. Detto questo quindi i vari comandi possono essere differenti da quelli standard, ovvero se uno ha le capacità di creare o di modificare le librerie si possono trovare funzioni con sintassi differenti, giusto? Il che rende sempre più complicato capire gli sketch =( .

Meluino

certo, ogni funzione ha la sue caratteristiche, in base al lavoro che deve fare. il clear() di LiquidCrystal ad esempio cancella completamento lo schermo, per cui non è richiesto alcun parametro. il clear() del''altra lib invece calcella un rettalgolo di pixel, per cui gli va detto (attraverso i parametri tra parentesi) quali sono i pixel da cancellare.

Seeeeeeembra facile!!

Per il momento cerco di cavare qualche cosa dal buco e creare lo scheletro generale dello sketch, quando sarò in una condizione più avanzata mi farebbe piacere creare un topic con l’argomento del mio progetto, al di là del funzionamento vorrei verificare se quello che ho fatto è corretto, dal punto di vista logico, della struttura, etc.
Inoltre sicuramente qualche utente esperto mi può magari dare dritte per strutturare meglio il tutto, oltre magari ad essere un argomento che può interessare a qualcuno.
Ah già dimenticavo, si tratta di un circuito per testare valvole proporzionali comandate dalla variazione di duty cycle.

Meluino

....sembra facile , ma non è difficile ;) basta prenderci un pò la mano.

attendiamo il tuo progetto. buon lavoro

consiglio di fare prima esperienza con un normale display a caratteri, usando la libreria standard, e poi passare ad uno grafico

Testato: consiglio di fare prima esperienza con un normale display a caratteri, usando la libreria standard, e poi passare ad uno grafico

Sì il consiglio è decisamente azzeccato, anche perché il display a caratteri lo utilizzo già da un po' e non dico di saperlo usare alla perfezione, ma sicuramente meglio di quello grafico. Tendenzialmente io sarei stato portato ad usare quel dispositivo, anche perché quello grafico per l'idea che ho in mente è decisamente sprecato. Il "problema" se vogliamo usare questo termine è dato dal fatto che questo circuito lo sto realizzando (anche se in modo comunque libero) in ambito lavorativo, il mio capo è stato categorico, vuole vedere qualcosa utilizzando un display LCD grafico!!! Chi comanda è lui....... ;)

Ubi maior, minor cessat :)

Testato: Ubi maior, minor cessat :)

Esattamente :D Inoltre proprio per non passare per dei folli che vogliono prodigarsi in avventure al di fuori della loro portata, devo dire che ho omesso la storia della nascita di questo dispositivo, oltre a ritenerla OT è anche troppo prolissa. Ma come riassunto posso dirti che nasce tutto dalla rivalità che c'è tra officina elettrica (dove lavoro io) ed officina meccanica (dall'altra parte della parete) e c'è nell'intenzione del mio capo ed anche mia la volontà di mettere sul banco un apparecchio al di fuori dello standard. Certo detto questo non è che passiamo comunque per persone normali, ma le cose che non si vivono non si capiscono bene fino in fondo.