Denmark (Europe)
Offline
Full Member
Karma: 0
Posts: 198
Electronics Designer & Consultant
|
 |
« Reply #75 on: September 18, 2009, 04:20:54 pm » |
I'm not sure, so I won't recommend it! http://www.spakfun.com/commerce/product_info.php?products_id=569LED Backlight - 7V @ 40-50mA (very bright)
|
|
|
|
« Last Edit: September 18, 2009, 04:21:53 pm by tkj »
|
Logged
|
Need any help with your electronics projects?TKJ Electronics, a consultancy company located in Denmark (Europe), has the required expertice, knowlegde and development tools, to do the development for you. Do not hesitate contacting us by visiting our website: http://www.tkjelectronics.dk
|
|
|
|
Spokane, Washington
Offline
God Member
Karma: 0
Posts: 686
My name is Bob, and I'm an addict.
|
 |
« Reply #76 on: September 18, 2009, 11:06:27 pm » |
Definately don't want to put 9v to the board directly. The board should have DC to DC converter to raise 5 volts to the 7v required to run the backlight. (I believe it'll work with 3.3 volts as well)
But any higher than that you're risking it. You can use a voltage divider to bring it down to 5v if you NEED to use the 9v. (Keep in mind, 9v batteries don't have very much power.. you'll have a dead battery fairly quick, especially with an LCD connected, you'd be better off to use multiple AA batteries, or another supply:D)
Well.. I've been using the LCD for a base station for my RF kits, just to use it for debugging. I went through the whole PDF that explains how to interface it in like, 140 pages.. I tried to steal the Circle code from the example, but it's not working as expected. When I try draw the circle, it just draws a line at the top of the LCD, *shrug*.
Also on the LCD controller, it shows that there is some EEPROM you can use, how exciting. But anyways, best of luck!
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 3
Arduino rocks
|
 |
« Reply #77 on: September 21, 2009, 11:03:07 pm » |
Thanks for the tips! I used a 7805l and powered the screen and arduino fine for a while until the 9v ran out. I made some optimizations and posted the updated code here: http://www.beigerecords.com/joe/?p=378Has anyone gotten this thing into 8-bit color mode with the sparkfun breakout board? I tried a handful of things in setup and have only seen 12-bit mode.
|
|
|
|
« Last Edit: September 21, 2009, 11:06:14 pm by jbeuckm »
|
Logged
|
|
|
|
|
Denmark (Europe)
Offline
Full Member
Karma: 0
Posts: 198
Electronics Designer & Consultant
|
 |
« Reply #78 on: October 11, 2009, 12:30:43 pm » |
Hi again. Now I found my Nokia LCD one more time, connected it, and tried the code again, but I'm still experiencing the same problems as blip (look at his image) Does anyone know how to fix that, or at least why it is happening?
|
|
|
|
|
Logged
|
Need any help with your electronics projects?TKJ Electronics, a consultancy company located in Denmark (Europe), has the required expertice, knowlegde and development tools, to do the development for you. Do not hesitate contacting us by visiting our website: http://www.tkjelectronics.dk
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 9
Arduino rocks
|
 |
« Reply #79 on: October 18, 2009, 09:03:39 am » |
If it weighed more and wasn't wired to my computer I would have thrown it across the room. Loaded up cougar's mandelbrott demo and got the blue screen of nothingness. Loaded up the gravitech code with phokur's changes and got a sorta kinda good result. There seem to be bleeding pixels in the middle of the blocks. with the code below, trying to us the 16bit color interface, I get something more than nothing, but less useful. With a line in the middle that I don't understand at all. /* Nokia 6100 LCD interface rev - = basically copy of Gravitech LCD6610 (epson) program
*/
const byte DISON = 0xaf; //Display On, 0 byte const byte DISOFF = 0xae; //Display Off, 0 byte const byte DISNOR = 0xa6; //Normal Display, 0 byte const byte DISINV = 0xa7; //Inverse Display, 0 byte const byte COMSCN = 0xbb; //Common Scan Direction, 1 byte const byte DISCTL = 0xca; //Display control, 3 bytes const byte SLPIN = 0x95; //Sleep in, 0 bytes const byte SLPOUT = 0x94; //Sleep Out, 0 bytes const byte PASET = 0x75; //Page Address Set, 2 bytes const byte CASET = 0x15; //Column Address Set, 2 bytes const byte DATCTL = 0xbc; //Data Scan Direction, 3 bytes const byte RGBSET8 = 0xce; // 256 color position set, 20 bytes const byte RAMWR = 0x5c; //Writing to memory, Data const byte RAMRD = 0x5d; //Reading from memory, Data const byte PTLIN = 0xa8; //Partial Display in, 2 Bytes const byte PTLOUT = 0xa9; //Paritial Display out, 0 byte const byte RMWIN = 0xe0; //Read and modify Write, 0 bytes const byte RMWOUT = 0xee; //End (?), 0 bytes const byte ASCSET = 0xaa; //Area scroll set, 4 bytes const byte SCSTART = 0xab; //Scroll start set, 1 byte const byte OSCON = 0xd1; //Interfnal Osciallation On. 0 byte const byte OSCOFF = 0xd2; //Internal Osciallation Off, 0 byte const byte PWRCTR = 0x20; //Power Control, 1 byte const byte VOLCTR = 0x81; //Electronic volume control, 2 bytes const byte VOLUP = 0xd6; //Inscrement electronic volume control by 1, 0 byte const byte VOLDOWN = 0xd7; //Decrement electronic volume control by 1, 0 byte const byte TMPGRD = 0x82; //Temperature gradient set, 14 bytes const byte EPCTIN = 0xcd; //Control EEPROM, 1 byte const byte EPCOUT = 0xcc; //Cancel EEPROM Control, 0 byte const byte EPMWR = 0xfc; //Write into EEPROM, 0 byte const byte EPMRD = 0xfd; //Read from EEPROM, 0 byte const byte EPSRRD1 = 0x7c; //Read Register 1, 0 byte const byte EPSRRD2 = 0x7d; //REad Register 2, 0 byte const byte NOP = 0x25; //No Operation
//Arduino pins for control of LCD, using all PORTD pins for now int LCDCS = 3; int LCDSCK = 4; int LCDDIO = 5; int LCDRST = 6;
const byte pmin = 2; const byte pmax = 131; const byte cmin = 0; const byte cmax = 129;
boolean d = true; int j=1;
#define cbi(reg, bit) (reg&=~(1<<bit)) #define sbi(reg, bit) (reg|= (1<<bit))
#define setCS cbi(PORTD,LCDCS); //Chip select on #define clearCS sbi(PORTD,LCDCS); //Chip select off #define clearSCK cbi(PORTD,LCDSCK); //Clock low #define setSCK sbi(PORTD,LCDSCK); //clock high #define clearDIO cbi(PORTD,LCDDIO); //data low #define setDIO sbi(PORTD,LCDDIO); //data high #define setReset cbi(PORTD,LCDRST); //enable reset #define clearReset sbi(PORTD,LCDRST); //disable reset
//#define BL0 cbi(PORTD,BL); //#define BL1 sbi(PORTD,BL);
void lcdData(byte _b){ setSCK clearCS setCS clearSCK setDIO setSCK writeToLCD(_b); } void lcdCmd(byte _b){ setSCK clearCS setCS clearSCK clearDIO setSCK writeToLCD(_b); } void writeToLCD(byte _b){
clearSCK if((_b&B10000000)!=0){setDIO} else {clearDIO} setSCK clearSCK if((_b&B01000000)!=0){setDIO} else {clearDIO} setSCK clearSCK if((_b&B00100000)!=0){setDIO} else {clearDIO} setSCK clearSCK if((_b&B00010000)!=0){setDIO} else {clearDIO} setSCK clearSCK if((_b&B00001000)!=0){setDIO} else {clearDIO} setSCK clearSCK if((_b&B00000100)!=0){setDIO} else {clearDIO} setSCK clearSCK if((_b&B00000010)!=0){setDIO} else {clearDIO} setSCK clearSCK if((_b&B00000001)!=0){setDIO} else {clearDIO} setSCK clearCS } void setBox(byte c1,byte c2,byte p1,byte p2){ lcdCmd(CASET); lcdData(c1); lcdData(c2); lcdCmd(PASET); lcdData(p1); lcdData(p2); }
void fillBox(byte color, byte c1, byte c2, byte p1, byte p2) { uint16_t total_bytes1; uint16_t total_bytes2; uint16_t total_bytes;
setBox(c1, c2, p1, p2);
lcdCmd(RAMWR); total_bytes1 = (c2 - c1 + 1); total_bytes2 = (p2 - p1 + 1); total_bytes = total_bytes1 * total_bytes2; for (unsigned int i = 0; i < total_bytes; i++){ lcdData(color); lcdData(color); } }
void fillScreen(byte color){ fillBox(color,cmin, cmax,pmin,pmax); }
//LCD Initialize------------------------------------ void lcdInit(){ setReset delay(10); clearReset clearCS setDIO setSCK lcdCmd(DISCTL); //Display Control --------------------------------- lcdData(0x0A); //CL dividing ratio lcdData(0x20); //130 line display lcdData(0x11); //no inversely highlighted lines lcdData(0x01); //dispersion lcdCmd(COMSCN); //Com Scan ---------------------------------------- lcdData(0x01); lcdCmd(OSCON); //Oscillator On ----------------------------------- lcdCmd(SLPOUT); //Sleep Out --------------------------------------- lcdCmd(VOLCTR); //Voltage Control---------------------------------- lcdData(0x20); lcdData(3); //Temperature Gradient // lcdCmd(TMPGRD); // lcdData(0); // lcdData(0); // lcdData(0); // lcdData(0); // lcdData(0); // lcdData(0); // lcdData(0); // lcdData(0); // lcdData(0); // lcdData(0); // lcdData(0); // lcdData(0); // lcdData(0); // lcdData(0); //Power Control ----------------------------------- lcdCmd(PWRCTR); lcdData(0x0f); delay(100); //Invert Display----------------------------------- lcdCmd(DISINV); //Clear Partial disply data------------------------ lcdCmd(PTLOUT); //Autoscroll clearing (I hope) lcdCmd(ASCSET); lcdData(00); lcdData(32); lcdData(32); lcdData(3); //Data Scan Direction------------------------------ lcdCmd(DATCTL); lcdData(0x00); lcdData(0x00); lcdData(0x04); //1 = 8 bit, 2 = 12 bit, 3=12 of 16 bit lcdData(0); //RGB Mapping-------------------------------------- // lcdCmd(RGBSET8); // lcdData(0x00); // lcdData(0x02); // lcdData(0x04); // lcdData(0x06); // lcdData(0x08); // lcdData(0x0A); // lcdData(0x0C); // lcdData(0x0F); // lcdData(0x00); // 000 GREEN // lcdData(0x02); // 001 // lcdData(0x04); // 010 // lcdData(0x06); // 011 // lcdData(0x08); // 100 // lcdData(0x0a); // 101 // lcdData(0x0c); // 110 // lcdData(0x0f); // 111 // lcdData(0x00); // 00 BLUE // lcdData(0x06); // 01 // lcdData(0x09); // 10 // lcdData(0x0f); // 11
lcdCmd(NOP);
delay(100);
lcdCmd(NOP); fillScreen(0x0F); lcdCmd(DISON); }
void setup(){ DDRD |= B01111100; // Set SPI pins as output PORTD |= B01111100; // Set SPI pins HIGH delay(500); pinMode(8,INPUT); pinMode(9,INPUT);
lcdInit(); //Make some shit happen lcdCmd(RAMWR);
d = false; }
void loop(){ d = false; byte C = 0xFF; int dC=30; digitalWrite(11,LOW); delay(250); fillScreen(C); if(C > dC){ C-=dC; }else{ C=0; } }
|
|
|
|
|
Logged
|
|
|
|
|
Spokane, Washington
Offline
God Member
Karma: 0
Posts: 686
My name is Bob, and I'm an addict.
|
 |
« Reply #80 on: October 18, 2009, 09:10:53 am » |
When I use Phokur's updates, well, nothing works the same as before.. and not in a good way! lol pixels galore.. I've been trying to implement how to use a BMP.. but that's proving to be a bigger pain in the ass than I normally expected. 
|
|
|
|
|
Logged
|
|
|
|
|
Toronto, Canada
Offline
Full Member
Karma: 0
Posts: 144
Arduino rocks
|
 |
« Reply #81 on: October 19, 2009, 06:35:15 am » |
Hello everyone,
I got the SparkFun Nokia knock-off break out board just like Phokur and I am having the same problems with weird colors and text. After I applied his mods (especially for the text size) I got some results, meaning the text is legible but the colors are all messed up. I am using the library you guys made and I am making the tweaks you guys recommend to see what's working. I have a few questions:
- why aren't we using the hardware SPI? - why aren't we using the 12 bit color scheme instead of the 8 bit one? - is there a possibility to flip the image 90 degrees?
I am using diodes and pull-up resistors for voltage converting, unfortunately I did not had shotky diodes handy, so there might be a timing problem for the communication.
Another weird thing, the LCD seems like looping through the DATCTL settings because I got solid color bars (black yellow blue cyan) then garbled color bars (black magenta cyan white) and the text changes colors too. When is garbled, each color bar has vertical lines, one line color, one line black and they alternate from one color to the other, that means if for the first color the black lines (columns) are even, for the second color the black lines are odd. The text appears with vertical lines too, like the LCD has less resolution or something like that. Sometimes the text has red lines above and below each text line. All these are looping over about 15 cycles or so.
At this time I wish I had bought the Nuelectronics Color Arduino Shield instead of the Sparkfun's board or the one CaptainObvious has.
|
|
|
|
|
Logged
|
|
|
|
|
Toronto, Canada
Offline
Full Member
Karma: 0
Posts: 144
Arduino rocks
|
 |
« Reply #82 on: October 23, 2009, 07:30:18 pm » |
Anything new on this? Is anyone making some progress? Should I toss out this color LCD and buy another one that works?
Thanks!
|
|
|
|
|
Logged
|
|
|
|
|
Toronto, Canada
Offline
Full Member
Karma: 0
Posts: 144
Arduino rocks
|
 |
« Reply #83 on: October 28, 2009, 08:35:53 pm » |
I gave up on the color settings, so I can actually use the thing on my robot. I finally succeeded writing the code for a scan and display map module. I used the Ping sensor, which makes the objects be wider than they are, but is crazy fast. I wish same speed could be achieved with Sharp sensors. I can post up the code if someone needs it. Here is a video: Anyway, looking for ways to properly set up the display, I found this amazing code written in C++ for Mega8, 16, 32... 644. It does everything, but it's a bit over my head to understand it. I would like to port it to Arduino as a library. Can anyone help with this? Here is the link: http://www.idleloop.com/robotics/ColorLCD/
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 16
Arduino rocks
|
 |
« Reply #84 on: December 09, 2009, 06:34:00 am » |
Hi, I'm using this Nokia 6610 LCD (Green PCB -> Epson) over an Olimex board ( http://www.olimex.com/dev/mod-nokia6610.html) equipped with a DC-DC converter to have the correct 7V to power the backlight. I've wired this board to my Arduino Duemilanove working with an AtMega328 and the 0017 version of the IDE. I'm experiencing the same Blip's and other users problems, that consists in wrong/mismatch visualization of the data sent over the SPI bus. I'm checking the data over the bus by a logis state analyzer and it seems the data was correct, but I'm still analyzing... I also checked the new Epson controller datasheet to be sure the command sent to the lcd was correct, but none is working. Somebody have some news about to control this device? Today I'll try to compile my simple source code with another IDE version (0011>)... grrr...
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 16
Arduino rocks
|
 |
