Stap 1: Voorbeeld van het gebruik van grijze Codes
Hier is een voorbeeld waar met behulp van de binaire sequentie ons moeilijkheden geeft:
Stel dat we wilden de positie van een astronomisch observatorium Dome lezen dus kunnen we er zeker de koepel openen wordt gewezen, zodat de opening en de telescoop worden uitgelijnd. We kunnen kiezen om te lezen het standpunt optisch. We kunnen een strook van zeggen acht zwart-witte bars op de muur koepel afdrukken en lees de puntjes met acht photoresistors. We kunnen dan het lezen van de positie van de koepel aan binnen 1/256 of een volledige cirkel, ongeveer 2 graden.
Zie de emitter/detector circuit diagram hieronder. Om te 'lezen' de positie van de koepel de microprocessor zoals een Arduino zou lezen de zwarte en witte balken op de muur koepel, dat wil zeggen dat de balken met de koepel draaien en de stationaire lezer doet niet roteren. De basis van de 8 fotodetectoren zijn aangesloten op de 8 input pinnen van de Arduino. Welke codering volgorde moeten we gebruiken?
Stel dat wij hadden gebruikt het normale binaire tellen nu volgnummer om onze zwart-witte bars voor onze photoresistors naar de zin te maken. Het probleem die we tegenkomen met behulp van de binaire sequentie tellen is wanneer we de overgang tussen een nummer en de volgende. Laat zeggen onze sensoren gaan tussen de '255' positie en de "0" positie. Zoals de overgang optreedt en de photoresisters tussen beide getallen zijn, zou een photoresistor of twee overgang van '1' op '0' een beetje voor de anderen. Dit kan te wijten zijn aan een lichte verschuiving in de fotoweerstand de positie of kan worden veroorzaakt door lichte afwijking in de fotoweerstand de bouw/chemische samenstelling waardoor het een beetje gevoeliger dan de anderen. Voor welke reden dan ook een of meer zullen overstappen op een ander tijdstip dan de anderen. Gedurende deze tijd kan de lezing van de phototransitors gaan van 255 naar 127 vervolgens naar 0. Als de motie langzaam is kan genoeg zien veel van deze spurrious overgangen tussen de meeste nummers.
GRIJZE CODE to the Rescue!
Een betere benadering zou zijn om een grijze code gebruiken in plaats van de binaire code. Met behulp van de grijze code, verandert alleen een beetje van de code met elke toename. Daarom wanneer tussen twee standpunten van de code alleen een beetje tussen de twee posities schommelen kan. Daarom wanneer tussen posities 0 en 1, de photoresistors kan soms 0 en soms Lees 1, beide antwoorden zijn echter nog steeds zeer dichtbij de werkelijke koepel positie.
Het probleem met grijze codes is dat de decimale waarde tussen één positie en de volgende onderling niet verschillen een. Software kan dit gemakkelijk oplossen met behulp van een array waarin de grijze code (of zijn inverse). Men kan de waarde van gelezen en de photoresistors als een index in een matrix gebruiken. De waarde van de matrix is de decimale positie. Met behulp van de matrix één, kan het verschil in banen dan berekenen.