|
|
Riadok 1: |
Riadok 1: |
| == Software for Color Sensors ==
| | = Software for Color Sensors = |
| | |
| | == Basic demonstration == |
| | |
| | * TCS230 sensor: [http://ap.urpi.fei.stuba.sk/sscim/TCS230Demo01.bs2 BASIC Stamp II code] |
| | * ColorPAL sensor [http://ap.urpi.fei.stuba.sk/sscim/ColorPalDemo01.ino Arduino code] |
|
| |
|
|
| |
|
Riadok 6: |
Riadok 11: |
| Following Arduino code works with an original Parallax (or PhiPi) ColorDemo.exe program available at | | Following Arduino code works with an original Parallax (or PhiPi) ColorDemo.exe program available at |
| the following address: http://www.parallax.com/Portals/0/Downloads/docs/prod/sens/ColorPAL_programs.zip | | the following address: http://www.parallax.com/Portals/0/Downloads/docs/prod/sens/ColorPAL_programs.zip |
| | |
| | * TCS230 sensor: [http://ap.urpi.fei.stuba.sk/sscim/TCS230Demo02.bs2 BASIC Stamp II code] |
| | * ColorPAL sensor [http://ap.urpi.fei.stuba.sk/sscim/ColorPalDemo02.ino Arduino code] |
|
| |
|
| [[Obrázok:ColorMatchDemoExe.png|center]] | | [[Obrázok:ColorMatchDemoExe.png|center]] |
|
| |
|
| <source lang="c">
| |
| /*====================================================
| |
| / Connect ColorPAL SIG signal to Arduino pin 2 and 3
| |
| / Baud Rate = 9600 kbps
| |
| / Works with Arduino 0.20, not with 1.00 and above?
| |
| /====================================================*/
| |
|
| |
| #include <SoftwareSerial.h>
| |
|
| |
| SoftwareSerial ColorPAL(2, 3); // rx = 2, tx = 3
| |
|
| |
| int red, grn, blu;
| |
|
| |
| int gotcolor = 0;
| |
| int letter;
| |
|
| |
| char colorByte[9];
| |
|
| |
| void setup(){
| |
|
| |
| // for colordemo 9600,
| |
| Serial.begin(9600); // Start communication with serial port read value
| |
| ColorPAL.begin(4800); // Send signal to led to read value
| |
|
| |
| pinMode(2,INPUT); // serial pin out from color pal
| |
| pinMode(3,INPUT); // from same serial pin, signal pulls up, sends, pulls down, reads
| |
| digitalWrite(2,HIGH); // Enable the pull-up resistor
| |
| digitalWrite(3,HIGH); // Enable the pull-up resistor
| |
|
| |
| pinMode(2,OUTPUT); // send signal out
| |
| pinMode(3,OUTPUT);
| |
| digitalWrite(2,LOW); // turn pin off so pin 3 can go high
| |
| digitalWrite(3,LOW);
| |
|
| |
| pinMode(2,INPUT); // Input signal to print
| |
| pinMode(3,INPUT);
| |
|
| |
| delay(20);
| |
|
| |
| while( digitalRead(2) != HIGH || digitalRead(3) != HIGH ) {
| |
| delay(50);
| |
| }
| |
|
| |
|
| |
| pinMode(2,OUTPUT);
| |
| pinMode(3,OUTPUT);
| |
| digitalWrite(2,LOW);
| |
| digitalWrite(3,LOW);
| |
| delay(100); // spec is 80, but not all ColorPAL units work with 80
| |
|
| |
| pinMode(2,INPUT);
| |
| pinMode(3,OUTPUT);
| |
| delay(100);
| |
|
| |
|
| |
| delay(20);
| |
| ColorPAL.begin(4800);
| |
| ColorPAL.print("= (00 $ m) !"); // set up loop to continuously send color data
| |
| pinMode(3,INPUT);
| |
|
| |
|
| |
| }
| |
|
| |
| // This oscillates back and forth on one wire to turn off led, send signal,
| |
| // turn on led, read signal. very fast strobe read - arduino is not capable of
| |
| // one wire signal communication over digital ports, so this is a way around
| |
| // that over 2 wires communicating with 1 pin on the sensor.
| |
| //---------------------------------
| |
|
| |
| void loop()
| |
| {
| |
|
| |
| readColor();
| |
| gotcolor = 0;
| |
| delay(100);
| |
|
| |
| } /* End of loop() */
| |
|
| |
|
| |
| /* ***************************************** */
| |
| /* Function readColor() */
| |
| /* Reads ColorPAL, putting results in the */
| |
| /* red, grn, blu variables */
| |
| /* ***************************************** */
| |
| void readColor()
| |
| {
| |
| char rByte[9];
| |
| char dummy[4];
| |
|
| |
| // delay(20);
| |
| // ColorPAL.begin(4800);
| |
| // ColorPAL.print("= (00 $ m) !"); // set up loop to continuously send color data
| |
|
| |
|
| pinMode(3,INPUT);
| | == Processing software == |
| gotcolor = 0;
| |
| while (gotcolor == 0)
| |
| {
| |
| rByte[0] = ColorPAL.read();
| |
| if( rByte[0] == '$' )
| |
| {
| |
| gotcolor = 1;
| |
| for (int i=0; i<9; i++)
| |
| {
| |
| rByte[i] = ColorPAL.read();
| |
| }
| |
|
| |
|
| Serial.print("R0");
| | * TCS230 sensor: [http://ap.urpi.fei.stuba.sk/sscim/TCS230Demo03.bs2 BASIC Stamp II code] |
| Serial.print(rByte[0]);
| | * ColorPAL sensor [http://ap.urpi.fei.stuba.sk/sscim/ColorPalDemo03.ino Arduino code] |
| Serial.print(rByte[1]);
| |
| Serial.print(rByte[2]);
| |
| Serial.print(" G0");
| |
| Serial.print(rByte[3]);
| |
| Serial.print(rByte[4]);
| |
| Serial.print(rByte[5]);
| |
| Serial.print(" B0");
| |
| Serial.print(rByte[6]);
| |
| Serial.print(rByte[7]);
| |
| Serial.print(rByte[8]);
| |
| Serial.println();
| |
|
| |
|
| }
| | [[Obrázok:ColorProcessingDemo.png|center]] |
| }
| |
| } /* End of function readColor() */
| |
| </source>
| |