Acties:
  • 0 Henk 'm!

  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 10:36
Hallo,

Ik probeer een LCD scherm aan te sturen middels deze code: http://educ8s.tv/arduino-2-8-ili9341-tutorial/

Dat werkt maar een beetje, en dan ook een enkele keer.

Voornamelijk zie ik het scherm een paar keer 'knipperen' (dimmen) en heel soms begint er een kleur wisseling ('Screen fill), welke daarna stopt of weer reset.

Als ik de seriële monitor bekijk lijkt het alsof er foute informatie wordt verstuurd en dat deze eerst een paar keer reset en daarna vastloopt.

Er komen dan een paar rare tekens naar voren die ik niet kan plaatsen (zie hieronder)
Ik denk zelf misschien aan een stroomprobleem (zit rechtstreeks op een usb2.0 poort met een kabel van 1,5 meter.

Simpelste test is een andere stroombron testen, maar is dat het mogelijk ook?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
ILI9341 Test!
Display Power Mode: 0x94
MADCTL Mode: 0x48
Pixel Format: 0x5
Image Format: 0x80
Self Diagnostic: 0xC0
Benchmark                Ti⸮YR**⸮⸮⸮⸮⸮⸮х
Display Power Mode: 0x94
MADCTL Mode: 0x48
Pixel Format: 0x5
Image Format: 0x80
Self Diagnostic: 0xC0
Benchmark                Time (microseconds)
Screen f⸮+⸮**⸮⸮⸮⸮⸮⸮х
Display Power Mode: 0x94
MADCTL Mode: 0x48
Pixel Format: 0x5
Image Format: 0x80
Self Diagnostic: 0xC0
Benchmark                Time (microsecondsJR**⸮⸮⸮⸮⸮⸮х
Display Power Mode: 0x94
MADCTL Mode: 0x48
Pixel Format: 0x5
Image Format: 0x80
Self Diagnostic: 0xC0
Benchmark                Ti⸮YR**⸮⸮⸮⸮⸮⸮х
Display Power Mode: 0x94
MADCTL Mode: 0x48
Pixel Format: 0x5
Image Format: 0x80
Self Diagnostic: 0xC0
Benchmark         ⸮



Als het dus al bij de 'screen fill' uitkomt begint het daarna weer opnieuw. Als het dus ergens in de code mis gaat zou dat in het onderstaande deel zijn denk ik.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void setup() {
  Serial.begin(9600);
  Serial.println("ILI9341 Test!"); 
 
  tft.begin();

  // read diagnostics (optional but can help debug problems)
  uint8_t x = tft.readcommand8(ILI9341_RDMODE);
  Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9341_RDMADCTL);
  Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9341_RDPIXFMT);
  Serial.print("Pixel Format: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9341_RDIMGFMT);
  Serial.print("Image Format: 0x"); Serial.println(x, HEX);
  x = tft.readcommand8(ILI9341_RDSELFDIAG);
  Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); 
  
  Serial.println(F("Benchmark                Time (microseconds)"));
  delay(10);
  Serial.print(F("Screen fill              "));
  Serial.println(testFillScreen());
  delay(500);

[ Voor 24% gewijzigd door BLACKfm op 24-05-2019 20:08 ]

Litebit.eu voorraad check :).


Acties:
  • 0 Henk 'm!

  • TommieW
  • Registratie: December 2010
  • Laatst online: 13:12

TommieW

Numa numa.

Kan je niet met een multimeter meten hoeveel volt de Arduino binnen krijgt?

1700X@3,9GHZ - Asus Crosshair VI Hero - 32GB Corsair LPX - GTX 1070Ti
iPhone 13 Pro Max - Macbook Pro 16" M1 Pro


Acties:
  • 0 Henk 'm!

  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 10:36
TommieW schreef op vrijdag 24 mei 2019 @ 20:08:
Kan je niet met een multimeter meten hoeveel volt de Arduino binnen krijgt?
5.0V zonder het scherm er op, en met het scherm hangt het rond de 4,8V op de 5V en GND pin.

Edit: Ik heb de seriële output nu uitgezet, en nu werkt het probleemloos...

[ Voor 12% gewijzigd door BLACKfm op 24-05-2019 20:19 ]

Litebit.eu voorraad check :).


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 07:02

Damic

Tijd voor Jasmijn thee

Waarom gebruik je zoveel spaties?

de F() macro is wel goed gevonden https://www.baldengineer.com/arduino-f-macro.html

[ Voor 56% gewijzigd door Damic op 24-05-2019 21:21 ]

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 10:36
Damic schreef op vrijdag 24 mei 2019 @ 21:19:
Waarom gebruik je zoveel spaties?

de F() macro is wel goed gevonden https://www.baldengineer.com/arduino-f-macro.html
Die spaties is iets uit de bron-code, kan dat kwaad? Die link die je geeft lijkt wat over het geheugen te melden. En omdat er blijkbaar veel seriële outputs worden gegeven (en het ram al 50% vol zou zitten bij het uploaden van de code) zou dat mogelijk de oorzaak kunnen zijn (het werkt immers wel goed zonder de seriële output)

Litebit.eu voorraad check :).


Acties:
  • 0 Henk 'm!

  • itcouldbeanyone
  • Registratie: Augustus 2014
  • Laatst online: 12-09 21:49
BLACKfm schreef op vrijdag 24 mei 2019 @ 23:03:
[...]


Die spaties is iets uit de bron-code, kan dat kwaad? Die link die je geeft lijkt wat over het geheugen te melden. En omdat er blijkbaar veel seriële outputs worden gegeven (en het ram al 50% vol zou zitten bij het uploaden van de code) zou dat mogelijk de oorzaak kunnen zijn (het werkt immers wel goed zonder de seriële output)
Zet de F() macro ook ff voor je andere strings , bespaar je een hoop ram mee, wat weer zorgt voor meer stabiliteit

Ben niet slim, maar wel dom


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 07:02

Damic

Tijd voor Jasmijn thee

@itcouldbeanyone het zou zo moeten werken, vermits het project veel groter is dan die paar lijnen.

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • vincent_1971
  • Registratie: Juni 2004
  • Laatst online: 16:11
Persoonlijk denk ik je gebruikt de pinnen van het seriële kanaal ook voor aansturing van het display..kijk eens goed naar de initialisatie van het display

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 07:02

Damic

Tijd voor Jasmijn thee

vincent_1971 schreef op zaterdag 25 mei 2019 @ 09:32:
Persoonlijk denk ik je gebruikt de pinnen van het seriële kanaal ook voor aansturing van het display..kijk eens goed naar de initialisatie van het display
Euhm dat zou ik raar vinden want de 2 seriele pinnen dat worden gebruikt voor pc comms zijn pin 0 en 1 en het scherm is (volgens de tutorial) aangesloten van pin 8 tot p13.

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
https://github.com/adafru...ster/Adafruit_ILI9341.cpp

Gooi je serial klok eens omhoog. Volgens mij heeft die SPI bus een klok van 16MHz, en dan ga je op 9600 baud daarnaast een UART draaien voor je serial. Dat is een compleet andere orde van grootte, je serial is vele malen langzamer dan die SPI bus, en zonder het hele zaakje compleet uit elkaar te trekken zou ik dit eerst eens proberen, want ik kan me goed voorstellen dat er een klok divider ergens roet in het eten gooit.

Acties:
  • 0 Henk 'm!

  • juulius
  • Registratie: Februari 2012
  • Laatst online: 24-09 18:36
wat ik zie in de code lijkt hij constant hierop te falen of niet

Serial.println(F("Benchmark Time (microseconds)"));

de Serialprint die je hier geeft is dat alles tussen " " gezien moet worden als string of niet?
maar microseconds is een waarde en geen string

daarnaast alles met de F() is wat raars mee aan de hand
wat gebeurt er als je de F() macro weglaat? als dat dan wel goed werkt, weet je in iedergeval waar het probleem ligt.
Pagina: 1