Väriilmaisimen piiri Arduino-koodilla

Kokeile Instrumenttia Ongelmien Poistamiseksi





Tässä viestissä aiomme rakentaa piirin, joka voi tunnistaa värin ja laukaista vastaavat osoitetut releet. Tämä projekti toteutetaan TCS3200-värianturilla ja Arduino-kortilla.

TCS3200: n värientunnistus

Jos et ole lukenut edellistä artikkelia, käy se läpi siellä, mistä olemme keskustelleet väritunnistuksen perusteet TCS3200: n avulla



Ehdotetusta projektista voi olla hyötyä, jos haluat piirin toimivan väreihin perustuen. Värien havaitsemiseen perustuvia sovelluksia on valtameriä eri teollisuudenaloilla.

Tämä projekti antaa käsityksen siitä, miten voimme ohjelmoida värianturin havaitsemaan eri värit ja laukaista releet.



Harkitsemme tämän projektin päävärejä: PUNAINEN, VIHREÄ ja SININEN. Tämä projekti voi erottaa nämä kolme väriä ja laukaista releet, kukin rele jokaiselle värille.

TCS3200 pystyy havaitsemaan minkä tahansa määrän värejä, mutta keskitymme vain pääväreihin, jotta projekti olisi ymmärrettävä ja jotta ohjelmakoodi olisi yksinkertainen.

Piirikaavio:

liittämällä Arduino- ja TCS3200-värianturit

Yllä oleva kaavio on tarkoitettu Arduino- ja TCS3200-värianturin liittämiseen.

Releen liitännät:

releyhteydet Arduino- ja TCS3200-väripainetunnistimeen

Virta Arduinoon 9 V: n sovittimella vähintään 500 mA: lla. Transistori toimii releen vahvistimena, koska Arduinon GPIO-nastat eivät pysty tarjoamaan riittävästi virtaa releelle.

Diodi 1N4007 absorboi suurjännitepiikkejä relekelasta suojaten muita puolijohdekomponentteja.

Se päättää laitteiston.

Katsotaan nyt, kuinka koodi lähetetään ja anturi kalibroidaan tarpeidesi mukaan.
Väriherkkyys voi vaihdella moduulista toiseen ja ympäröivä valo voi muuttaa väriherkkyyttä huomattavasti.

Kaikilla TCS3200-antureilla on jonkin verran vaihtelua valmistuksen aikana, sinun on mitattava tällä hetkellä omistamasi anturin väriparametrit, jotta näitä parametreja voidaan käyttää koodissa värin havaitsemiseksi tarkemmin.

Kalibroi ja optimoi anturin lukemat noudattamalla seuraavia ohjeita:

Vaihe 1: Lataa seuraava koodi, kun laitteiston asennus on valmis.

//-----Program Developed by R.GIRISH-----// const int Red_relay = 9 const int Green_relay = 10 const int Blue_relay = 11 const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int var = 25 int red = 0 int green = 0 int blue = 0 int state = LOW int state1 = LOW int state2 = HIGH //-----------Enter Values--------// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //----------------------------// void setup() { Serial.begin(9600) pinMode(Red_relay, OUTPUT) pinMode(Green_relay, OUTPUT) pinMode(Blue_relay, OUTPUT) digitalWrite(Red_relay, LOW) digitalWrite(Green_relay, LOW) digitalWrite(Blue_relay, LOW) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() { int redH1 = Rx1 + var int redL1 = Rx1 - var int redH2 = Rx2 + var int redL2 = Rx2 - var int redH3 = Rx3 + var int redL3 = Rx3 - var int blueH1 = Bx1 + var int blueL1 = Bx1 - var int blueH2 = Bx2 + var int blueL2 = Bx2 - var int blueH3 = Bx3 + var int blueL3 = Bx3 - var int greenH1 = Gx1 + var int greenL1 = Gx1 - var int greenH2 = Gx2 + var int greenL2 = Gx2 - var int greenH3 = Gx3 + var int greenL3 = Gx3 - var //-----Sensing RED colour-----// digitalWrite(s2, state1) digitalWrite(s3, state1) red = pulseIn(out, state) delay(100) //------Sensing Green colour----// digitalWrite(s2, state2) digitalWrite(s3, state2) green = pulseIn(out, state) delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) blue = pulseIn(out, state) delay(400) if(red = redL1) { if(green = greenL1) { if(blue = blueL1) { Serial.println('Detected Colour: RED') Serial.println('') digitalWrite(Red_relay, HIGH) delay(1000) } } } if(red = redL2) { if(green = greenL2) { if(blue = blueL2) { Serial.println('Detected Colour: Green') Serial.println('') digitalWrite(Green_relay, HIGH) delay(1000) } } } if(red = redL3) { if(green = greenL3) { if(blue = blueL3) { Serial.println('Detected Colour: Blue') Serial.println('') digitalWrite(Blue_relay, HIGH) delay(1000) } } } } //------Program Developed by R.GIRISH--------//

