Din egen färgsensor med hjälp av lysdioder (5 / 8 steg)
Steg 5: Provning och rita in resultaten
När du har slutat göra din sensorer, koppla in dem i ditt bröd styrelse och ansluta den till din Arduino.
Arduino | Sensor
stift 9---R
PIN 10---G
stift 11---B
GND---Gnd
VCC---Vcc
A0---Analog
Placera ett vitt föremål framför sensorn och kör viss kod på arduino:
int LED [3] = {9,10,11}, i, j. DEKLARERA R G B PINS
void setup()
{
Serial.BEGIN(9600);
för (jag = 0; jag < 3; i ++) / / set LED stift till utgång
pinMode (LED [i], OUTPUT);
}
void loop()
{
för (j = 0; j < 3; j ++) / / cykel stift
{
för (jag = 0; jag < 255; i ++) / / cykel värden
{
analogWrite(LED[j],i);
Serial.println(1024-analogRead(0)); SKRIVA UT VÄRDEN
Delay(100);
}
analogWrite(LED[j],0);
Delay(100);
}
}
Och kör den här koden i bearbetning:
import processing.serial.*;
Seriella myPort; Den seriella porten
flyta xPos = 20, prevtime = 0; horisontellt läge av grafen
Ogiltiga inställningar () {
Ange fönstrets storlek:
size(1300, 700);
Lista över alla tillgängliga seriella portar
println(Serial.list());
Jag vet att den första porten i listan följetong på min mac
är alltid min Arduino, så jag öppnar Serial.list() [0].
Öppna oavsett port är den du använder.
myPort = ny följetong (denna, Serial.list() [1], 9600);
inte generera ett serialEvent() om du inte får ett radmatningstecken:
myPort.bufferUntil('\n');
Ange inledande bakgrund:
Background(255);
}
void Rita () {
allt händer i serialEvent()
}
void serialEvent (Serial myPort) {
få den ASCII-strängen:
InString sträng = myPort.readStringUntil('\n');
om (inString! = null) {
rensa bort alla blanksteg:
inString = trim(inString);
konvertera till en int och karta till skärmhöjd:
flyta inByte = float(inString);
inByte = karta (inByte, 0, 1023, 0, höjd);
Rita linjen:
stroke(255,0,0);
linje (xPos, höjd, xPos, höjd - inByte);
vid kanten av skärmen, gå tillbaka till början:
om (xPos > = bredd)
{
xPos = 20;
Background(255);
}
annat
xPos += 0,7;
}
}
Prova att ändra koder och förskjutningsvärden, grafer kommer att ändra
Fler förseningar ger mer exakt grafer
Grafen tydligt berättar att variationen i ljusstyrka WRT PWM värden är inte samma för R, G, B lysdioder och därmed de behöver kalibreras.