Larry Bank Posted February 22, 2018 Posted February 22, 2018 I just released a new C library to draw text and graphics on the UC1701 128x64 monochrome LCD. It makes use of my ArmbianIO library to manipulate the GPIO lines: https://github.com/bitbank2/uc1701 2
vin7102 Posted April 6, 2018 Posted April 6, 2018 Hello Larry, I'm working on an Arduino proMini project that will require over 50 displays and this one here looks like it may be a good candidate, do you know if this particular display is still on the market for purchase? If so, do you possibly have the tech specs of it handy? Thanks Vince
Larry Bank Posted April 7, 2018 Author Posted April 7, 2018 11 hours ago, vin7102 said: Hello Larry, I'm working on an Arduino proMini project that will require over 50 displays and this one here looks like it may be a good candidate, do you know if this particular display is still on the market for purchase? If so, do you possibly have the tech specs of it handy? Thanks Vince Yes, it's still available. It can be purchased with a PCB attached and through-hole connectors or just the raw display with a ribbon cable. I have only bought the PCB version. Single piece, they sell for about $4 each from China. I really like this display because it's super low power (275uA @ 3V) when active and has a nice even backlight that only consumes 4.8mA. The controller chip behaves much like every other LCD controller (even similar to the popular SSD1306 OLED displays). The refresh rate is pretty quick and I believe it's visible at > 30FPS. I just used this in a commercial project with a Pro Mini. It's my favorite LCD so far due to its low cost, low power and good contrast. If you search on AliExpress with the words "128x64 LCD COG" you'll see them.
vin7102 Posted April 7, 2018 Posted April 7, 2018 Hi Larry, Thanks for the quick reply, I looked up the displays on Ali and found a few with the PCB attached and yes they go for around $4-5 usd. I found the 12864 128X64 Serial SPI Graphic COG $4.23 + Shipping This product I'm building will use battery power so the 4.8mA + 275uA would be perfect. I have built my first prototypes using an OLED display via I2C and these displays are super fast, crisp, and bright, however these counter units will sometimes be used outdoors in direct sunlight and my OLED display washes out really bad (almost completely) when the sun angle hits the display just right. Another drawback to the OLED is the massive 25-35mA power consumption when many larger digits are displayed. But the responsiveness and reaction time to show the encoder value is truly impressively fast. I also use larger numeric fonts and the Adafruit_SSD1305 (FreeSansBold24pt7b) is perfect size for this application. Seeing your screenshots of the larger font is what initially caught my eye. I'm pretty green to the display area of micro-controllers but I have been learning a ton along the way. I never realized the refresh rates play such a big role in these things. Up until about 2 weeks ago, I have only worked with OLED, then when I tested a standard backlit LCD , I was shocked at how slow that the encoder values were changing. Would have never guessed! I guess thats where the refresh rates come into play for these displays. Since I already had my circuit boards printed, I would like to stay with I2C. But I will definitely redesign my boards if I can get a daylight readable display that is 80% more efficient. Couple more questions here if you dont mind: Do you use SPI displays? What is the normal library used with Arduino for this display? Is the library pretty nice to work with? Is 30 FPS rate an average refresh rate for this type of display? Again, I really appreciate your time and advice! Regards, Vince
Larry Bank Posted April 7, 2018 Author Posted April 7, 2018 32 minutes ago, vin7102 said: Couple more questions here if you dont mind: Do you use SPI displays? What is the normal library used with Arduino for this display? Is the library pretty nice to work with? Is 30 FPS rate an average refresh rate for this type of display? I have been on a mission to learn all I can about IoT (MCUs/displays/sensors/motors/etc). I buy inexpensive devices, read the datasheet, then write code to control them. I don't know about "normal" libraries because I always write my own. I haven't done extensive testing on the refresh rate of the monochrome LCDs, but I remember doing some brief experiments where I saw a decent refresh rate. I use SPI connected displays in several of my "experiments", both monochrome and color. I used to earn a living emulating classic games, so I've done a bunch of projects with color LCDs (SPI connected) to optimize performance/refresh. I'm looking for interesting projects to make with this knowledge. I recently designed a physical therapy device for a scoliosis doctor using this LCD display, an Arduino Pro Mini, accelerometer and light sensitive resistor (to turn on the backlight automatically when ambient light levels are low).
vin7102 Posted April 19, 2018 Posted April 19, 2018 Larry, I just received my JLX12864G-08602 displays and was wondering if you would want to help me get this set up to work with my pro mini? Maybe a simple sample Arduino sketch to demonstrate printing a variable and blanking the screen. I looked around the web and I haven't been able to find any examples or library's (or even a wiring diagram). I would be more than happy to compensate you for your time for helping get this going. Regards, Vince
Larry Bank Posted April 19, 2018 Author Posted April 19, 2018 55 minutes ago, vin7102 said: Larry, I just received my JLX12864G-08602 displays and was wondering if you would want to help me get this set up to work with my pro mini? Maybe a simple sample Arduino sketch to demonstrate printing a variable and blanking the screen. I looked around the web and I haven't been able to find any examples or library's (or even a wiring diagram). I would be more than happy to compensate you for your time for helping get this going. Regards, Vince Hi Vince, Your display luckily doesn't have the Chinese character rom, but does have the regulator. If you plan on powering this from 3 or 3.3V, then you can remove the regulator and bridge R1 with a blob of solder. No need to pay me, I shared a Linux and Arduino library to control the display here: https://github.com/bitbank/uc1701 It's quite easy to get going on the Arduino. Your sketch will start like this: #include <uc1701.h> void setup() { uc1701Init(DC_PIN, RESET_PIN, LED_PIN, bFlip180, bInvert); uc1701Fill(0); } void loop() { uc1701WriteString(0, 0, "Hello World!", false, FONT_NORMAL); }
PCDeath Posted July 25, 2019 Posted July 25, 2019 (edited) Good morning, Larry. I downloaded you lib from GitHub and would like to ask You for a small tutorial for your library 'cause it even does not compile with your sketch above. I copied an Arduino directory into libraries and renamed it into uc1701. So, the issues are: 0. The function uc1701Init requires a iClock parameter in according to its' definition in uc1701.cpp: int uc1701Init(int iDC, int iReset, int iLED, int iCS, byte bFlip180, byte bInvert, int32_t iClock) What is iClock? Is it a speed for SPI bus? What value could You suggest for JLX12864G display as on picture above? 1. There is a difference between definitions of the function uc1701WriteString in uc1701.h and uc1701.cpp: uc1701.h: // Draw a string of normal (8x8), small (6x8) or large (16x24) characters // At the given col+row // int uc1701WriteString(int x, int y, char *szMsg, int bInverted, int iSize); uc1701.cpp: // Draw a string of small (8x8) or large (16x24) characters // At the given col+row int uc1701WriteString(int x, int y, char *szMsg, int iSize, int bInverted) The bInverted and iSize parameters are interchanged and there are different descriptions for the small and the normal fonts. Do I have to change their order in .h or .cpp file? Or it's OK? 2. Finally, I tried to compile a little sketch, but it returns me a message while compiling: C:\Users\I8A8B~1.MAT\AppData\Local\Temp\arduino_modified_sketch_715290\sketch_jul25a.ino: In function 'void setup()': C:\Users\I8A8B~1.MAT\AppData\Local\Temp\arduino_modified_sketch_715290\sketch_jul25a.ino:17:59: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] uc1701WriteString(0, 0, "Hello World!", false, FONT_NORMAL); Is it OK? --------------------- Best regards. Russian PCDeath uc1701.cpp uc1701.h Edited July 25, 2019 by PCDeath Adding a subtitle
Recommended Posts