Vaihe 2: Avaa sarjamonitori, löydät seuraavat väriparametrit:

Tuo väriobjekti (värillinen paperi on suositeltava) punainen, sininen ja vihreä.

Vaihe 3:

• Aseta punainen paperi lähelle TCS3200-anturia.
• Merkitse muistiin R-, G-, B-lukemat (kaikki kolme väriä), kun asetat punaista paperia.
• Huomaa vastaavasti vihreän ja sinisen paperin R-, G- ja B-lukemat.

• HUOMAUTUS: kun asetat minkä tahansa kolmesta väristä TCS3200: n eteen, kirjoita muistiin kaikki punaisen, sinisen ja vihreän lukemat jokaiselle väripaperille, jotka sinun on syötettävä pääväritunnistusohjelmaan.

Vaihe 4: Lue vaihe 5 ja lataa pääkoodi alla (värientunnistusohjelma)

//-- -- -- -- Enter Values-- -- --// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //-- -- -- -- -- -- -- -- -- -- -- //

Vaihe 5: Korvaa edellisessä koodissa arvot arvoillasi, jotka merkitsit äskettäin:

//--------Program Developed by R.GIRISH-------// const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int frequency1 = 0 int frequency2 = 0 int frequency3 = 0 int state = LOW int state1 = LOW int state2 = HIGH void setup() { Serial.begin(9600) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() ') delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) frequency3 = pulseIn(out, state) Serial.print(' Blue = ') Serial.println(frequency3) delay(100) Serial.println('-----------------------------') delay(400) //---------Program Developed by R.GIRISH---------//

Kun asetit punaisen paperin anturille, sinulla olisi kolme lukemaa, esimerkiksi R = 56 | G = 78 | B = 38.

Aseta arvot 56, 78, 38 näin:

// PUNAISEKSI Väri:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Vastaavasti muille kahdelle värille ja lataa koodi.

Vaihe 6:

• Avaa sarjamittari ja aseta mikä tahansa kolmesta väristä anturin eteen.
• Näet värien tunnistamisen sarjamoduulissa samanaikaisesti, vastaava värirele aktivoituu.

• Olet poistanut releen käytöstä painamalla Arduino-kortin nollauspainiketta.

HUOMAUTUS 1: Piiri ei välttämättä tunnista värejä, jos asetat kalibroinnin jälkeen hieman erilaisen PUNAISEN, VIHREÄN, SINISEN värisen esineen / paperin sävyn / sävyn. Toisin sanoen, sinun on käytettävä täsmälleen samaa värillistä esinettä / paperia värien havaitsemiseen ja releen laukaisemiseen.

HUOMAUTUS 2: Ympäröivä valo voi vaikuttaa värientunnistukseen, joten pidä tasainen valo anturin lähellä kalibroinnin aikana ja myös havaitessasi värejä.

Kirjoittajan prototyyppi:

Arduino-värianturin prototyyppi

Jos sinulla on kysyttävää tästä projektista, ilmoita kommenttiosassa, saatat saada nopean vastauksen.




Edellinen: TSOP17XX-antureiden käyttö mukautetuilla taajuuksilla Seuraava: Useita akkulaturipiirejä käyttämällä kondensaattoria