Here is the final version of the code which was uploaded to the Pic 14M to get an analogue signal for the color sensor.
CODE BEGINS:
-------------------------------------------------------------------
symbol redgreen = b3
symbol redblue = b4
symbol greenblue = b5
init:
pwmout 2,99,0
main:
low 1 ;red on
pause 125
readadc 0, b0 ;how much red?
pause 125
high 1 ;red off
low 2 ;green on
pause 125
readadc 0, b1 ;how much green?
pause 125
high 2 ;green off
low 3 ;blue on
pause 125
readadc 0, b2 ;how much blue?
pause 125
high 3 ;blue off
redgreen = b1-b0
redblue = b2-b0
greenblue = b2-b1
;readadc 4, b6
serout 0, N2400, (10,13)
serout 0, N2400, (#b0, " ",#b1, " ", #b2 )
if redgreen > 10 AND redgreen <> 10 AND redblue <150 then red
if redgreen <> 150 AND greenblue > 10 AND greenblue < 150then green
if redblue <> 150 AND greenblue <>150 then blue
low 4
low 5
goto main
red:
pwmout 2, 99, 0
high 4
low 5
goto main
green:
pwmout 2, 99, 150
high 4
high 5
goto main
blue:
high 5
low 4
pwmout 2, 99, 250
goto main
------------------------------------------------------------------------
CODE ENDS:
The sensor activates a 3 state LED which can emit a red green or blue light, and then measures the voltage level on an input pin which is connected to a CDS cell. the theory is that blue objects will reflect more light when a blue object is in front of it, and the resistance of the CDS cell will increase, thereby causing a corresponding voltage change on the input pin. The sensor measures voltage values for each of the color states and makes a decision based on the resultant data. The most difficult part of this project was getting the analogue signal to function properly. I spent at least an hour trying to get a coherent signal from the sensor, only to be informed that I forgot to comment out some of my debugging code.
It works now, and can interface with the vex brain! On to other projects!
No comments:
Post a Comment