Guest User

Untitled

a guest
Dec 3rd, 2018
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <HCSR04.h>
  2. #include <Bounce2.h>
  3. #include <TM1637Display.h>
  4. #define CLK 3
  5. #define DIO 4
  6. TM1637Display display(CLK, DIO);
  7. const int relayUp = 7;  // insert pin number for motors going up
  8. const int relayDown = 7; // insert pin number for motors going down
  9. const int triggerPin = 13; //
  10. const int echoPin = 12;
  11. int desiredDistance;
  12. int presetNumber;
  13. #define NUM_BUTTONS 4
  14. const uint8_t BUTTON_PINS[NUM_BUTTONS] = {53, 51, 49, 47};  // insert preset button pin numbers
  15. Bounce * buttons = new Bounce[NUM_BUTTONS];
  16. UltraSonicDistanceSensor distanceSensor(triggerPin, echoPin);
  17. int distance = distanceSensor.measureDistanceCm();
  18. const int ledPin0 =  9;  // insert LED pin number for preset 1
  19. const int ledPin1 =  9;  // insert LED pin number for preset 2
  20. const int ledPin2 =  9;  // insert LED pin number for preset 3
  21. const int ledPin3 =  9;  // insert LED pin number for preset 4
  22. const int ledUp =  9;    // insert pin number for LED when motors going up
  23. const int ledDown =  9;  // insert pin number for LED when motors going down
  24. bool needToToggleMotor = false;
  25. bool buttonUp = true;
  26. bool buttonDown = true;
  27.  
  28.  
  29. void setup() {
  30.  for (int i = 0; i < NUM_BUTTONS; i++) {
  31.     buttons[i].attach(BUTTON_PINS[i] , INPUT_PULLUP);
  32.     buttons[i].interval(25);
  33.  }
  34.   pinMode(relayUp, OUTPUT);
  35.   pinMode(relayDown, OUTPUT);
  36.   pinMode(ledPin0, OUTPUT);
  37.   pinMode(ledPin1, OUTPUT);
  38.   pinMode(ledPin2, OUTPUT);
  39.   pinMode(ledPin3, OUTPUT);
  40.   pinMode(ledUp, OUTPUT);
  41.   pinMode(ledDown, OUTPUT);
  42.   pinMode(23, INPUT_PULLUP);  //insert button Up pin number
  43.   pinMode(25, INPUT_PULLUP);  //insert button Down pin number
  44.   display.setBrightness(5);
  45.   display.showNumberDec(distance);        
  46. }
  47.  
  48. void loop() {
  49.     buttonUp = digitalRead(23);
  50.   buttonDown = digitalRead(25);
  51.  for (int i = 0; i < NUM_BUTTONS; i++)  {
  52.     buttons[i].update();
  53.      if ( buttons[i].fell() ) {
  54.        presetNumber = i;
  55.        needToToggleMotor = true;
  56.        distance = distanceSensor.measureDistanceCm();
  57.         switch (presetNumber){
  58.         case 0:
  59.         desiredDistance = 3;  // insert desired distance from floor in cm for preset 1
  60.         digitalWrite(ledPin0, HIGH);
  61.         break;
  62.        
  63.         case 1:
  64.         desiredDistance = 5;  // insert desired distance from floor in cm for preset 2
  65.         digitalWrite(ledPin1, HIGH);
  66.         break;
  67.        
  68.         case 2:
  69.         desiredDistance = 7;  // insert desired distance from floor in cm for preset 3
  70.         digitalWrite(ledPin2, HIGH);
  71.         break;
  72.        
  73.         case 3:
  74.         desiredDistance = 9;  // insert desired distance from floor in cm for preset 4
  75.         digitalWrite(ledPin3, HIGH);
  76.         break;
  77.         }
  78.     }
  79.  }
  80.  if (distance > desiredDistance && needToToggleMotor == true) {
  81.    distance = distanceSensor.measureDistanceCm();
  82.    display.showNumberDec(distance);
  83.    digitalWrite(relayDown, HIGH);
  84. }        
  85. else if (distance < desiredDistance && needToToggleMotor == true) {
  86.    distance = distanceSensor.measureDistanceCm();
  87.    display.showNumberDec(distance);
  88.    digitalWrite(relayUp, HIGH);
  89. }    
  90. else if (buttonUp == false){
  91.   distance = distanceSensor.measureDistanceCm();
  92.    display.showNumberDec(distance);
  93.    digitalWrite(ledUp, HIGH);
  94.    digitalWrite(relayUp, HIGH);
  95.   }  
  96. else if (buttonDown == false){
  97.   distance = distanceSensor.measureDistanceCm();
  98.    display.showNumberDec(distance);
  99.   digitalWrite(ledDown, HIGH);
  100.   digitalWrite(relayDown, HIGH);
  101.   }      
  102. else {
  103.        buttonUp = true;
  104.        buttonDown = true;
  105.        needToToggleMotor = false;
  106.        digitalWrite(ledPin0, LOW);
  107.        digitalWrite(ledPin1, LOW);
  108.        digitalWrite(ledPin2, LOW);
  109.        digitalWrite(ledPin3, LOW);
  110.        digitalWrite(ledUp, LOW);
  111.        digitalWrite(ledDown, LOW);
  112.        digitalWrite(relayUp, LOW);
  113.        digitalWrite(relayDown, LOW);
  114.        display.clear();
  115. }
  116.   delay(60);
  117. }
Add Comment
Please, Sign In to add comment