Grå koder (1 / 2 steg)
Steg 1: Exempel användningen av grå koder
Här är ett exempel där med den binära sekvensen ger oss svårigheter:
Anta att vi ville läsa positionen för ett astronomiskt observatorium Dome så vi kan vara säkra på kupolen öppna pekas så att öppningen och teleskopet justeras. Vi kan välja att läsa position optiskt. Vi kan skriva ut en remsa av säga åtta svartvita barer på kupolen väggen och läsa prickar med åtta photoresistors. Sedan kunde vi läsa positionen för kupolen att inom 1/256, en full cirkel, eller ca 2 grader.
Se sändare/detector kopplingsschemat nedan. För att "läsa" placera av kupolen mikroprocessorn som en Arduino skulle läser de svarta och vita barerna på kupolen väggen, dvs att barer rotera med kupolen och stationära läsaren roterar inte. Basen av de 8 photodetectors är anslutna till 8 input stift av Arduino. Vad kodande sekvens ska vi använda?
Nu antar att vi hade använt den normala binära räknar sekvens för att skapa våra svarta och vita barer för våra photoresistors till känsla. Problemet vi stöter på med den binära räknar sekvens är när vi övergången mellan ett nummer och nästa. Låt oss säga våra sensorer flyttar mellan '255' samt '0' position. Som övergång sker och photoresisters är mellan båda talen, kanske ett fotomotstånd eller två övergång från '1' till '0' lite före de andra. Detta kan bero på en svag förskjutning i den fotomotstånd position eller kan bero på liten avvikelse i den fotomotstånd konstruktion och kemiska sammansättning gör det lite mer känsliga än andra. Av någon anledning en eller flera kommer övergången vid en annan tidpunkt än de andra. Under denna tid kan läsningen från phototransitors gå från 255 127 sedan till 0. Om förslaget är långsam får nog se många av dessa spurrious övergångar mellan de flesta nummer.
GRÅ kod till undsättning!
En bättre metod skulle vara att använda en grå kod istället för binära koden. Med hjälp av grå kod, ändras bara en bit av koden med varje inkrement. Därför när mellan två positioner i kodexen endast en bit kan varierar mellan de två ståndpunkterna. Därför när mellan positioner 0 och 1, photoresistors kan ibland läsa 0 och ibland läsa 1, båda svar är dock fortfarande mycket nära den faktiska dome positionen.
Problemet med grå koder är att det decimal värdet emellan en position och nästa inte skiljer sig av en. Programvara kan enkelt lösa detta med hjälp av en matris som innehåller grå koden (eller dess invers). Man kan använda värdet läsa i från photoresistors som ett index i en array. Värdet av matrisen är decimal positionen. Med array en kan sedan räkna ut skillnaden i postions.