Stap 3: De Code
In plaats van gewoon dumpen de code zal ik eerst uitleggen een beetje hoe de code werkt. Als je niet geinteresseerd bent kunt u alleen de code in het einde van deze stap.
De code vereist de Adafruit_Neopixel bibliotheek. Om het te installeren ga naar Sketch -> opnemen bibliotheek -> bibliotheken beheren en Neopixel typt in het zoekvak, klik op de Adafruit NeoPixel en klik op installeren.
Met de sensor nu vastgehaakt die we kunnen proberen te sommige waarden van het lezen. Dit is eigenlijk heel eenvoudig. Alles wat we moeten doen is het selecteren van de kleur die wij zijn geïnteresseerd in en tellen hoeveel keer de uitgang-pins wordt gewijzigd van hoog naar laag binnen een bepaalde tijd. We herhalen dit vervolgens voor elke kleur, en we hebben onze metingen. Download en unzip de code volgen samen met de uitleg hieronder.
Bij het lezen van de sensor:
De functie kleur doet al het werk. De buitenste lus is een lus die 3 keer, een keer voor rood, groen en blauw lussen. Binnen de lus de huidige tijd wordt opgeslagen en een while lus voor 25ms wordt ingevoerd. Binnen de while lus we houden het controleren van de staat van de pin OUT, als deze gewijzigd van hoog naar laag of van laag naar hoog we verhogen de telling en sla de staat. We Blijf dit doen totdat de tijd van de meting is. Na deze we besparen de graaf zoals de ruwe waarde voor die kleur, opnieuw instellen en selecteer de volgende kleur. Tegen de tijd dat deze functie is voltooid de ColorData heeft struct de ruwe gemeten waarden voor rood, groen en blauw. Het is zo eenvoudig.
Kleuren omzetten:
Om te krijgen van de werkelijke kleuren die zullen we moeten de sensor kalibreren, zullen wij dit in de volgende stap. Maar laat eerst uitleggen wat wij zijn kalibreren. Wij veronderstellen dat de sensor is lineair, dus als de uitvoer telling de hoeveelheid verhoogt licht hetzelfde tempo verhoogt. https://en.wikipedia.org/wiki/Linear_function Dus de kleur wordt gegeven door een functie in de vorm van kleur = een * (graaf) + b. Dit wordt uitgelegd voor de sensor op https://arduinoplusplus.wordpress.com/2015/07/15/tcs230tcs3200-sensor-calibration/ en wij zullen dezelfde methode gebruiken om de sensor kalibreren.
Het laatste wat dat wij zullen doen is schaal de kleur die we voelde. Wij doen dit om te voorkomen dat dim LEDs. Dus we nemen de hoogste kleur en stel deze in op het maximum van 255 en schaal van de andere twee kleuren dienovereenkomstig.
RGB-LED:
De LEDs worden ingesteld in de hoofdlus. Na het lezen van de kleur zal we doorlopen alle de LEDs en de kleur van de LED's ingesteld op de kleur die we lezen.