blackdog
You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
Hi,
Ik heb wat beeldschermpjes laten meekomen met een andere bestelling omdat ze mij wel leuk leken.
Het gaat om drie 128x64 schermpjes die een verschillende kleur hebben maar verder gelijk zijn.
Het type wat achterop staat is dit: GMG12864-06D
Het 128x64 scherm in drie kleuren.
.
De achterzijde van de schermen.
.
Hier gaat het om, de aansluitingen in het rode kader welke ik op een Teensy of Nano zou willen aansluiten met b.v. de U8g2 Library (maar welke driver lijn van die library?)
.
De data die ik heb kunnen achterhalen zegt dat dit scherm een ST7565R of en ST7920 driver IC heeft.
Hier heb ik echter geen zekerheid over en de eerste Library die ik zou proberen zou de van U8g2 worden.
Maar ook de pin namen zijn natuurlijk weer en rotzooitje, ik weet niet wat die Chinesen roken maar een beetje eenheid is in dat land ver te zoeken.
De pinnen aan U1 op de print kunnen wat mij betreft genegeert worden, die bevatten volgens de door mij gevonden data de Chinese caracterset en worden ook door SPI aangstuurd.
A+K is de achtergrond verlichting welke bij alle drie de displays werkt.
VSS en VDD is mij ook duidelijk.
Maar de rest van de aansluitingen samen met het driver typen geven heel veel variabelen.
Heeft iemand al ervaring met dit display die mij een goede kan opschoppen, zodat ik niet nog meer grijze haren krijg?
Als ik "Hello World" op het scherm kan krijgen, vind ik meestal de rest zelf wel uit.
Om te testen heb ik diverse Arduino's beschikbaar maar de grootste kans maakt een Teensy LC die zeer goed compatible is net de Nano maar op 3.3V werkt wat denk ik ook de voering voor dit display is.
Dank vast!
Groet,
Bram
Volgens klik een ST7565R. Daar staat ook de datasheet van dat controller IC. Daar zullen ook wel hints in staan over hoe te interfacen met een mcu.
benleentje
Golden Member
Maar ook de pin namen zijn natuurlijk weer en rotzooitje,
Valt op zich een klein beetje mee niet alle afkortingen zijn duidelijk maar ik begin dan met wat wel duidelijk is.
Als er CS staat is dat zeer waarschijnlijk chipselect en dat hoort bij een SPI bus.
SPi heeft dan
kloksignaal
Data out
data in
Chipselect
en daarnaast soms nog extra stuur signalen die niet direct tot spi horen zoals een reset.
SPI gebruikt niet alt DI en DO. Een display hoeft niets terug te sturen en dan is enkel data in nodig wat ze hier SI serial in genoemd hebben.
De spi signalen zijn dan
SCL voor serial clock
CS voor chipselect
SI voor serial in.
De andere 2 signalen horen niet direct tot de spi bus.
Maar we zijn er nog niet we zijn pas op de helft .
Onderop staan ook 4 signalen. Deze horen bij het touchscreen. Touchsreen is eigenlijk enkel 2 laagjes kunstsof die een weerstand deler vormen die ze weer bovenop he display plakken. Zo kan je eigenlijk van elk display een touchscreen maken als je de juiste maat kan vinden.
Deze heeft 4 signalen en is ook een spi bus.
IC-SCL is de klok
IC-CS chipselct
IC-SO serial out
IC-SI serial in
In principe kan je beide SPI interfaces aan elkaar knopen en enkel de CS signalen gebruiken voor het display of de CS voor het touchscreen. Maar het zit apart weet niet of dat een specifiek reden heeft.
Volgens mij heeft dit display geen touchscreen want ik mis het bandkabeltje wat normaal vanaf de voorkant naar achter gaat. Of het heeft een geïntegreerde touchscreen.
buckfast_beekeeper
Van Lambiek wordt goede geuze gemaakt.
Toch zit er een IC in de touch aansluiting. In de regel wordt dat ook niet gemonteerd als er geen touch is.
blackdog
You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
Hi,
Dank weer voor alle antwoorden, ik ga ze morgen doorneemen en testen.
Ik had al aangegeven dat de extra chip een Chinese karakterchip is en er is geen "touch" aanwezig op deze display die ik heb.
Ik ga kijken of ik morgen iets op het display kan toveren.
Groet,
Bram
benleentje
Golden Member
Ik had al aangegeven dat de extra chip een Chinese karakterchip is en er is geen "touch" aanwezig op deze display die ik heb.
Sorry overheen gelezen, maar goed nu weet je ook waar die wel voor zijn .
Ik snap die hele chip niet eens. het heeft 6 pootjes. 4 voor de spi interface 2 voor de voeding. Dat is te weinig voor een touchscreen dan heb je met een spi bus minimaal 9 pootjes nodig.
Dan zal het wel een SPI geheugenchip zijn die de spi interface deelt met de lcd chip zelf en dat hij bij het opstarten de karakterset uitlees.
Maar als daar enkel Chinese karakters instaan dan heb je daar ook niets aan. Hopelijk hebben ze er al een europese karakterset ingezet
De onderste interface heb je enkel nodig als je die karakters moet vervanderen
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
RS is Register Select (commando/data)
paaltje73
Golden Member
De Galerij van je vriendje OliKraus
Staat hier welicht iets tussen?
Voor mij regelmatig zeer bruikbaar.
https://github.com/olikraus/u8g2/wiki/gallery#9-june-2018--step-by-ste…
RSE kan ook Enable zijn..
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Op 8 september 2022 22:20:52 schreef benleentje:
SPi heeft dan
kloksignaal
Data out
data in
Chipselecten daarnaast soms nog extra stuur signalen die niet direct tot spi horen zoals een reset.
De chips die displays aansturen hebben dan vaak ook nog een "register select". Soms ook "command/ -DATA " genoemd (of andersom: ik weet dat niet uit m'n hoofd).
De "data out" (MISO in SPI terminologie) wil wel eens niet aangesloten worden.
Ik ben nu bezig met een display chip waar een slordige 1300 pootjes aanzitten. Dus naast de "pin besparende mode" (SPI) heeft zo'n chip ook nog een 8bit parallel bus (en/of 16, 18 of 24). Maar op zo'n "handige breakout" hoeft die niet altijd aangesloten te zijn.
buckfast_beekeeper
Van Lambiek wordt goede geuze gemaakt.
De ILI9341 schermpjes (320px x 240px) zijn wel handige schermpjes. Gemakkelijk aan te sturen. Verkrijgbaar in verschillende groottes. Met en zonder touch en met en zonder geheugenkaart. Er zijn online ook vele voorbeelden van te vinden.
Veel info op de main page.
Voor een ESP32
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#define TFT_CS 22
#define TFT_RST 25
#define TFT_DC 14
//#define TFT_MOSI 23 // standaard poort
//#define TFT_CLK 18 // standaard poort
//#define TFT_MISO 19 // standaard poort
const uint8_t rotation = 1; //0 = header onderaan. 1 = header rechts, 2 = header bovenaan, 3 = header links
const uint16_t backColor = ILI9341_BLACK;
const uint16_t textColor = ILI9341_WHITE;
//Adafruit_ILI9341 ILI9341 = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);// is software SPI en meer dan 10x trager.
Adafruit_ILI9341 ILI9341 = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
void setupDisplay() {
ILI9341.begin();
/*
// read diagnostics (optional but can help debug problems)
uint8_t x = ILI9341.readcommand8(ILI9341_RDMODE);
Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX);
x = ILI9341.readcommand8(ILI9341_RDMADCTL);
Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX);
x = ILI9341.readcommand8(ILI9341_RDPIXFMT);
Serial.print("Pixel Format: 0x"); Serial.println(x, HEX);
x = ILI9341.readcommand8(ILI9341_RDIMGFMT);
Serial.print("Image Format: 0x"); Serial.println(x, HEX);
x = ILI9341.readcommand8(ILI9341_RDSELFDIAG);
Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX);
*/
ILI9341.setRotation(rotation);
ILI9341.fillScreen(backColor);
ILI9341.setCursor(10, 20);
ILI9341.setTextSize(2);
ILI9341.setTextColor(textColor, backColor); // zorgt er voor dat bijvoorbeeld een wijzigend cijfer uiteindelijk geen wit vlak wordt
//ILI9341.setTextColor(textColor); // Stuurt alleen de tekst pixels naar het display. Waardoor je uiteindelijk een wit vlak krijgt
}
Het backlight stuur ik aan met PWM (Mosfet) en een weerstand van 18Ω naar 5V.
blackdog
You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
Hi,
Weer even wat feedback over deze GMG12864-06D display's.
Het is mij gelukt beeld te krijgen na het zoeken van ondermeer jullie links.
Hier het lijstje van de aansluitingen op een Arduino Nano/Uno voor deze displays
Display Pin Nano/Uno Pin
1 = CS 10
2 = RSE 8
3 = RS 9
4 = SCL 13
5 = SI 11
6 = VDD (+) 5V voeding, 3.3V nog niet getest, er lijkt een Voedingsweerstand R4 te zijn, die gejumpert kan worden voor 3.3V
7 = VSS (-) Massa
A = +LED via R, iK heb 120Ω gebruikt bij 5V voedingspanning, er valt dan 2,7V over de LED
K = -LED wordt aan massa verbonden bij mijn testen
Ik heb en mix gebruikt van wat voorbeelden, bij de eerste test kon ik net zien dat er tekst verscheen op het display, "Hello World"
Dus dat betekend dat het display een contrast commando nodig had om het goed te zetten, dit omdat deze displays geen potmeter achterop het scherm hebben voor de contrast instelling.
Na wat zoeken bij Olikraus zijn U8g2 informatie vond ik een test code die het contrast laat zien d.m.v. een variabele die in stapjes van vijf op of af loopt.
Dat was wat lastig inschatten de gebruikte timings waarde waren te kort, na wat aanpassingen om de variabel langer in tijd te maken kon ik het inschatten,
voor alle drie de displays's die ik heb ligt het optimum tussen de 60 en 70.
In de test code hieronder heb ik de contrastwaarde vastgezet zodat ik het netjes kon vastleggen op de foto hoe het display er uit ziet.
.
Mijn voorkeur gaat uit naar de basis kleur, dat is zoals de foto het laat zien.
De andere is ondermeer zwarte achtergrond en "witte" letters en de laatste is een blauwe achtergrond en witte letters.
Ik had een Amber display ook moeten mee bestellen, maar dat heb ik jammer genoeg vergeten.
Kijk ook naar het kader deze geeft het 128x64 bereik aan en dat is aardig wat kleiner dan het glas van het display.
Voor de volledigheid laat ik ook de twee andere kleuren zien.
Dis is de gene met de blauwe achtergrond.
.
Dis is de gene met de zwarte achtergrond.
.
Code voor het testen, de pinnummers staan al in deze code goed gezet voor deze displays.
De meeste code die niet nodig is heb ik al verwijderd, zie dit stukje code hieronder maar als de eerste stap om iets zichtbaar op de diplays te krijgen met een Arduino Uno of Nano.
/*
HelloWorld.ino
Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/)
Copyright (c) 2016, olikraus@gmail.com
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
/*
U8g2lib Example Overview:
Frame Buffer Examples: clearBuffer/sendBuffer. Fast, but may not work with all Arduino boards because of RAM consumption
Page Buffer Examples: firstPage/nextPage. Less RAM usage, should work with all Arduino boards.
U8x8 Text Only Example: No RAM usage, direct communication with display controller. No graphics, 8x8 Text only.
*/
U8G2_ST7565_ERC12864_ALT_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // contrast improved version for ERC12864
// End of constructor list
void testContrast(uint8_t contrast)
{
static char cstr[6];
static char vstr[4];
u8g2.setContrast(60); // <= Even vast gezette contrast instelling voor vergelijking van de drie displays, vervang "60" door "contrast" en de code werkt weer
strcpy( cstr, u8x8_u8toa(contrast, 3));
u8g2.firstPage();
do {
//u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.setFont(u8g2_font_courB24_tn);
u8g2.drawStr(0,28, cstr);
u8g2.drawFrame (0, 0, 128, 64);
} while ( u8g2.nextPage() );
}
void setup(void) {
u8g2.begin();
}
void loop(void) {
uint8_t i;
i = 255;
do
{
testContrast(255-i);
delay(200);
i-=1;
} while( i != 0 );
i = 255;
delay(100);
do
{
testContrast(i);
delay(200);
i-=1;
} while( i != 0 );
delay(100);
}
De testcode voor het contrast staat hierboven dus uitgeschakeld maar in de opmerking kan je zien als je de waarde van "60" vervangt voor "contrast" dat de code weer werkt.
Groet,
Bram
Hi Bram, de foto moet nog gemaakt worden?
blackdog
You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
Hi Henry,
Nop gewoon vergeten.. van vemoeidheid op de bank in slaap gevallen.
Nu weer tijd om te sporten, daarna plaats ik hem even.
Dank voor het melden!
Groet,
Bram
blackdog
You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
Hi,
Ik heb de foto's geplaatst.
Bij de twee laatste foto's liep de teller, hierdoor is er wat ghosting zichtbaar bij de tweede en de derde foto.
De belichting is ook niet optimaal, maar ik ka nhier niet even snel een zonnetje toveren.
Alleen bij het display met de "normale" kleuren heb je het zelfde effect als bij het bekende Nokia 5110 display,
ook zonder verlichting is het display goed zichtbaar, bij de twee andere heb je echt de achtergrond verlichting nodig.
Groet,
Bram
buckfast_beekeeper
Van Lambiek wordt goede geuze gemaakt.
Op 11 september 2022 19:43:53 schreef blackdog:
[...]Alleen bij het display met de "normale" kleuren heb je het zelfde effect als bij het bekende Nokia 5110 display,
ook zonder verlichting is het display goed zichtbaar,
Dat is dan een Transflective.
Op 11 september 2022 19:43:53 schreef blackdog bij de twee andere heb je echt de achtergrond verlichting nodig.
Groet,
Bram
Dat is dan een Transmissive.
info.
blackdog
You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
Hi buckfast_beekeeper
Dank je voor de link, dat is een duidelijke uitleg van het LCD type.
Groet,
Bram