Advertisement
Guest User

Main code

a guest
Oct 15th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.31 KB | None | 0 0
  1. #include <AFMotor.h>
  2. #include <SoftwareSerial.h>
  3. #include "DFRobotDFPlayerMini.h"
  4. #include <Servo.h>
  5.  
  6. //distance en wachttijd array
  7. int distance[6] = {6, 76, 66, 68, 77, 65};
  8. int timeUp[6] = {16, 16, 16, 16, 16, 16};
  9.  
  10. int lastDistance = 0;
  11. int moveDistance;
  12.  
  13. // parameter 3 word in deze var gebouwd
  14. int getParam3; // to build the number from serial
  15. byte serialNumber = 0; // to store the ASCI number from serial
  16.  
  17. // de tabel bestaat uit 6 rijen (flessen) elke rij heeft 3 parameters (kolommen)
  18. int bottles = 6; // how many optic stations there are - you also need to update line 7
  19. int parameterCount = 3; //number of seeting to be stored in array for each optic
  20.  
  21. // voor het uitlezen van de serial monitor hebben we 2 getallen nodig
  22. int parameterSize = 2; //the required number of digit for each parameter being sent
  23.  
  24. // de tabel waar alle gegevens voor het drankje worden opgeslagen
  25. int tabel[6][1] = {
  26. };
  27.  
  28. // knop linken aan arduino
  29. const int buttonPin = 35;
  30. //const int noodKnop = A3;
  31.  
  32.  
  33. // de knop status (niet ingdrukt)
  34. int buttonState = 0; // current state of the button
  35.  
  36.  
  37. //stepper motorenaansluiten op juiste poorten
  38. AF_Stepper horizontaal(200, 1);
  39.  
  40. SoftwareSerial mySerial(3, 4);
  41.  
  42. // de rgb led linken aan de arduino
  43. int bluePin = 44;
  44. int redPin = 45;
  45. int greenPin = 46;
  46.  
  47. int RELAY_1 = 22;
  48. int RELAY_2 = 23;
  49. int RELAY_3 = 24;
  50. int RELAY_4 = 25;
  51.  
  52. Servo servo;
  53.  
  54. //int pos = 25;
  55. //int maxAngle = 100 ;
  56. //int d = 1000;
  57.  
  58.  
  59. // aantal vars om te bepalen of de locatie van de raft is bepaald en of er een drankje gemixt mag worden
  60. int raftFound = false;
  61. int drinkRequested = false;
  62.  
  63.  
  64. void setup() {
  65.  
  66. // for the contact switch
  67. // initialize the button pin as a input:
  68. pinMode(buttonPin, INPUT_PULLUP);
  69. //pinMode(noodKnop, INPUT);
  70. // initialize the LED as an output:
  71. pinMode(LED_BUILTIN, OUTPUT);
  72. // initialize serial communication:
  73.  
  74. Serial.begin(9600);
  75. mySerial.begin(9600);
  76.  
  77.  
  78. // For the stepper motors
  79.  
  80. horizontaal.setSpeed(150);
  81.  
  82. //--------------------------------
  83.  
  84. // For LED
  85.  
  86. pinMode(redPin, OUTPUT);
  87. pinMode(greenPin, OUTPUT);
  88. pinMode(bluePin, OUTPUT);
  89.  
  90.  
  91. //-------------------------------
  92.  
  93. pinMode(RELAY_1, OUTPUT);
  94. pinMode(RELAY_2, OUTPUT);
  95. pinMode(RELAY_3, OUTPUT);
  96. pinMode(RELAY_4, OUTPUT);
  97.  
  98. digitalWrite(RELAY_1, HIGH);
  99. digitalWrite(RELAY_2, HIGH);
  100. digitalWrite(RELAY_3, HIGH);
  101. digitalWrite(RELAY_4, HIGH);
  102.  
  103. // servo.attach(10);
  104. }
  105.  
  106.  
  107. void loop(){
  108.  
  109.  
  110. //Lets find the location of the float:
  111. if (raftFound == false){
  112. Serial.println("Raft location not known yet");
  113. setColor(255, 0, 0); // red
  114. delay(1000);
  115. Serial.print("Looking for the raft...");
  116. buttonState = digitalRead(buttonPin); // read the pushbutton input pin:
  117. //move the stepper until the contact switch is triggered
  118. while(buttonState == LOW && raftFound == false){
  119. horizontaal.step(1, BACKWARD, SINGLE);
  120. buttonState = digitalRead(buttonPin);
  121. }
  122. raftFound = true;
  123. Serial.println("ahh! There it is. :)");
  124. horizontaal.release();
  125. setColor(0, 255, 0);
  126. delay(200); // Delay a little bit to calm everything down
  127. }
  128.  
  129.  
  130. ////working through the dispensing instructions until drink is complete and paddle is at last optic position:
  131. //if (drinkRequested == true){
  132. // for (int maxDrink = 0; maxDrink < maxDrinks; maxDrink++) { //Move to pump
  133. // NoodFunction2();
  134. //horizontaal.step((tabel[maxDrink][0] * 10), BACKWARD, SINGLE); //move the paddle according to instruciton, x10 to allow us to compress serial data transfer length
  135. //NoodFunction2();
  136. //horizontaal.release(); // let the motor's magnets relax
  137. ////dispense what is required then resume moving to the next position:
  138. //while(tabel[maxDrink][2] > 0 && raftFound == true){
  139. // delay(500);
  140. // verticaal.step(2900, BACKWARD, SINGLE);
  141. // delay((tabel[maxDrink][1]) * 10);
  142. // NoodFunction();
  143. // delay((tabel[maxDrink][1]) * 10);
  144. // NoodFunction();
  145. // delay((tabel[maxDrink][1]) * 10);
  146. // NoodFunction();
  147. // delay((tabel[maxDrink][1]) * 10);
  148. // NoodFunction();
  149. // delay((tabel[maxDrink][1]) * 10);
  150. // NoodFunction();
  151. // delay((tabel[maxDrink][1]) * 10);
  152. // NoodFunction();
  153. // delay((tabel[maxDrink][1]) * 10);
  154. // NoodFunction();
  155. // delay((tabel[maxDrink][1]) * 10);
  156. // NoodFunction();
  157. // delay((tabel[maxDrink][1]) * 10);
  158. // NoodFunction();
  159. // delay((tabel[maxDrink][1]) * 10);
  160. // NoodFunction();
  161. // delay((tabel[maxDrink][1]) * 10);
  162. // NoodFunction();
  163. // verticaal.step(2800, FORWARD, SINGLE);
  164. // verticaal.release();
  165. // tabel[maxDrink][2] = tabel[maxDrink][2]-1;
  166. // delay(500);
  167. //
  168. // }
  169. // }
  170. // raftFound = false;
  171. //if (raftFound == false){
  172. // Serial.println("Raft location not known yet");
  173. // setColor(255, 0, 0); // red
  174. // delay(1000);
  175. // Serial.print("Looking for the raft...");
  176. // buttonState = digitalRead(buttonPin); // read the pushbutton input pin:
  177. ////move the stepper until the contact switch is triggered
  178. // while(buttonState == LOW && raftFound == false){
  179. // horizontaal.step(10, FORWARD, SINGLE);
  180. // buttonState = digitalRead(buttonPin);
  181. // }
  182. // raftFound = true;
  183. // Serial.println("ahh! There it is. :)");
  184. // horizontaal.release();
  185. // setColor(0, 255, 0); // blue
  186. // delay(700); // Delay a little bit to calm everything down
  187. //}
  188. //
  189. // //Drink complete
  190. // Serial.println("Drinks ready, enjoy.");
  191. // setColor(0, 0, 255); // green
  192. // drinkRequested = false;
  193. // raftFound=false;
  194. //}
  195.  
  196.  
  197. if(raftFound){
  198. while(drinkRequested == false){
  199. delay(200);
  200. if (Serial.available()) {
  201. for (int maxDrink = 0; maxDrink < 6; maxDrink++){
  202. if (Serial.available()) {
  203. serialNumber = mySerial.read(); /* load the number from serial buffer */
  204. serialNumber = serialNumber - 48; /* convert number to text number */
  205. moveDistance = distance[serialNumber] - lastDistance;
  206. Serial.print(moveDistance);
  207. tabel[maxDrink][0] = moveDistance;
  208. lastDistance = distance[serialNumber];
  209. } else {
  210. delay(250);
  211. serialNumber = mySerial.read(); /* load the number from serial buffer */
  212. serialNumber = serialNumber - 48; /* convert number to text number */
  213. moveDistance = distance[serialNumber] - lastDistance;
  214. Serial.print(moveDistance);
  215. tabel[maxDrink][0] = moveDistance;
  216. lastDistance = distance[serialNumber];
  217. }
  218. serialNumber = mySerial.read(); /* to clear the comma from the buffer */
  219. }
  220. CheckArray();
  221. drinkRequested = true;
  222. }
  223. }
  224. }
  225. //
  226. //
  227. //
  228. // int c;
  229. //
  230. // if (mySerial.available()) {
  231. // c = mySerial.read();
  232. // Serial.println("Got input:");
  233. // if (c != 0)
  234. // {
  235. // // Non-zero input means "turn on LED".
  236. // Serial.println(" on");
  237. // }
  238. // else
  239. // {
  240. // // Input value zero means "turn off LED".
  241. // Serial.println(" off");
  242. // }
  243. // }
  244.  
  245.  
  246.  
  247.  
  248. }
  249.  
  250.  
  251. void CheckArray(){
  252. //print out the array to check it:
  253. for(int i = 0; i < 6; i++) {
  254. Serial.print(tabel[i][0]);
  255. Serial.print(",");
  256. Serial.println();
  257. }
  258. }
  259. //
  260. //void(* resetFunc) (void) = 0;
  261. //
  262. //void dance(){
  263. // horizontaal.step(400, BACKWARD, SINGLE);
  264. // setColor(0, 255, 0); // blue
  265. // horizontaal.step(200, FORWARD, SINGLE);
  266. // verticaal.step(400, FORWARD, SINGLE);
  267. // setColor(0, 0, 255); // blue
  268. // horizontaal.step(400, BACKWARD, SINGLE);
  269. // setColor(0, 255, 0); // blue
  270. // verticaal.step(400, BACKWARD, SINGLE);
  271. // setColor(255, 0, 0); // blue
  272. // horizontaal.step(200, BACKWARD, SINGLE);
  273. // setColor(0, 0, 255); // blue
  274. // verticaal.step(800, FORWARD, SINGLE);
  275. // setColor(0, 255, 0); // blue
  276. // horizontaal.step(200, FORWARD, SINGLE);
  277. // setColor(255, 0, 0); // blue
  278. // verticaal.step(400, BACKWARD, SINGLE);
  279. // setColor(0, 0, 255); // blue
  280. // horizontaal.step(200, BACKWARD, SINGLE);
  281. // setColor(0, 255, 0); // blue
  282. // verticaal.step(400, BACKWARD, SINGLE);
  283. // setColor(255, 0, 0); // blue
  284. // horizontaal.step(400, BACKWARD, SINGLE);
  285. // setColor(0, 0, 255); // blue
  286. // horizontaal.step(200, FORWARD, SINGLE);
  287. // setColor(0, 255, 0); // blue
  288. // horizontaal.step(400, BACKWARD, SINGLE);
  289. // setColor(255, 0, 0); // blue
  290. // horizontaal.step(200, FORWARD, SINGLE);
  291. // resetFunc();
  292. //}
  293. //
  294. //void NoodFunction(){
  295. // int val = analogRead(A3);
  296. // if(val > 200){
  297. // verticaal.step(2900, FORWARD, SINGLE);
  298. // resetFunc();
  299. // }
  300. //
  301. //}
  302. //
  303. //void NoodFunction2(){
  304. // int val = analogRead(A3);
  305. // if(val > 200){
  306. // resetFunc();
  307. // }
  308. //
  309. //}
  310. //
  311. void setColor(int red, int green, int blue)
  312. {
  313. // #ifdef COMMON_ANODE
  314. // red = 255 - red;
  315. // green = 255 - green;
  316. // blue = 255 - blue;
  317. // #endif
  318. analogWrite(redPin, red);
  319. analogWrite(greenPin, green);
  320. analogWrite(bluePin, blue);
  321. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement