Er zijn een paar verschillende soorten kleur sensoren.
Degene die zijn gebruikt in dit instructable is een "reflecterende" kleur sensor heeft een rood licht groen licht bron bron een blauwe lichtbron (een R, G, B LED zou werken) en een lichtsensor. De manier waarop die het werkt is eerst de rode lichtbron is ingeschakeld en de waarde van de lichtsensor is geboekt. dan het rode lichtbron uitstaat dit gebeurt voor de groene en blauwe lichtbronnen ook.
de R, G, B-waarde worden dan fijn vergeleken om te komen met de kleur van het object, maar waarom doet het dit? omdat wanneer rood licht op een rood object schijnt het meer licht reflecteert dan wanneer groene zijn blauw licht schijnt op het. Dus als een groene-object wordt gehouden over de sensor de groene waarde opgenomen is hoger dan de rode zijn blauwe waarden.
Het andere type van kleur sensor is een "refractieve" kleur sensor die het werkt op het zelfde concept zoals hierboven, behalve dat het tegenovergestelde. het heeft drie lichtsensoren met kleurenfilters voor rood, groen en blauw en een wit lichtbron. de manier waarop die het werkt is het draait op de witte lichtbron en vergelijkt de waarde van de lichte sensoren als de rode waarde hoger is dan de groene en blauwe waarden dan de kleur is rood.
De code die ik in dit instructable looks gebruikt totdat het een groene object ziet dan op een LED draait. De manier waarop het dit doet is neem ik de rode, groene, blauwe waarden verdeel ze door tien (om ze gemakkelijker te beheren). dan plaats ik een gekleurd object (in dit geval is het een groene object) en dan gebruik ik de variabele val1, val2, val3 (er zijn drie variabele voor rood, groen, blauw) toevoegen en aftrekken van de waarden voor rood, groen en blauw om ze allemaal de dezelfde waarde in het geval van dit instructable de waarde is vijftien.
red = (sensorValue / 10) + val1;
dan heb ik een "als verklaring" die vergelijkt de waarden met een klein beetje "ruimte" rond de waarde in dit geval twee aan elke kant. Dus als de waarden rond vijftien blijkt op een LED als niet blijkt van de LED.
if(blue > 13 and blue < 17 and green > 13 and green < 17 and red > 13 and red < 17)<br> digitalWrite(led4, HIGH); delay(1000); } else{ digitalWrite(led4, LOW); }
Dus nu aan het bouwen!