Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <AFMotor.h>
- #include <SoftwareSerial.h>
- #include "DFRobotDFPlayerMini.h"
- #include <Servo.h>
- //distance en wachttijd array
- int distance[6] = {6, 76, 66, 68, 77, 65};
- int timeUp[6] = {16, 16, 16, 16, 16, 16};
- int lastDistance = 0;
- int moveDistance;
- // parameter 3 word in deze var gebouwd
- int getParam3; // to build the number from serial
- byte serialNumber = 0; // to store the ASCI number from serial
- // de tabel bestaat uit 6 rijen (flessen) elke rij heeft 3 parameters (kolommen)
- int bottles = 6; // how many optic stations there are - you also need to update line 7
- int parameterCount = 3; //number of seeting to be stored in array for each optic
- // voor het uitlezen van de serial monitor hebben we 2 getallen nodig
- int parameterSize = 2; //the required number of digit for each parameter being sent
- // de tabel waar alle gegevens voor het drankje worden opgeslagen
- int tabel[6][1] = {
- };
- // knop linken aan arduino
- const int buttonPin = 35;
- //const int noodKnop = A3;
- // de knop status (niet ingdrukt)
- int buttonState = 0; // current state of the button
- //stepper motorenaansluiten op juiste poorten
- AF_Stepper horizontaal(200, 1);
- SoftwareSerial mySerial(3, 4);
- // de rgb led linken aan de arduino
- int bluePin = 44;
- int redPin = 45;
- int greenPin = 46;
- int RELAY_1 = 22;
- int RELAY_2 = 23;
- int RELAY_3 = 24;
- int RELAY_4 = 25;
- Servo servo;
- //int pos = 25;
- //int maxAngle = 100 ;
- //int d = 1000;
- // aantal vars om te bepalen of de locatie van de raft is bepaald en of er een drankje gemixt mag worden
- int raftFound = false;
- int drinkRequested = false;
- void setup() {
- // for the contact switch
- // initialize the button pin as a input:
- pinMode(buttonPin, INPUT_PULLUP);
- //pinMode(noodKnop, INPUT);
- // initialize the LED as an output:
- pinMode(LED_BUILTIN, OUTPUT);
- // initialize serial communication:
- Serial.begin(9600);
- mySerial.begin(9600);
- // For the stepper motors
- horizontaal.setSpeed(150);
- //--------------------------------
- // For LED
- pinMode(redPin, OUTPUT);
- pinMode(greenPin, OUTPUT);
- pinMode(bluePin, OUTPUT);
- //-------------------------------
- pinMode(RELAY_1, OUTPUT);
- pinMode(RELAY_2, OUTPUT);
- pinMode(RELAY_3, OUTPUT);
- pinMode(RELAY_4, OUTPUT);
- digitalWrite(RELAY_1, HIGH);
- digitalWrite(RELAY_2, HIGH);
- digitalWrite(RELAY_3, HIGH);
- digitalWrite(RELAY_4, HIGH);
- // servo.attach(10);
- }
- void loop(){
- //Lets find the location of the float:
- if (raftFound == false){
- Serial.println("Raft location not known yet");
- setColor(255, 0, 0); // red
- delay(1000);
- Serial.print("Looking for the raft...");
- buttonState = digitalRead(buttonPin); // read the pushbutton input pin:
- //move the stepper until the contact switch is triggered
- while(buttonState == LOW && raftFound == false){
- horizontaal.step(1, BACKWARD, SINGLE);
- buttonState = digitalRead(buttonPin);
- }
- raftFound = true;
- Serial.println("ahh! There it is. :)");
- horizontaal.release();
- setColor(0, 255, 0);
- delay(200); // Delay a little bit to calm everything down
- }
- ////working through the dispensing instructions until drink is complete and paddle is at last optic position:
- //if (drinkRequested == true){
- // for (int maxDrink = 0; maxDrink < maxDrinks; maxDrink++) { //Move to pump
- // NoodFunction2();
- //horizontaal.step((tabel[maxDrink][0] * 10), BACKWARD, SINGLE); //move the paddle according to instruciton, x10 to allow us to compress serial data transfer length
- //NoodFunction2();
- //horizontaal.release(); // let the motor's magnets relax
- ////dispense what is required then resume moving to the next position:
- //while(tabel[maxDrink][2] > 0 && raftFound == true){
- // delay(500);
- // verticaal.step(2900, BACKWARD, SINGLE);
- // delay((tabel[maxDrink][1]) * 10);
- // NoodFunction();
- // delay((tabel[maxDrink][1]) * 10);
- // NoodFunction();
- // delay((tabel[maxDrink][1]) * 10);
- // NoodFunction();
- // delay((tabel[maxDrink][1]) * 10);
- // NoodFunction();
- // delay((tabel[maxDrink][1]) * 10);
- // NoodFunction();
- // delay((tabel[maxDrink][1]) * 10);
- // NoodFunction();
- // delay((tabel[maxDrink][1]) * 10);
- // NoodFunction();
- // delay((tabel[maxDrink][1]) * 10);
- // NoodFunction();
- // delay((tabel[maxDrink][1]) * 10);
- // NoodFunction();
- // delay((tabel[maxDrink][1]) * 10);
- // NoodFunction();
- // delay((tabel[maxDrink][1]) * 10);
- // NoodFunction();
- // verticaal.step(2800, FORWARD, SINGLE);
- // verticaal.release();
- // tabel[maxDrink][2] = tabel[maxDrink][2]-1;
- // delay(500);
- //
- // }
- // }
- // raftFound = false;
- //if (raftFound == false){
- // Serial.println("Raft location not known yet");
- // setColor(255, 0, 0); // red
- // delay(1000);
- // Serial.print("Looking for the raft...");
- // buttonState = digitalRead(buttonPin); // read the pushbutton input pin:
- ////move the stepper until the contact switch is triggered
- // while(buttonState == LOW && raftFound == false){
- // horizontaal.step(10, FORWARD, SINGLE);
- // buttonState = digitalRead(buttonPin);
- // }
- // raftFound = true;
- // Serial.println("ahh! There it is. :)");
- // horizontaal.release();
- // setColor(0, 255, 0); // blue
- // delay(700); // Delay a little bit to calm everything down
- //}
- //
- // //Drink complete
- // Serial.println("Drinks ready, enjoy.");
- // setColor(0, 0, 255); // green
- // drinkRequested = false;
- // raftFound=false;
- //}
- if(raftFound){
- while(drinkRequested == false){
- delay(200);
- if (Serial.available()) {
- for (int maxDrink = 0; maxDrink < 6; maxDrink++){
- if (Serial.available()) {
- serialNumber = mySerial.read(); /* load the number from serial buffer */
- serialNumber = serialNumber - 48; /* convert number to text number */
- moveDistance = distance[serialNumber] - lastDistance;
- Serial.print(moveDistance);
- tabel[maxDrink][0] = moveDistance;
- lastDistance = distance[serialNumber];
- } else {
- delay(250);
- serialNumber = mySerial.read(); /* load the number from serial buffer */
- serialNumber = serialNumber - 48; /* convert number to text number */
- moveDistance = distance[serialNumber] - lastDistance;
- Serial.print(moveDistance);
- tabel[maxDrink][0] = moveDistance;
- lastDistance = distance[serialNumber];
- }
- serialNumber = mySerial.read(); /* to clear the comma from the buffer */
- }
- CheckArray();
- drinkRequested = true;
- }
- }
- }
- //
- //
- //
- // int c;
- //
- // if (mySerial.available()) {
- // c = mySerial.read();
- // Serial.println("Got input:");
- // if (c != 0)
- // {
- // // Non-zero input means "turn on LED".
- // Serial.println(" on");
- // }
- // else
- // {
- // // Input value zero means "turn off LED".
- // Serial.println(" off");
- // }
- // }
- }
- void CheckArray(){
- //print out the array to check it:
- for(int i = 0; i < 6; i++) {
- Serial.print(tabel[i][0]);
- Serial.print(",");
- Serial.println();
- }
- }
- //
- //void(* resetFunc) (void) = 0;
- //
- //void dance(){
- // horizontaal.step(400, BACKWARD, SINGLE);
- // setColor(0, 255, 0); // blue
- // horizontaal.step(200, FORWARD, SINGLE);
- // verticaal.step(400, FORWARD, SINGLE);
- // setColor(0, 0, 255); // blue
- // horizontaal.step(400, BACKWARD, SINGLE);
- // setColor(0, 255, 0); // blue
- // verticaal.step(400, BACKWARD, SINGLE);
- // setColor(255, 0, 0); // blue
- // horizontaal.step(200, BACKWARD, SINGLE);
- // setColor(0, 0, 255); // blue
- // verticaal.step(800, FORWARD, SINGLE);
- // setColor(0, 255, 0); // blue
- // horizontaal.step(200, FORWARD, SINGLE);
- // setColor(255, 0, 0); // blue
- // verticaal.step(400, BACKWARD, SINGLE);
- // setColor(0, 0, 255); // blue
- // horizontaal.step(200, BACKWARD, SINGLE);
- // setColor(0, 255, 0); // blue
- // verticaal.step(400, BACKWARD, SINGLE);
- // setColor(255, 0, 0); // blue
- // horizontaal.step(400, BACKWARD, SINGLE);
- // setColor(0, 0, 255); // blue
- // horizontaal.step(200, FORWARD, SINGLE);
- // setColor(0, 255, 0); // blue
- // horizontaal.step(400, BACKWARD, SINGLE);
- // setColor(255, 0, 0); // blue
- // horizontaal.step(200, FORWARD, SINGLE);
- // resetFunc();
- //}
- //
- //void NoodFunction(){
- // int val = analogRead(A3);
- // if(val > 200){
- // verticaal.step(2900, FORWARD, SINGLE);
- // resetFunc();
- // }
- //
- //}
- //
- //void NoodFunction2(){
- // int val = analogRead(A3);
- // if(val > 200){
- // resetFunc();
- // }
- //
- //}
- //
- void setColor(int red, int green, int blue)
- {
- // #ifdef COMMON_ANODE
- // red = 255 - red;
- // green = 255 - green;
- // blue = 255 - blue;
- // #endif
- analogWrite(redPin, red);
- analogWrite(greenPin, green);
- analogWrite(bluePin, blue);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement