Er is ook een bijhorende UNO code. Na het bouwen van de schakeling en het laden van de code werkt alles, behalve dat er geen waardes op het scherm (posities) worden weergegeven, slechts enkel een vraagteken op die plaats. Ik heb met mijn beperkte kennis van het programmeren geprobeerd de fout te achterhalen, maar het lukt me niet, en de maker krijg ik niet te pakken... zijn er hier knappe koppen die er een oog op willen werpen ?
Ik heb de code nog in een Mega geladen, maar met hetzelfde resultaat, ook wanneer ik de code simuleer in Proteus.
een foto van het display en de code zijn bijgevoegd.
ik heb het voor de veiligheid even nagezien. de datalijnen zijn juist aangesloten. Ik kan ook in alle menu's en instellingen, en daar wordt alles juist weergegeven, het is pas als ik in het RUN menu kom dat de positiewaarden door een vraagteken worden vervangen...
Opde foto lijkt het alsof er "garbage" op het scherm staat. Maar goed ik heb geen cnc en als het menu werkt...
Dan zou ik in de code zoeken naar ? en kijken wanneer die op het scherm getoverd wordt.
? komt niet zo vaak voor in C/C++ code en je zoekt een string representatie.
Eens je het stukje code gevonden hebt zou je je een idee moeten vormen van wat er fout is.
Er komt geen vraagteken in een opdracht voor in de code, enkel in tekst ,in de menu's, die wordt weergeven op het display. Maar dit zette me aan het zoeken in google: het blijkt dat er een vraagteken gezet wordt op het scherm wanneer er geen floating point kan worden weergegeven. Ik vond een tekst in het engels :
Since Arduino has such limited amount of space for code, they took the float support out of sprintf. You'll have to convert the float to a string first before you go to sprintf.
ik vind wel sprintf commandos in de code, maar ik zou niet niet weten hoe ze aan te passen
Om zeker te zijn dat dit het probleem is kan je misschien best eerst testen door je float naar int te casten.
Stel dat de code in mm werkt kan je eerst *100 doen zodat je display in 100ste van een mm werkt.
Ik zie dat je sprintf gebruikt om floating point nummers te printen. Dat wordt standaard niet ondersteund op Arduinos. Je moet ergens een file modificeren om dat te laten werken; op dit moment geen idee welke.
Misschien dat dat is waar je probleem vandaan komt?
Je kunt een kleine test-sketch schrijven om te testen of dat de oorzaak van je probleem is. Iets in de geest van
// lcd gerelateerd
...
...
void setup()
{
 // lcd initialiseren
 ...
 ...
 // een float variabeleÂ
 float x = 3.14;
 // buffer om tekst in op te slaan
 char buffer[64];
 // print
 sprintf(buffer,"%6.2f", x);
 lcd.print(buffer);
}
void loop()
{
}
OK, net even getest met een Uno en de seriele poort
void setup()
{
 Serial.begin(57600);
 float x = 3.14;
 char buffer[64];
 sprintf(buffer, "'%6.2f'", x);
 Serial.println(buffer);
}
void loop()
{
}
Resultaat:
'Â Â ?'
Dus je moet even ( ) de file vinden die aangepast moet worden of je kunt dtostrf() gebruiken. Voor dat laatste zul je wel alle regels moeten vinden in je programma die gebruikt worden om een floating point variabele te printen en je hebt een extra karakter buffer nodig.
// Edit
Slimme oplossing (alternatief voor dtostrf): How to sprintf a float with Arduino - Yet Another Arduino Blog. Voorbeeld is voor twee decimalen (vermenigvuldigen met 100 en modulo 100), voor drie decimalen vermenigvuldigen met 1000 en module 1000 gebruiken.