Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // #define GENERAL_SWITCH_PIN 13 // 8
- // #define DIRECTION_PIN 12 // 9
- // #define UP_SWITCH_PIN 11 // 10
- // #define DOWN_SWITCH_PIN 10 // 11
- // #define BUTTON_UP_PIN 9 // 12
- // #define BUTTON_DOWN_PIN 8 // 13
- #define GENERAL_SWITCH_PIN 6 // 8
- #define DIRECTION_PIN 5 // 9
- #define UP_SWITCH_PIN 3 // 10
- #define DOWN_SWITCH_PIN 2 // 11
- #define BUTTON_UP_PIN 1 // 12
- #define BUTTON_DOWN_PIN 0 // 13
- #define TEST_PIN 6
- #define TEST_PIN 6
- int up_switch = 0;
- int down_switch = 0;
- int button_up_stat = 0;
- int button_down_stat = 0;
- int move_to_down = 0;
- int move_to_up = 0;
- int state = 0;
- void reset_state()
- {
- // Serial.println("Reseting state...");
- move_to_down = 0;
- move_to_up = 0;
- button_down_stat = 0;
- button_up_stat = 0;
- up_switch = 0;
- down_switch = 0;
- delay(1000);
- }
- void setup() {
- pinMode(GENERAL_SWITCH_PIN, OUTPUT);
- pinMode(DIRECTION_PIN, OUTPUT);
- pinMode(UP_SWITCH_PIN, INPUT);
- pinMode(DOWN_SWITCH_PIN, INPUT);
- pinMode(BUTTON_DOWN_PIN, INPUT);
- pinMode(BUTTON_UP_PIN, INPUT);
- // Serial.begin(9600);
- reset_state();
- }
- void disable_outputs()
- {
- // Serial.println("Disabling outputs...");
- digitalWrite(GENERAL_SWITCH_PIN, LOW);
- delay(100);
- digitalWrite(DIRECTION_PIN, LOW);
- state = 0;
- }
- void drive_up()
- {
- state = 1;
- // Serial.println("Drive up...");
- digitalWrite(GENERAL_SWITCH_PIN, HIGH);
- }
- void drive_down()
- {
- state = 2;
- // Serial.println("Drive down...");
- digitalWrite(DIRECTION_PIN, HIGH);
- digitalWrite(GENERAL_SWITCH_PIN, HIGH);
- }
- void print_state()
- {
- // Serial.print("UP_SWITCH: ");
- // Serial.print(up_switch);
- // Serial.print(" | DOWN_SWITCH: ");
- // Serial.print(down_switch);
- // Serial.print(" | BUS: ");
- // Serial.print(button_up_stat);
- // Serial.print(" | BDS: ");
- // Serial.print(button_down_stat);
- // Serial.print(" | MTU: ");
- // Serial.print(move_to_up);
- // Serial.print(" | MTD: ");
- // Serial.print(move_to_down);
- // Serial.print(" | BUT_UP: ");
- // Serial.print(digitalRead(BUTTON_UP_PIN));
- // Serial.print(" | BUT_DOWN: ");
- // Serial.println(digitalRead(BUTTON_DOWN_PIN));
- }
- void loop() {
- // Get switches status
- up_switch = digitalRead(UP_SWITCH_PIN);
- down_switch = digitalRead(DOWN_SWITCH_PIN);
- // Get the read from the buttons
- // If the button was pressed once, it records that value and for the
- // subsequent loops, the vars will keep their values until
- // one of the switches are activated
- button_up_stat = digitalRead(BUTTON_UP_PIN) || button_up_stat;
- button_down_stat = digitalRead(BUTTON_DOWN_PIN) || button_down_stat;
- // Determine if we should move to the down or to the up
- move_to_up = button_up_stat == HIGH && up_switch == LOW;
- move_to_down = button_down_stat == HIGH && down_switch == LOW;
- // If both are pressed, do nothing
- if(move_to_down == move_to_up && state != 0)
- {
- print_state();
- disable_outputs();
- if(move_to_down == HIGH)
- {
- delay(1000);
- }
- reset_state();
- return;
- } else if(move_to_up == HIGH && state != 1)
- {
- print_state();
- drive_up();
- } else if(move_to_down == HIGH && state != 2)
- {
- print_state();
- drive_down();
- } else if(move_to_up == move_to_down && state == 0)
- {
- button_up_stat = 0;
- button_down_stat = 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement