Arduino + fischertechnik TX-C - ansluta I2C sanna färg Sensor (3 / 6 steg)
Steg 3: Arduino sidan - programvara
Jag lyfta fram de mest intressanta delarna från de fyra avsnitten av Arduino skiss:
1• samtal av bibliotek
#inkluderar < Wire.h > #include "I2C_RGBC_Reader.h"
2• Definition av variabler och konstanter
I2C_RGBC_Reader myRGBC_Reader;
3• setup() förfarandet lanserar färg läsaren och anropar standard kalibrering
myRGBC_Reader.begin ();
myRGBC_Reader.standard ();
I2C adress ligger och standard kalibrering skickas till färg sensorn.
4• loop() förfarandet innehåller två viktiga delar: en memorise() funktion lär sig färgerna
Serial.println ("0..3 lära");
Serial.Print ("> färg objektet required\n");
tag (!. Serial.available());
myRGBC_Reader.memorise ((kommandot - 0x30));
och en getRGBC() funktion läser cylindern medan en recognise() funktion identifierar färg.
myRGBC_Reader.getRGBC (r, g, b, c);
myRGBC_Reader.recognise (n, p);
Erkännande baseras på beräkning av färdavstånd: närmaste memorerade färg från Läs färgen väljs. En närhet index finns också: det bör vara mindre än 100%, annars returneras färg förtroende är låg.
Den färg n sedan inkodat i 2 bitar och skickas till TX-C.
• mål = 0 inga objekt i1 = 0 i2 = 0
• mål = 1 blå färg i1 = 0 i2 = 1
• mål = 2 röd färg i1 = 1 i2 = 0
• mål = 3 vit färg i1 = 1 i2 = 1
om (n == 0) {
digitalWrite (out1pin, låg);
digitalWrite (out2pin, låg);
}
annars om (n == 1) {
digitalWrite (out1pin, låg);
digitalWrite (out2pin, hög);
}
annars om (n == 2) {
digitalWrite (out1pin, hög);
digitalWrite (out2pin, låg);
}
annars om (n == 3) {
digitalWrite (out1pin, hög);
digitalWrite (out2pin, hög);
}
annat {
digitalWrite (out1pin, låg);
digitalWrite (out2pin, låg);
}