Stap 5: Testen en grafieken van de resultaten
Wanneer u klaar bent met het maken van uw sensoren, steek ze in je brood board en sluit deze dan aan je Arduino.
Arduino | Sensor
pin 9---R
pin 10---G
PIN 11---B
GND---Gnd
VCC---Vcc
A0---analoog
Plaats een wit object voor de sensor en de bepaalde programmacode uitvoeren op arduino:
int LED[3] = {9,10,11},i, j ; // DECLARE R G B PINS void setup() { Serial.begin(9600); for(i=0;i<3;i++) // set LED pins to OUTPUT pinMode(LED[i], OUTPUT); } void loop() { for(j = 0 ; j < 3 ; j++) // CYCLE PINS { for(i =0 ; i < 255 ; i++) // CYCLE VALUES { analogWrite(LED[j],i); Serial.println(1024-analogRead(0)); // PRINT VALUES delay(100); } analogWrite(LED[j],0); delay(100); } }
En deze code uitvoert in verwerking:
import processing.serial.*; Serial myPort; // The serial port float xPos = 20,prevtime=0; // horizontal position of the graph void setup () { // set the window size: size(1300, 700); // List all the available serial ports println(Serial.list()); // I know that the first port in the serial list on my mac // is always my Arduino, so I open Serial.list()[0]. // Open whatever port is the one you're using. myPort = new Serial(this, Serial.list()[1], 9600); // don't generate a serialEvent() unless you get a newline character: myPort.bufferUntil('\n'); // set inital background: background(255); } void draw () { // everything happens in the serialEvent() } void serialEvent (Serial myPort) { // get the ASCII string: String inString = myPort.readStringUntil('\n'); if (inString != null) { // trim off any whitespace: inString = trim(inString); // convert to an int and map to the screen height: float inByte = float(inString); inByte = map(inByte, 0, 1023, 0, height); // draw the line: stroke(255,0,0); line(xPos, height, xPos, height - inByte); // at the edge of the screen, go back to the beginning: if(xPos>=width) { xPos=20; background(255); } else xPos+=0.7; } }
Probeer de codes en vertragingswaarden, de grafieken zal veranderen
Meer vertraging geeft nauwkeuriger grafieken
De grafiek vertelt duidelijk dat de variatie van helderheid ongegrond de PWM-waarden is niet dezelfde voor R, G, B leds en vandaar dat ze moeten gekalibreerd.