c taal programma LCD

hoi, ik heb een vraag ik ben bezig met een werkje waar ik dus een variabele teller op een LCD moet laten verschijnen. het programma dat ik heb is volledig juist al maar ik kan alleen woorden en letters laten verschijnen en niet een variabele. weet iemand hoe dat kan ?
teller moet de variabele zijn.

Is de functie lcd_print_tekst reeds beschikbaar, of is dat vooralsnog een wensdroom?

Zonee, maak die dan, dat is niet al te moeilijk als lcd_print_karakter wel beschikbaar is.
Zoja:
1/ gebruik dan die functie om in één keer "#pulsen" weer te geven, dat is heel wat leesbaarder dan wat er nu staat
2/ declareer/definieer een array van characters (wat men in andere talen een string noemt), vul deze in met sprintf(teller), en geef weer met lcd_print_tekst

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

dit is het programma dat ik gebruik ook van het internet gehaald en het werkt voor woorden te weergeven maar variabelen lukt niet

hennep

Golden Member

Als je wel wel een string kunt printen, dan zou dit ook moeten werken:

code:

#include <stdio.h> // voor de sprintf functie
int teller = 12345;
char buf[64];
sprintf( buf, "%d\r", teller );
lcd_print_tekst(buf);

@BFM, ik had in jouw tekst de sprintf gemist, maar nu heeft de TS toch iets waarmee hij fijn kan knippen en plakken :-)

Dankjewel, @hennep, een fraaie bevestiging van wat ik ook al aandroeg. Maar iets zegt me dat de topicstarter sterker is in knippen/plakken dan in doorgronden :(

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord
High met Henk

Special Member

oef wat neigt dit naar een schoolvraag....

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???

Misschien ook leuk om naar te kijken

c code:


#include <stdio.h>

byte i = 0;
char text[4];
void main(){
  sprintf(text, "%03u", i++);
  lcd.print(text);
  delay(1500);
  Serial.println(text);
}
hennep

Golden Member

Ik vind die lcd_print_tekst wel heel krakkemikkig in elkaar zitten. Als je daar serieus mee verder wilt gaan dan zou ik in ieder geval deze code:

code:

while( zin[i] != 0x0d )

Aanpassen zodat ook bij het einde van de tekenreeks wordt gestopt met printen, zo dus:

code:

while( zin[i] && zin[i] != 0x0d )

Het einde van een tekenreeks wordt toch aangegeven door 0x0 en door nix anders? Het hangt inderdaad allemaal met haken en ogen aanelkaar.

0x0d is trouwens een 'carriage return', in Unix en gelijkaardige omgevingen wordt deze vaak weggelaten, enkel een 0x0a oftewel 'linefeed' volstaat. Om aan een nieuwe regel te beginnen, welteverstaan, niet als eindindicator van de tekst.

[Bericht gewijzigd door big_fat_mama op 6 december 2021 19:43:58 (47%)]

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord
hennep

Golden Member

Op 6 december 2021 19:37:33 schreef big_fat_mama:
Het einde van een tekenreeks wordt toch aangegeven door 0x0 en door nix anders?

Klopt, maar heb je gezien dat in de lcd_print_tekst functie van de TS niet wordt gecontroleerd of 0x00 is bereikt. Dus bij een tekst zonder 0x0D gaat het printen oneindig door en hangt de uC zich op.
Ik denk dat het de bedoeling van de TS was om teller steeds aan het begin van de regel te printen. Maar de \r wordt helemaal niet geprint, zodra dat teken wordt gezien stopt het printen. De volgende tellerstand wordt dan toch gewoon er achter geprint en de \r genegeerd.

TS kan maar beter een andere lcd library zoeken.

TS kan maar beter een andere lcd library zoeken.

Helemaal akkoord - wat nu voorligt is amateuristisch geklieder.

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord
Sine

Moderator

Op 6 december 2021 17:58:47 schreef High met Henk:
oef wat neigt dit naar een schoolvraag....

De TS is blijkbaar nog met zijn eindwerk bezig ...

ow srry hoor dat jullie het allemaal weten en dat het niet proper of goed genoeg is
daarom dat ik dus de vraag stel aan mensen die het misschien wel weten
btw het is geen eindwerk want ik zit in het 4e middelbaar
en voor de duidelijkheid ik zoek da omdat ik erna een berekening moet zoeken op een of andere manier zodat die het aantal pulsen per seconde kan uitrekenen naar km per uur

btw het is geen eindwerk want ik zit in het 4e middelbaar
en voor de duidelijkheid ik zoek da omdat ik erna een berekening moet zoeken op een of andere manier zodat die het aantal pulsen per seconde kan uitrekenen naar km per uur

Zo, Jammer hé dit. Ik moest vroeger op school de berekeningen bedenken. Dat had je geleerd bij wiskunde en natuurkunmde. Ik hoefde ze nooit te zoeken. Dat kon ook niet.

In het geval van programmeren zocht je dingen als de syntax op. Of natuurconstanten zocht je op.

Tegenwoordig heb je hé google die zoekt voor je. Of een forum........

Tsja, hoe het vroeger was dat zal onze topicstarter worst wezen, wellicht - misschien wel een beetje terecht. Maar als zij/hij niet beleefder leert te schrijven, dan begint de carrière onder een slecht gesternte.

Meer ter zake: werd er al iets gedaan met de (zeer terechte!) suggestie

TS kan maar beter een andere lcd library zoeken.

??

[Bericht gewijzigd door big_fat_mama op 4 januari 2022 17:50:18 (25%)]

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord