Hier snap ik dus echt niks van (ja ben al aan het uitzoeken geweest)
code is toch simpel (dacht ik)
telt van 1 tot 100
dan knippert het display 3x
(dit snap ik nog allemaal)
dan gaat ie van 09 19 29 39 49 59 69 79 89 99
11 12 13 en weer naar 100
(en dat snap ik dus niet!!!!)
ik ben al aan het aanpassen geweest.maar kom er niet achter.
waar zit dat laatste gedeelte van tellen in????
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE); // See above - same as DF Robot
void setup()
{
lcd.begin (16,2);
lcd.setBacklight(HIGH);
lcd.print("I2C ");
}
void loop()
{
for(int i = 0; i < 100; i++) {
lcd.setCursor(0,1);
lcd.print(i);
delay(500); // 0.1 seconds
}
flashBacklight(3);
}
void flashBacklight(int repeat) {
while(repeat-- > 0) {
lcd.setBacklight(LOW);
delay(250);
lcd.setBacklight(HIGH);
delay(250);
}
}is een lcd display met 2 regels ,en een i2c printje
[Bericht gewijzigd door Henry S. op (0%)]
Clear LCD ? CLS ? : https://www.arduino.cc/en/Reference/LiquidCrystalClear
[Bericht gewijzigd door Shiptronic op (63%)]
sorry die 9 moet 09 zijn hebt het aangepast in topic
opgelost inderdaad met lcd.clear();
en een print regel want die wist hij dan ook.
maar werkt zo goed
hartelijk dank
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE); // See above - same as DF Robot
void setup()
{
lcd.begin (16,2);
lcd.setBacklight(HIGH);
lcd.print("I2C ");
}
void loop()
{
for(int i = 0; i < 100; i++) {
lcd.setCursor(0,1);
lcd.print(i);
delay(500); // 0.1 seconds
}
flashBacklight(3);
}
void flashBacklight(int repeat) {
while(repeat-- > 0) {
lcd.setBacklight(LOW);
delay(250);
lcd.setBacklight(HIGH);
delay(250);
lcd.clear() ;
lcd.print("I2C ");
}
}[Bericht gewijzigd door Henry S. op (0%)]
JvdBe
stop het overmatig spatiegebruik !
inderdaad JvdBe:
jouw oplossing werkt ook prima ,net als wat ik gedaan had op advies.
hartelijk dank allen
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Voordeel van een spatie is dat het veel sneller is als een clear. (40uS vs 1.6mS). Vooral bij veelvuldig updaten display belangrijk...
JvdBe
stop het overmatig spatiegebruik !
een tip voor als je verder gaat met TFT schermen.
als je daar telkens een clear doet, gaat het scherm knipperen en heel traag werken.
daar is de truck om eerst de oude data te overschrijven in backgroundcolor en dan pas de nieuwe data door te sturen.
beter dat je nu ook dergelijke aanleert en niet telkens een clear doet. de oude tekst overschrijven met spaties en dan pas het nieuwe karakter schrijven, dat gaat veel sneller.
ook kan je bv bepaalde tekst laten staan.
voorbeeld
je schrijft een programma dat volgende weergeeft
'Temperatuur:'
' 20°C 'dan kan je telkens die 20 wissen door op de 2de lijn karakter 5 en 6 een spatie te schrijven.
de tekst temperatuur en °C mogen blijven staan. als je daar telkens een clear doet en alles herschrijft, gaat het fel gaan knipperen.
bij een tft ga je daar naar 5de karakter op 2de lijn gaan, en nog eens die 20 herschrijven in backgroundcolor. dan opnieuw naar 5de karakter gaan op de 2de lijn en de nieuwe tekst schrijven.
ik heb hiervoor een functie geschreven waar ik de "oldTekst, newtekst, X, Y, bgColor en tekstColor" doorgeef als variabelen. en daarin overschrijf ik dan het oude, keer terug en schrijf het nieuwe. bespaard je een hoop coderegels als je veel wil updaten
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Als je gaat optimaliseren... Ik zou dan:
lcd.setCursor(0,1);
lcd.print(" ");aan het begin van de loop functie zetten. De print 1 spatie truuk wordt nu 100x gedaan, terwijl er maar 1 moment is dat het echt moet.... (verdere optimalisatie: print "0 ", en laat de loop bij 1 beginnen....)