|  |  | 
| 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>
 |  |