Stap 3: Arduino Side - Software
Ik benadruk de meest interessante delen van de vier secties van de Arduino schets:
1• oproep voor bibliotheken
#opnemen < Wire.h > #include "I2C_RGBC_Reader.h"
2• definitie van de variabelen en constanten
I2C_RGBC_Reader myRGBC_Reader;
3• de Setup-procedure de Lanceringen van de lezer van de kleur en roept de standaard kalibratie
myRGBC_Reader.begin ();
myRGBC_Reader.standard ();
I2C adres is ingesteld en wordt standaard kalibratie worden verzonden naar de kleur sensor.
4• de loop-procedure bestaat uit twee belangrijke delen: een memorise() functie leert de kleuren
Serial.println ("0..3 informatie");
Serial.Print ("> object required\n kleur");
terwijl (!. Serial.available());
myRGBC_Reader.memorise ((command - 0x30));
en een getRGBC() functie leest de cilinder, terwijl een recognise() functie de kleur identificeert.
myRGBC_Reader.getRGBC (r, g, b, c);
myRGBC_Reader.recognise (n, p);
Erkenning is gebaseerd op afstand berekening: de dichtstbijzijnde onthouden kleur uit de Lees kleur is geselecteerd. Een index van de nabijheid vindt u ook: het moet kleiner zijn dan 100%, anders het vertrouwen van de resulterende kleur is laag.
De kleur-n wordt vervolgens gecodeerd in 2 stukjes en verzonden naar de TX-C.
• case = 0 geen object i1 = 0 i2 = 0
• geval = 1 blauwe kleur i1 = i2 0 = 1
• geval = 2 rode kleur i1 = i2 1 = 0
• geval = 3 witte kleur i1 = i2 1 = 1
Als (n == 0) {}
digitalWrite (out1pin, laag);
digitalWrite (out2pin, laag);
}
anders als (n == 1) {}
digitalWrite (out1pin, laag);
digitalWrite (out2pin, hoge);
}
anders als (n == 2) {}
digitalWrite (out1pin, hoge);
digitalWrite (out2pin, laag);
}
anders als (n == 3) {}
digitalWrite (out1pin, hoge);
digitalWrite (out2pin, hoge);
}
else {}
digitalWrite (out1pin, laag);
digitalWrite (out2pin, laag);
}