Advertisement
chowdhury_riham

Color detecting Arduino code

Nov 26th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.16 KB | None | 0 0
  1. #define NO_SAMPLES 100u
  2. #define THRESHOLD 5u
  3. // Color Thresholds
  4. #define IDLE_RED_THRESHOLD 287u
  5. #define IDLE_GREEN_THRESHOLD 95u
  6. #define IDLE_BLUE_THRESHOLD 303u
  7. #define RED_RED_THRESHOLD 164u
  8. #define RED_GREEN_THRESHOLD 72u
  9. #define RED_BLUE_THRESHOLD 174u
  10. #define GREEN_RED_THRESHOLD 207u
  11. #define GREEN_GREEN_THRESHOLD 65u
  12. #define GREEN_BLUE_THRESHOLD 219u
  13. #define BLUE_RED_THRESHOLD 227u
  14. #define BLUE_GREEN_THRESHOLD 65u
  15. #define BLUE_BLUE_THRESHOLD 241u
  16. #define L_GRN_RED_THRESHOLD 157u
  17. #define L_GRN_GREEN_THRESHOLD 51u
  18. #define L_GRN_BLUE_THRESHOLD 166u
  19. #define YLOW_RED_THRESHOLD 107u
  20. #define YLOW_GREEN_THRESHOLD 46u
  21. #define YLOW_BLUE_THRESHOLD 114u
  22. #define ORNG_RED_THRESHOLD 121u
  23. #define ORNG_GREEN_THRESHOLD 52u
  24. #define ORNG_BLUE_THRESHOLD 128u
  25. // Sensor Connections
  26. const byte S0 = 8;
  27. const byte S1 = 9;
  28. const byte S2 = 10;
  29. const byte S3 = 11;
  30. const byte Sout = 12;
  31. const byte RED = 3;
  32. const byte GREEN = 5;
  33. const byte BLUE = 6;
  34. uint16_t sumOfSamples = 0;
  35. uint16_t redData = 0;
  36. uint16_t greenData = 0;
  37. uint16_t blueData = 0;
  38. void setup()
  39. {
  40. pinMode(S0, OUTPUT);
  41. pinMode(S1, OUTPUT);
  42. pinMode(S2, OUTPUT);
  43. pinMode(S3, OUTPUT);
  44. pinMode(Sout, INPUT);
  45. // Setting frequency-scaling to 20%
  46. digitalWrite(S0,HIGH);
  47. digitalWrite(S1,LOW);
  48. Serial.begin(115200);
  49. }
  50. void loop()
  51. {
  52. int i = 0;
  53. // Apply Red Filter
  54. digitalWrite(S2,LOW);
  55. digitalWrite(S3,LOW);
  56. delay(1);
  57. sumOfSamples = 0;
  58. for (i=0; i < NO_SAMPLES; i++)
  59. {
  60. // Reading the Pulse Width
  61. sumOfSamples += pulseIn(Sout, LOW);
  62. }
  63. redData = sumOfSamples/NO_SAMPLES;
  64. Serial.print("R = ");
  65. Serial.print(redData);
  66. delay(100);
  67. // Apply Green Filter
  68. digitalWrite(S2, HIGH);
  69. digitalWrite(S3, HIGH);
  70. delay(1);
  71. sumOfSamples = 0;
  72. for (i=0; i < NO_SAMPLES; i++)
  73. {
  74. // Reading the Pulse Width
  75. sumOfSamples += pulseIn(Sout, LOW);
  76. }
  77. greenData = sumOfSamples/NO_SAMPLES;
  78. Serial.print(" G = ");
  79. Serial.print(greenData);
  80. delay(100);
  81. // Apply Blue Filter
  82. digitalWrite(S2, LOW);
  83. digitalWrite(S3, HIGH);
  84. delay(1);
  85. sumOfSamples = 0;
  86. for (i=0; i < NO_SAMPLES; i++)
  87. {
  88. // Reading the Pulse Width
  89. sumOfSamples += pulseIn(Sout, LOW);
  90. }
  91. blueData = sumOfSamples/NO_SAMPLES;
  92. Serial.print(" B = ");
  93. Serial.print(blueData);
  94. Serial.println(" ");
  95. delay(100);
  96. if( isIdle() )
  97. {
  98. // Turn-Off All Led's
  99. Serial.println("All Led's Off");
  100. Set_RGB_Color(0,0,0);
  101. }
  102. if( isRed() )
  103. {
  104. // Turn-On Red Led
  105. Serial.println("Red Led");
  106. Set_RGB_Color(255u,0,0); // Red
  107. }
  108. if( isGreen() )
  109. {
  110. // Turn-On Green Led
  111. Serial.println("Green Led");
  112. Set_RGB_Color(0,255u,0); // Green
  113. }
  114. if( isBlue() )
  115. {
  116. // Turn-On Blue Led
  117. Serial.println("Blue Led");
  118. Set_RGB_Color(0,0,255u); // Blue
  119. }
  120. if( isYellow() )
  121. {
  122. // Turn-On Yellow Led
  123. Serial.println("Yellow Led");
  124. Set_RGB_Color(250,75,0); // Yellow
  125. }
  126. if( isLightGreen() )
  127. {
  128. // Turn-On Light Green Led
  129. Serial.println("Light Green Led");
  130. Set_RGB_Color(250,200,50); // Light Green
  131. }
  132. if( isOrange() )
  133. {
  134. // Turn-On Orange Led
  135. Serial.println("Orange Led");
  136. Set_RGB_Color(250,40,0); // Dark Yellow/ Orange
  137. }
  138. delay(2000);
  139. }
  140. boolean isIdle( void )
  141. {
  142. boolean status = false;
  143. if ( ((IDLE_RED_THRESHOLD-THRESHOLD) < redData)
  144. && (redData < (IDLE_RED_THRESHOLD+THRESHOLD)) )
  145. {
  146. if ( ((IDLE_GREEN_THRESHOLD-THRESHOLD) < greenData)
  147. && (greenData < (IDLE_GREEN_THRESHOLD+THRESHOLD)) )
  148. {
  149. if ( ((IDLE_BLUE_THRESHOLD-THRESHOLD) < blueData)
  150. && (blueData< (IDLE_BLUE_THRESHOLD+THRESHOLD)) )
  151. {
  152. status = true;
  153. }
  154. }
  155. }
  156. return status;
  157. }
  158. boolean isRed( void )
  159. {
  160. boolean status = false;
  161. if ( ((RED_RED_THRESHOLD-THRESHOLD) < redData)
  162. && (redData < (RED_RED_THRESHOLD+THRESHOLD)) )
  163. {
  164. if ( ((RED_GREEN_THRESHOLD-THRESHOLD) < greenData)
  165. && (greenData < (RED_GREEN_THRESHOLD+THRESHOLD)) )
  166. {
  167. if ( ((RED_BLUE_THRESHOLD-THRESHOLD) < blueData)
  168. && (blueData< (RED_BLUE_THRESHOLD+THRESHOLD)) )
  169. {
  170. status = true;
  171. }
  172. }
  173. }
  174. return status;
  175. }
  176. boolean isGreen( void )
  177. {
  178. boolean status = false;
  179. if ( ((GREEN_RED_THRESHOLD-THRESHOLD) < redData)
  180. && (redData < (GREEN_RED_THRESHOLD+THRESHOLD)) )
  181. {
  182. if ( ((GREEN_GREEN_THRESHOLD-THRESHOLD) < greenData)
  183. && (greenData < (GREEN_GREEN_THRESHOLD+THRESHOLD)) )
  184. {
  185. if ( ((GREEN_BLUE_THRESHOLD-THRESHOLD) < blueData)
  186. && (blueData< (GREEN_BLUE_THRESHOLD+THRESHOLD)) )
  187. {
  188. status = true;
  189. }
  190. }
  191. }
  192. return status;
  193. }
  194. boolean isBlue( void )
  195. {
  196. boolean status = false;
  197. if ( ((BLUE_RED_THRESHOLD-THRESHOLD) < redData)
  198. && (redData < (BLUE_RED_THRESHOLD+THRESHOLD)) )
  199. {
  200. if ( ((BLUE_GREEN_THRESHOLD-THRESHOLD) < greenData)
  201. && (greenData < (BLUE_GREEN_THRESHOLD+THRESHOLD)) )
  202. {
  203. if ( ((BLUE_BLUE_THRESHOLD-THRESHOLD) < blueData)
  204. && (blueData< (BLUE_BLUE_THRESHOLD+THRESHOLD)) )
  205. {
  206. status = true;
  207. }
  208. }
  209. }
  210. return status;
  211. }
  212. boolean isLightGreen( void )
  213. {
  214. boolean status = false;
  215. if ( ((L_GRN_RED_THRESHOLD-THRESHOLD) < redData)
  216. && (redData < (L_GRN_RED_THRESHOLD+THRESHOLD)) )
  217. {
  218. if ( ((L_GRN_GREEN_THRESHOLD-THRESHOLD) < greenData)
  219. && (greenData < (L_GRN_GREEN_THRESHOLD+THRESHOLD)) )
  220. {
  221. if ( ((L_GRN_BLUE_THRESHOLD-THRESHOLD) < blueData)
  222. && (blueData< (L_GRN_BLUE_THRESHOLD+THRESHOLD)) )
  223. {
  224. status = true;
  225. }
  226. }
  227. }
  228. return status;
  229. }
  230. boolean isYellow( void )
  231. {
  232. boolean status = false;
  233. if ( ((YLOW_RED_THRESHOLD-THRESHOLD) < redData)
  234. && (redData < (YLOW_RED_THRESHOLD+THRESHOLD)) )
  235. {
  236. if ( ((YLOW_GREEN_THRESHOLD-THRESHOLD) < greenData)
  237. && (greenData < (YLOW_GREEN_THRESHOLD+THRESHOLD)) )
  238. {
  239. if ( ((YLOW_BLUE_THRESHOLD-THRESHOLD) < blueData)
  240. && (blueData< (YLOW_BLUE_THRESHOLD+THRESHOLD)) )
  241. {
  242. status = true;
  243. }
  244. }
  245. }
  246. return status;
  247. }
  248. boolean isOrange( void )
  249. {
  250. boolean status = false;
  251. if ( ((ORNG_RED_THRESHOLD-THRESHOLD) < redData)
  252. && (redData < (ORNG_RED_THRESHOLD+THRESHOLD)) )
  253. {
  254. if ( ((ORNG_GREEN_THRESHOLD-THRESHOLD) < greenData)
  255. && (greenData < (ORNG_GREEN_THRESHOLD+THRESHOLD)) )
  256. {
  257. if ( ((ORNG_BLUE_THRESHOLD-THRESHOLD) < blueData)
  258. && (blueData< (ORNG_BLUE_THRESHOLD+THRESHOLD)) )
  259. {
  260. status = true;
  261. }
  262. }
  263. }
  264. return status;
  265. }
  266. void Set_RGB_Color( uint8_t red, uint8_t green, uint8_t blue)
  267. {
  268. analogWrite(RED, red);
  269. analogWrite(GREEN, green);
  270. analogWrite(BLUE, blue);
  271. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement