Pages: [1] 2   Go Down
Author Topic: display multicolor!  (Read 692 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salve a tutti ho un display multicolor, ho collegato il tutto secondo questo sito!
http://www.ladyada.net/learn/lcd/charlcd.html

il tutto funziona con quel codice, ma non riesco a farlo illuminare di un solo colore! quindi vi chiedo comandi per spegnere e accendere il display di un solo colore? vi ringrazio!
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 453
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ho visto tutto il codice comunque prova cosi:
Code:
void loop() {
    setBacklight(0, 0, 255);
    delay(5);
}

PS: praticamente la funzione  setBacklight imposta il colore della luce posteriore secondo il colore ottenuto dai tre valori che passi e che rappresentano il rosso,verde,blu
« Last Edit: March 10, 2012, 04:06:27 pm by ypkdani » Logged

0
Online Online
Faraday Member
**
Karma: 49
Posts: 6017
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

metti anche il link al tuo display
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

http://www.robot-italy.com/product_info.php?cPath=59_194&products_id=2156

ecco il display!


con questo sketch il display resta acceso solo di blu! ma ovviamente ci sono righe di codice che non servono, mi aiutate a togliere i pezzi che non servono? appena tolgo un solo pezzo mi segnala un errore!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

#include <LiquidCrystal.h>
#include <Wire.h>
 
#define REDLITE 3
#define GREENLITE 5
#define BLUELITE 6
 
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
 
// you can change the overall brightness by range 0 -> 255
int brightness = 255;
 
void setup() {
  // set up the LCD's number of rows and columns:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("RGB 16x2 Display  ");
  lcd.setCursor(0,1);
  lcd.print(" Multicolor LCD ");
 
  brightness = 100;
}
 
 
void loop() {
    setBacklight(0, 0, 255);
    delay(5);
}
 
  void setBacklight(uint8_t r, uint8_t g, uint8_t b) {

  b = map(b, 0, 255, 0, brightness);
 

  b = map(b, 0, 255, 255, 0);

  Serial.print(" B = "); Serial.println(b, DEC);

  analogWrite(BLUELITE, b);

}

 
Logged

0
Online Online
Faraday Member
**
Karma: 49
Posts: 6017
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma perche' vuoi eliminare codice ? ora che sai come far accendere un solo colore potrai in futuro sceglierne un altro.
non e' che eliminado il codice degli altri led guadagni chissa' cosa
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si ma ci sono righe di codice che non so a che  servono!  e all'esame di maturita'  dovrei saperlo spiegare!  un ultima domanda  per cancellare  la scritta e farne visualizzare un'altra?
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 453
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Praticamente vai a settare il colore impostando i colori rosso, verde, blu tramite un segnale PWM per ognuno di questi, in base alla freq di questi hai un colore in uscita
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 43
Posts: 3479
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

per cancellare  la scritta e farne visualizzare un'altra?

lcd.clear();
Logged

no comment

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho gia' provato se metto quel comando seguito o preceduto o anche senza il delay mi compare direttamente la seconda scritta e mi ignora la prima scritta!
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 453
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se leggi le reference: http://arduino.cc/en/Reference/LiquidCrystalClear vedi che c'è scritto:
Clears the LCD screen and positions the cursor in the upper-left corner.
quindi per cancellare tutte e due le righe devi spostare il cursore prima su una poi sull'altra.

http://arduino.cc/en/Reference/LiquidCrystal?from=Tutorial.LCDLibrary
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 43
Posts: 3479
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

a parte che non dici che display hai immagino un 2x16, comunque devi sepre specificare dove si trova il cursore


ciclo for i 1-16
{
lcd.setCursor(0,i);
lcd.print(" ");
}
« Last Edit: March 10, 2012, 05:13:54 pm by pablos » Logged

no comment

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho messo il link dove ho comprato il mio display, e da li puoi vedere di che display si tratta, dovevi solo rileggere meglio smiley comunque ancora non sono riuscito a cancellare il display e scrivere una seconda frase.. uff
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9877
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Clears the LCD screen and positions the cursor in the upper-left corner.
quindi per cancellare tutte e due le righe devi spostare il cursore prima su una poi sull'altra.

Ma assolutamente no, lcd.clear() cancella tutto il display indipendentemente  da dove si trova il cursore e lo riposiziona nella prima colonna della prima riga.
Infatti la libreria liquidcrystal codifica la clear() in questo modo:

Code:
void vLcd::clear()
{
  command(LCD_CLEARDISPLAY);  // clear display, set cursor position to zero
  delayMicroseconds(2000);  // this command takes a long time!
}

Ove LCD_CLEARDISPLAY è "#define LCD_CLEARDISPLAY 0x01",  ovvero il comando da inviare ad un LCD per l'erase totale come verificabile su un qualunque data sheet di display alfanumerici con controller Hitachi HD44780 compatibile.
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 138
Posts: 9877
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il tutto funziona con quel codice, ma non riesco a farlo illuminare di un solo colore! quindi vi chiedo comandi per spegnere e accendere il display di un solo colore? vi ringrazio!

Il tuo display ha tre serie di led per la retroilluminazione, una rossa, una verde, una blu, infatti ha 18 pin invece dei classici 16.
Per cambiare colore devi alimentare tutte e tre le serie di led o tramite resistenze di limitazione esterne, colore fisso, oppure tramite tre segnali pwm, e indispensabile mos come driver, da Arduino, in questo modo puoi variarne il colore a piacere.
Logged

Pages: [1] 2   Go Up
Jump to: