Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.43 KB | None | 0 0
  1. #include <Servo.h>
  2. #include <Wire.h>
  3. #include "Adafruit_TCS34725.h"
  4. #include <AccelStepper.h>
  5.  
  6. #define HALFSTEP 8
  7. #define stepperPin1 2
  8. #define stepperPin2 3
  9. #define stepperPin3 4
  10. #define stepperPin4 5
  11.  
  12. int limitSwitch = 8;
  13. int takki = 10;
  14.  
  15. int position1 = 55;
  16. int position2 = 545;
  17. int position3 = 960;
  18. int position4 = 1380;
  19. int position5 = 1780;
  20. int position6 = 2190;
  21. int position7 = 2730;
  22.  
  23. int demoDelay = 1500;
  24. int state = HIGH;
  25. int reading;
  26. int previous = LOW;
  27. int OnOff = 0;
  28. int color = 0;
  29. long time = 0;
  30. long debounce = 200;
  31. Servo myservo;
  32.  
  33. AccelStepper stepper(HALFSTEP, stepperPin1, stepperPin3, stepperPin2, stepperPin4);
  34. Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
  35.  
  36. void setup() {
  37.  
  38. Serial.begin(9600);
  39. myservo.attach(9);
  40. pinMode(takki, INPUT);
  41. if (tcs.begin()) {
  42. Serial.println("Found sensor");
  43.  
  44. } else {
  45. Serial.println("No TCS34725 found ... check your connections");
  46. while (1);
  47. }
  48.  
  49. pinMode(limitSwitch, INPUT);
  50. stepper.setMaxSpeed(300);
  51. stepper.setAcceleration(100);
  52. stepper.setSpeed(300);
  53. stepper.moveTo(-4096);
  54. while (digitalRead(limitSwitch)) {
  55. stepper.run();
  56. }
  57. stepper.setCurrentPosition(0);
  58. stepper.setMaxSpeed(1000);
  59. stepper.setAcceleration(100);
  60. stepper.setSpeed(1000);
  61. stepper.moveTo(4096);
  62. }
  63.  
  64.  
  65.  
  66.  
  67.  
  68. void loop() {
  69.  
  70. reading = digitalRead(takki);
  71. if (reading == HIGH && previous == LOW && millis() - time > debounce) {
  72. if (state == HIGH) {
  73. state = LOW;
  74. Serial.print("ON\n");
  75. OnOff = 1;
  76.  
  77. }
  78. else {
  79. state = HIGH;
  80. Serial.print("OFF\n");
  81. OnOff = 0;
  82. }
  83. time = millis();
  84. }
  85. previous = reading;
  86.  
  87. while (OnOff == 1) {
  88.  
  89.  
  90. myservo.write(160); // Byrjunarstaða
  91. delay(1000);
  92.  
  93. myservo.write(80); // Skynjarastaða
  94. delay(1000);
  95. uint16_t clear, red, green, blue;
  96. tcs.setInterrupt(false); // turn on LED
  97. delay(60); // takes 50ms to read
  98. tcs.getRawData(&red, &green, &blue, &clear);
  99. tcs.setInterrupt(true); // turn off LED
  100. Serial.print("\nC:\t"); Serial.print(clear);
  101. Serial.print("\tR:\t"); Serial.print(red);
  102. Serial.print("\tG:\t"); Serial.print(green);
  103. Serial.print("\tB:\t"); Serial.println(blue);
  104. delay(1000);
  105.  
  106. if (clear >= 220 & red >= 70 & red <= 120 & blue > 80) {
  107. color = 1;
  108. Serial.print("\tColor: Green\t");
  109. while (stepper.currentPosition() != position2) {
  110. stepper.moveTo(position2);
  111. stepper.run();
  112. }
  113. myservo.write(0);
  114. }
  115. if (clear >= 170 & red >= 40 & red <= 100 & green >= 60 & green <= 100 & blue >= 50 & blue <= 100) {
  116. color = 1;
  117. Serial.print("\tColor: Blue\t");
  118. while (stepper.currentPosition() != position3) {
  119. stepper.moveTo(position3);
  120. stepper.run();
  121. }
  122. myservo.write(0);
  123. }
  124. if (clear >= 170 & clear <= 280 & red >= 120 & red <= 170 & green >= 45 & green <= 70 & blue >= 30 & blue <= 60) {
  125. color = 1;
  126. Serial.print("\tColor: Red\t");
  127. while (stepper.currentPosition() != position4) {
  128. stepper.moveTo(position4);
  129. stepper.run();
  130. }
  131. myservo.write(0);
  132. }
  133. if (clear >= 400 & red >= 230 & green >= 120 & blue <= 100) {
  134. color = 1;
  135. Serial.print("\tColor: Yellow\t");
  136. while (stepper.currentPosition() != position5) {
  137. stepper.moveTo(position5);
  138. stepper.run();
  139. }
  140. myservo.write(0);
  141. }
  142. if (clear >= 140 & clear <= 200 & red >= 60 & red <= 100 & green >= 40 & green <= 80 & blue <= 60) {
  143. color = 1;
  144. Serial.print("\tColor: Brown\t");
  145. while (stepper.currentPosition() != position6) {
  146. stepper.moveTo(position6);
  147. stepper.run();
  148. }
  149. myservo.write(0);
  150. }
  151. if (clear >= 300 & clear <= 400 & red >= 150 & red <= 280 & green >= 80 & green <= 120 & blue >= 30 & blue <= 100) {
  152. color = 1;
  153. Serial.print("\tColor: Orange\t");
  154. while (stepper.currentPosition() != position7) {
  155. stepper.moveTo(position7);
  156. stepper.run();
  157. }
  158. myservo.write(0);
  159. }
  160. else if (color == 0) {
  161. Serial.print("\nColor : Faliure\t");
  162. while (stepper.currentPosition() != position1) {
  163. stepper.moveTo(position1);
  164. stepper.run();
  165. }
  166. myservo.write(0);
  167. }
  168.  
  169. delay(2000);
  170. color = 0;
  171.  
  172. }
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement