Go Down

Topic: Info lcd Ks0108 (Read 11730 times) previous topic - next topic

tonid

#150
Jan 23, 2013, 11:51 pm Last Edit: Jan 23, 2013, 11:53 pm by tonid Reason: 1
Allora...partendo dal presupposto che a programmi non sono bravo,mi sembra di aver trovato una possibile strada...
Partendo dallo scketch di esempio della libreria
Code: [Select]
#include <Wire.h>
#include <SPI.h>
#include <I2C_graphical_LCD_display.h>

I2C_graphical_LCD_display lcd;

// example bitmap
byte picture [] PROGMEM = {
0x1C, 0x22, 0x49, 0xA1, 0xA1, 0x49, 0x22, 0x1C,  // face  
0x10, 0x08, 0x04, 0x62, 0x62, 0x04, 0x08, 0x10,  // star destroyer
0x4C, 0x52, 0x4C, 0x40, 0x5F, 0x44, 0x4A, 0x51,  // OK logo
};


void setup ()
{
 lcd.begin ();  

 // draw all available letters
 for (int i = ' '; i <= 0x7f; i++)
   lcd.letter (i);

 // black box  
 lcd.clear (6, 40, 30, 63, 0xFF);

 // draw text in inverse
 lcd.gotoxy (40, 40);
 lcd.string ("Nick Gammon.", true);

 // bit blit in a picture
 lcd.gotoxy (40, 56);
 lcd.blit (picture, sizeof picture);
 
 // draw a framed rectangle
 lcd.frameRect (40, 49, 60, 53, 1, 1);

 // draw a white diagonal line
 lcd.line (6, 40, 30, 63, 0);
}  // end of setup

void loop ()
{}  // nothing to see here, move along


aggiungo nel setup()
Code: [Select]

 Wire.requestFrom(0x20,1);
 byte a=Wire.read();     //memorizzo il byte in a
 Wire.beginTransmission (0x20);  // indirizzo del port expander
 Wire.write (0x12);   // scrivo nel registro 0x12 degli I/O port "A"
 Wire.write (a|0x01);   // faccio un or di ciò che riceve con l'accensione della retro che corrisponde al bit0 del port "A"
 Wire.endTransmission ();


Così si accende la retroilluminazione ma non credo sia una soluzione......Qualche idea?

Michele Menniti

Diciamo che si avrebbe bisogno di un comando per poter gestire a piacimento un valore pwm, in modo da poter gestire non solo l'accensione e lo spegnimento ma anche l'intensita luminosa; purtroppo io non sono in grado, aspettiamo un programmatore :smiley-sweat:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

tonid

Quote
Diciamo che si avrebbe bisogno di un comando per poter gestire a piacimento un valore pwm, in modo da poter gestire non solo l'accensione e lo spegnimento ma anche l'intensita luminosa; purtroppo io non sono in grado, aspettiamo un programmatore

E siamo in due  =(

tonid

Pensando al pwm,non possiamo gestirlo direttamente in I2C con il port expander.
Però si potrebbe,sfruttando tutti e due i pin rimasti liberi al 23017, usare un ATtiny x5 che controlla lo stato dei pin del 23017 ed in funzione di quelli fargli generare 4 valori diversi di pwm.

Michele Menniti

ma no, così ci incasiniamo inutilmente, allora va benissimo il solo riuscire ad accendere o spegnere il display.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

superzaffo

@Tonid: In effetti quella è anche un po' come lavora la libreria... infatti sto lavorando su di essa per poter inserire due comandi _on e _off.
Oggi vedo di iniziare a fare qualche prova su un led, dopo che ho saldato i componenti smd sul display.

Non penso che l' expander possa gestire nei pin il pwm (sarebbe bello).
Oppure si prende un altro pin dall' arduino per gestire in pwm i led della retroilluminazione... (ho detto un cavolata ? )  :smiley-eek:

tonid

Quote
Oppure si prende un altro pin dall' arduino per gestire in pwm i led della retroilluminazione...

No.non è una cavolata ma una possibile soluzione.....
Io pensavo ad un ATtinyx5(25,45,85) pechè si può usare per generare un pwm con la funzione analogWrite() facendogli semplicemente controllare i due pin rimasti liberi sul MCP23017 che sono i bit0 e bit1 del port A....Aggiungi si un chip da 1 euro ma mantieni solo il bus I2C senza usare altri pin del 328.
Però si può vedere dopo questa cosa, inizierei aggiungendo il controllo della retro via sw e poi in un secondo momento,visto che ho dei ATiny85 ,proverò a vedere se torna utile un pwm sulla retro.........
Si potrebbe anche creare un pwm in base al valore letto da un sensore di luminosità e fare in modo che la retro si comporti di conseguenza.
Comunque sono idee che si possono vedere dopo :)

Appena hai novità fammi un colpo ;)

PaoloP


Non penso che l' expander possa gestire nei pin il pwm (sarebbe bello).


Ho letto il datasheet dell'expander e non c'è la gestione del PWM.  :smiley-sweat:

Michele Menniti

suggerisco di non incasinarci vita e PCB con questa cosa della retroilluminazione. Al più possiamo integrare due diverse possibilità, ma senza altro hardware:
1 - tramite I2C gestiamo ON/OFF, pilotando un NPN con luminosità stabilita in modo fisso dalla R di limitazione sul collettore.
2 - oltre a 5V-GND e i due pin I2C, prevediamo un pin (switchabile col solito jumper, in modo da decidere con cosa pilotare l'NPN) che vada direttamente ad Arduino, e quindi ad un pin pwm qualsiasi, pilotandolo poi via software.

Se cominciamo a mettere LDR e addirittura un micro scadiamo pesantemente nel tamarro, poi fate come volete, ma io mi dissocio da questa cosa..... nel tutorial la aggiungerò come "Appendice T(amarra)" descrivendola in modo molto colorito, quindi vedete di non provocarmi ]:D
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

superzaffo

Ah AH ah... Michele... mi piace l' appendice "Tamarra"  :D
Allora.. io ho saldato i componenti al pcb, tutto bene a parte che il contrasto è basso rispetto a come pilotavo dall'esterno.
Io ho un trimmer da 500ohm...
Inoltre mi rimangono ancora quelle righe... ma io, a differenza di tonid, sono su breadboard.

tonid

Quote
Io ho un trimmer da 500ohm..

Mettigli un valore più alto,almeno 5K,meglio 10K......con 500ohm lasci scorrere troppa corrente e abbassi di conseguenza il livello di tensione negativa generata dal 7660.

@Michele
Sono solo idee,realizzabili ,ma idee  :)

Michele Menniti

Chiarisco la questione trimmer: come detto il circuito eroga circa 4V, praticamente siamo al limite della gestione del contrasto, infatti bisognerebbe studiare il ds del 76600 per vedere se si riesce ad alzare il livello di tensione, sicuramente ho notato che i due condensatori polarizzati più sono alti di valore e meglio fanno; succede che il trimmer da 10k lavora praticamente al limite, mentre quello da 1k si comporta meglio e l'assorbimento non è comunque significativo per l'IC. MA 500 ohm sono davvero pochi.

Riguardo le idee niente da dire, le idee sono idee, ma ci sono idee ed idee, ed ognuno ha le proprie idee :smiley-mr-green:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

superzaffo

#162
Jan 24, 2013, 03:54 pm Last Edit: Jan 24, 2013, 05:09 pm by superzaffo Reason: 1
Allora, cambiato il trimmer con uno da 1k e i condensatori con valori 4.7mF.
Edit: Scusate.. non da 4.7 ma da 47.. errore di battitura.

Effetivamente va molto meglio.. ma continuo avere quelle righe strane che tonid non ha...
Appena ci passa il file eagle, provo anche io con il pcb.

Michele Menniti

ma hai usato due condensatori da 47µF?? mi sembrano un tantino esagerati, considerando che sui display il massimo valore visto finora è 10µF, comunque se non ti danno noie....
Quanto misuri sul pin V- del display ora?
Non sono per niente convinto che queste strisce dipendano dalla breadboard, semmai da un errore, a quest'ora dopo tanto tempo e tane prove, a forza di muovere tutto qualcosa sarebbe cambiato ogni tanto.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

tonid

Ho guardato attentamente il mio display e c'è un piccolo errore sul numero 5,ho controllato nei font ma li è giusto....
Ho provato poi a stampare quà e là delle stringhe di testo e l'errore non si presenta.
@sz
prova anche tu a fare una cosa del genere e vedi se le righe ti spariscono.

Go Up