« Reply #85 on: December 15, 2009, 04:52:07 pm » |
Hi, finally I was able to correctly drive this LCD. The issues was the following: 1. new Epson LCD are equipped with a new Epson clone controller that doesn't supports 8 bit color driving 2. it's necessary to set the P3 parameter of the DATCTL command to the value 4 instead of 2. 3. new datasheet's revision of the Epson controller (S1D15G10) that can be found via Google search, now contains the info of the point 2 that isn't contained in the old revision (S1D15G00). More info here: http://www.idcomm.com/personal/lorenblaney/sparkfun.html
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 16
Arduino rocks
|
 |
« Reply #86 on: December 15, 2009, 04:57:22 pm » |
Hi, finally I was able to correctly drive this LCD. The issues was the following: 1. new Epson LCD are equipped with a new Epson clone controller that doesn't supports 8 bit color driving 2. it's necessary to set the P3 parameter of the DATCTL command to the value 4 instead of 2. 3. new datasheet's revision of the Epson controller (S1D15G10) that can be found via Google search, now contains the info of the point 2 that isn't contained in the old revision (S1D15G00). More info here: http://www.idcomm.com/personal/lorenblaney/sparkfun.html
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 35
Arduino rocks
|
 |
« Reply #87 on: January 28, 2010, 05:11:15 pm » |
I'm astounded by the work done on this board.
I'm pretty new to Arduino's, and I'm chugging through my first real project (after playing with a bunch of tutorials).
I'm trying to print numerical values generated by the Arduino (Longs):
strcpy(text,"Speed"); nokiaLcd.lcd_draw_text(MAGENTA, BLACK, 7, 90, text); strcpy(text,"0"); // <-------- I want to replace this "0" with a Long variable nokiaLcd.lcd_draw_text(CYAN, BLACK, 40, 90, text);
I've tried various methods of swapping out the "0" with the variable velocity. I keep getting: error: invalid conversion from 'long int' to 'const char*' when I replace the line above with: strcpy(text,shots);
I've tried a couple of other permutations, including changing the next line to: nokiaLcd.lcd_draw_text(CYAN, BLACK, 40, 90, shots);
I get: error: invalid conversion from 'long int' to 'char*'
I'm using a Diecimila to drive the board, and so far things have been flawless. I've looked for ways to "Cast" the variable, but char(shots) doesn't seem to work either.
Thank you
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 2
Arduino rocks
|
 |
« Reply #88 on: February 09, 2010, 05:37:54 pm » |
Hi...i got the LCD to show up text and clear up fine. Thank you so much everyone. I was wondering if the library can be used to show photos?
|
|
|
|
|
Logged
|
|
|
|
|
Doylestown, PA
Offline
Newbie
Karma: 0
Posts: 2
You knew the job was dangerous when you took it
|
 |
« Reply #89 on: March 27, 2010, 08:33:25 pm » |
Hi. I just got the SparkFun breakout board working wih Arduino.
I used the code from Arduino Playground -- Epson S1D15G10 Nokia LCD (Work In Progress)
I can see the test pattern (Purple Yellow Orange) when I view the display from an angle. But if I look at the display straight-on, all I see is Blue -- or maybe 3 shades of Blue.
Any ideas what I need to do to get display o look right?
Thanks!
-Bob
|
|
|
|
|
Logged
|
|
|
|
|
|