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 :-)

reading can seriously damage your ignorance

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 )
reading can seriously damage your ignorance

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.

reading can seriously damage your ignorance

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

hoooi ik ben terug
en ik heb een nieuw probleempje
wrs een simpele aanpassing in het programma (denk ik )
ik heb de variabele voor op een lcd en mijn reedcontact met 5v schakeling er aan gehangen die dus elke keer +1 doet als de magneet voorbij de sensor gaat
maar nu is mijn probleem dat de lcd hem zelf moet refreshen elke keer dat de magneet er voorbij gaat maar ik weet niet hoe dat moet. weet hier iemand een oplossing voor?

Zolang je niet antwoordt op eerdere vragen moet je geen nieuwe aandragen.

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

Op 28 januari 2022 14:27:44 schreef big_fat_mama:
Zolang je niet antwoordt op eerdere vragen moet je geen nieuwe aandragen.

als je kan lezen dan weet je dat ik het antwoord er al op gevonden heb.
en ik heb ook al het antwoord gevonden van mijn vraag die ik net gesteld had. maar toch bedankt dat je zo vriendelijk bent

buckfast_beekeeper

Golden Member

Zoek eens in de datsheet hoe je een display kan leeg maken of hoe je gegevens op dezelfde locatie kan schrijven. Helemaal leeg maken is meestal niet nodig. Als bijvoorbeeld de tekst 'puls:' er staat, hoef je dat niet telkens weer te schrijven.

Er werd al de raad gegeven de LCD librarie op te zoeken. Daar zitten alle zaken die je nodig hebt netjes in.

Van Lambiek wordt goede geuze gemaakt.

Op 28 januari 2022 14:04:50 schreef Teun9140:
maar nu is mijn probleem dat de lcd hem zelf moet refreshen elke keer dat de magneet er voorbij gaat maar ik weet niet hoe dat moet. weet hier iemand een oplossing voor?

Jep.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

die library/datasheets heb ik gevonden ik heb daar ook nuttige dingen gevonden. (voor diegene die vragen, ik heb het antwoord op mijn eerdere vraag gevonden)
ik heb een nieuwe vraag, ik ben met de pulsenteller en alles wat ik nu heb een programma aan het maken voor het aantal km per uur te berekenen. heeft er iemand hier een website voor waar ze het al eens gemaakt hebben?

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

weet er iemand welk je moet gebruiken zodat mijn waarden worden afgerond op 1 cijfer na de komma ?
ik gebruik nu '%d' in mijn sprintf functie
kan iemand mij helpen hierin ?
ik had ook al eens %2.2f gebruikt dat iemand aanrade maar zou niet weten hoe het werkt

je moet .1 gebruiken om 1 cijfer achter de komma te krijgen.

code:

char buf[32];
sprintf (buf, "%5.1f", 3.1415926);
// buf = "  3.1" 

De 5 is de totale ruimte, de .1 geeft aan dat er 1 cijfer achter de komma komt.

[Bericht gewijzigd door rew op 27 april 2022 11:28:28 (22%)]

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

ik had ook al eens %2.2f gebruikt dat iemand aanrade maar zou niet weten hoe het werkt

Niemand belet u het eens uit te proberen.
Er kan zelfs wat geschoven worden met de parameters, bv. %5.1f, %6.2f, enzovoort.

%2.2f is wat gek want dan worden er twee cijfers weergegeven, waarvan twee na de komma... Misschien niet zo nuttig, en ook niet echt de bedoeling.

Verder heb ik nul komma niks toe te voegen aan het antwoord van @rew hierboven, dat is compleet en helemaal correct.

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