Dat origineel, is dat een sketch die de data correct verwerkt ?
Want dat strookt volgens mij namelijk niet met wat er in jouw plaatje te zien is.
Even snel een korte uitleg (ik heb geen idee of je dit al weet of niet):
Hexadecimaal betekent een 16-tallig tel systeem.
Wij hebben allemaal op onze vingers leren tellen, en de meeste mensen hebben er daar 10 (decimaal) van.
Hexadecimale nummer gaan van 0 tot en met F, na de 9 komt A en zo voorts.
Zoals je in jouw afbeelding kunt zien, worden die hexadecimale getallen per 2 gecombineerd.
Dan heb je 16 maal 16 mogelijkheden; 256 in totaal.
Jouw seriële verbinding werkt ook met bytes, en de ASCII tabel (waarin tekens volgens afspraken staan) werkt met 256 mogelijke tekens.
Zoals eerder gezegd, de seriële verbinding verzendt ASCII tekens.
De code die je nu toont haalt waardes binnen in met telkens 2 ASCII tekens:
altl = Serial.read();//serialdata[1] // read altitute
alth = Serial.read();//serialdata[2]
Das dus een lage digit (noem ik ze maar bij gebrek aan een betere benaming die er ongetwijfeld wel is) en een hoge digit, en samen bieden die ruimte voor 256 maal 256 mogelijkheden; dat zijn er in totaal 65536.
Ik meen dat het geheel dan een woord heet.
Tijdens de sketch word alles overgeslagen tot er een waarde van 255 binnenkomt.
Daarna worden een voor een de ASCII tekens binnen gehaald en eerst in een lage digit en dan in een hoge digit gezet.
Ik heb geen idee waar die if.. statement voor nodig is die kijkt of er 21 digits zijn binnen gekomen.
Want das pas interessant als je weet waar het begin precies zit.
Dus pas na de start digit van 255 kun je gaan tellen en weten wat je binnenkrijgt.
In totaal worden er 10 waarden verwacht, maar het lijstje met waarden die gekozen kunnen worden is bij nummer 12 die nog zichtbaar is, nog niet halverwege de gehele lijst.
Maar goed.
De data die in het venstertje "serial data preview" vermeld staan, komen niet overeen met deze werkwijze.
Maar als die sketch wel werkt, dan komt dus alleen een start signaaltje binnen en vervolgens 10 registers (ook de niet relevante).
Ik heb nog steeds geen idee hoe je dan de 65536 maximaal beschikbare waarden, moet schalen naar de gewenste weergaven.
Maar wanneer je van iedere grootheid die je binnen krijgt weet wat de minimale en de maximale waarde is, kun je dat dus zelf vaststellen en verwerken.
Nogmaals, wanneer je een seriële monitor gebruikt die de hex waarden laat zien, kun je wellicht meer te weten komen.
Dan ga je analyseren of je inderdaad steeds 20 hex waarden tegen komt tussen FF en FF.
Anders wordt het analyseren een wat grotere uitdaging, en val ik eerst terug op wat ik eerder zei over de z (7A) en een serie x'en (78).