Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 1. mój program daje komendę unlock i jest ignorowane
- if (digitalRead(home_switch_alt) == HIGH || (digitalRead(home_switch_alt) == LOW && movedAlt == 0))
- 2. są przesyłane na zmianę koordynaty alt i az, po wysłaniu program czeka na serial z arduino mówiący że
- ruch się zakończył
- 3. pod koniec przelotu, kiedy alt będzie wynosiło mniej więcej 0, a przycisk na pinie 13 będzie wciśnięty,
- program wie że przelot się zakończył i oś az jest resetowana do pozycji zerowej
- */
- #include "AccelStepper.h"
- AccelStepper stepperAz(1, 2, 3);
- AccelStepper stepperAlt(1, 8, 10);
- const int enPinAlt = 11;
- const int enPinAz = 4;
- #define home_switch_az 7
- #define home_switch_alt 13
- long TravelAz;
- int move_az_finished=1;
- long TravelAlt;
- int move_alt_finished = 1;
- long initial_homing_az=-1;
- const int baud = 9600;
- //const int timeout = 10;
- String command;
- // String commandStr;
- bool bAz, bAlt;
- float temp;
- char first, rec;
- bool locked = true;
- int movedAlt = 0;
- float last = 0;
- // todo not working moveto
- void park() {
- // Serial.println(isAzParked());
- while (isAzParked() == 0) {
- // Serial.println("MOVING DOWN");
- stepperAz.moveTo(stepperAz.currentPosition() + 3);
- }
- while (isAltParked() == 0) {
- stepperAlt.move(1);
- }
- }
- void setup() {
- Serial.begin(baud);
- //Serial.setTimeout(timeout);
- pinMode(home_switch_az, INPUT_PULLUP);
- pinMode(home_switch_alt, INPUT_PULLUP);
- pinMode(enPinAlt, OUTPUT);
- digitalWrite(enPinAlt, LOW);
- pinMode(enPinAz, OUTPUT);
- digitalWrite(enPinAz, LOW);
- delay(5);
- stepperAlt.setCurrentPosition(0);
- stepperAlt.setMaxSpeed(7);
- stepperAlt.setAcceleration(10.0);
- stepperAz.setCurrentPosition(0);
- stepperAz.setMaxSpeed(100.0);
- stepperAz.setAcceleration(30.0);
- }
- bool isParked() {
- return (isAzParked() == true) && (isAltParked() == true);
- }
- bool isAzParked() {
- bool azParked;
- for (int i = 0; i < 100; i++) {
- if (digitalRead(home_switch_az) == HIGH) {
- last += 0;
- } else {
- last += 1;
- }
- }
- if (last / 100 > 0.9) {
- azParked = true;
- } else {
- azParked = false;
- }
- last = 0;
- return azParked;
- }
- bool isAltParked() {
- return digitalRead(home_switch_alt) == HIGH ? false : true;
- }
- void loop() {
- if (isParked()) {
- /// Serial.println("Both axes parked");
- } else {
- /// Serial.println("Not parked");
- }
- if(Serial.available() > 0) {
- command = Serial.readStringUntil('\n');
- // Serial.println(command);
- // command += rec;
- // command = Serial.readString();
- if (command.equals("park")) {
- park();
- } else if (command.equals("unlock")) {
- locked = false;
- }
- if (locked == false && isAzParked() == false) {
- locked = true;
- }
- first = command.charAt(0);
- command.remove(0, 1);
- temp = command.toInt();
- if (first == 'z') {
- // Serial.println("az");
- // Serial.println(temp);
- TravelAz = temp;
- // TravelAz = map(temp, 0.0, 360.0, 0, 1200); // pozmieniaj te wartości
- bAz = true;
- bAlt = false;
- move_az_finished = 0;
- // if radiotelescope is up
- if (digitalRead(home_switch_alt) == HIGH) {
- } else { // is parked
- }
- stepperAz.moveTo(TravelAz);
- delay(100);
- // Serial.println("move az");
- } else if (first == 't') {
- // Serial.println("alt");
- // Serial.println(temp);
- TravelAlt = temp;
- // TravelAlt = map(temp, 0.0, 90.0, 0, 1200); // pozmieniaj te wartości
- bAz = false;
- bAlt = true;
- move_alt_finished = 0;
- // if radiotelescope is up
- // if (digitalRead(home_switch_alt) == HIGH || (digitalRead(home_switch_alt) == LOW && movedAlt == 0) || (digitalRead(home_switch_alt) == LOW && locked == false)) {
- stepperAlt.moveTo(TravelAlt);
- delay(100);
- // Serial.println("move alt");
- // } else {
- // Serial.println("didn't move");
- // }
- movedAlt++;
- }
- if (bAlt) {
- // ruszanie osią alt
- while (stepperAlt.distanceToGo() != 0) {
- // Serial.println(stepperAlt.distanceToGo());
- stepperAlt.run(); // Move Stepper into position
- }
- // If move is completed display message on Serial Monitor
- if ((move_alt_finished == 0) && (stepperAlt.distanceToGo() == 0)) {
- // Serial.println("Alt motion complete!");
- Serial.write("%");
- move_alt_finished=1;
- locked = true;
- }
- } else if (bAz) {
- // ==============================
- // ruszanie osią az
- while ((stepperAz.distanceToGo() != 0)) {
- // Serial.println(stepperAz.distanceToGo());
- stepperAz.run();
- }
- if ((move_az_finished == 0) && (stepperAz.distanceToGo() == 0)) {
- // Serial.println("Az motion complete!");
- Serial.write("!");
- move_az_finished=1;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement