Homing issues
Fix homing if axis is reverse
This commit is contained in:
		| @@ -94,7 +94,7 @@ void setup() | |||||||
|   pinMode(ySwitchPin, INPUT_PULLUP); |   pinMode(ySwitchPin, INPUT_PULLUP); | ||||||
|   pinMode(zSwitchPin, INPUT_PULLUP); |   pinMode(zSwitchPin, INPUT_PULLUP); | ||||||
|   pinMode(emergencySwitchPin, INPUT_PULLUP); |   pinMode(emergencySwitchPin, INPUT_PULLUP); | ||||||
|   attachInterrupt(digitalPinToInterrupt(emergencySwitchPin), LimiteSwitch, RISING); |   attachInterrupt(digitalPinToInterrupt(emergencySwitchPin), LimiteSwitch, FALLING); | ||||||
|    |    | ||||||
|   Serial.begin(57600); |   Serial.begin(57600); | ||||||
|   while(!Serial); // Open a Serial Monitor   |   while(!Serial); // Open a Serial Monitor   | ||||||
| @@ -120,7 +120,7 @@ void setup() | |||||||
|   Write(idY, 0, HOMING_OFFSET); |   Write(idY, 0, HOMING_OFFSET); | ||||||
|   Write(idZ, 0, HOMING_OFFSET); |   Write(idZ, 0, HOMING_OFFSET); | ||||||
|  |  | ||||||
|   dxl_wb.writeRegister(idX, 10, 1, &X_REVERSE, &NULL_POINTER); |   dxl_wb.writeRegister(idX, 10, 1, &  , &NULL_POINTER); | ||||||
|   dxl_wb.writeRegister(idY, 10, 1, &Y_REVERSE, &NULL_POINTER); |   dxl_wb.writeRegister(idY, 10, 1, &Y_REVERSE, &NULL_POINTER); | ||||||
|   dxl_wb.writeRegister(idZ, 10, 1, &Z_REVERSE, &NULL_POINTER); |   dxl_wb.writeRegister(idZ, 10, 1, &Z_REVERSE, &NULL_POINTER); | ||||||
|  |  | ||||||
| @@ -238,12 +238,12 @@ int Homing() | |||||||
|   int state = 0; |   int state = 0; | ||||||
|   homing = true; |   homing = true; | ||||||
|    |    | ||||||
|   state += HomingAxis(idZ, -50, xSwitchPin, homeOffsetZ); |   //state += HomingAxis(idZ, -50, zSwitchPin, homeOffsetZ); | ||||||
|   state += HomingAxis(idY, -100, xSwitchPin, homeOffsetY); |   state += HomingAxis(idY, -100, ySwitchPin, homeOffsetY); | ||||||
|   state += HomingAxis(idX, -100, xSwitchPin, homeOffsetX); |   state += HomingAxis(idX, -100, xSwitchPin, homeOffsetX); | ||||||
|    |    | ||||||
|   homing = false; |   homing = false; | ||||||
|   return state == 3 ? 1 : -1; |   return state == 2 ? 1 : -1; | ||||||
| } | } | ||||||
|  |  | ||||||
| int HomingAxis(uint8_t id, int speed, int switchPin, int offset) | int HomingAxis(uint8_t id, int speed, int switchPin, int offset) | ||||||
| @@ -252,7 +252,7 @@ int HomingAxis(uint8_t id, int speed, int switchPin, int offset) | |||||||
|   Write(id, 0, HOMING_OFFSET); |   Write(id, 0, HOMING_OFFSET); | ||||||
|   Torque_on(id); |   Torque_on(id); | ||||||
|   Wheel(id, speed); |   Wheel(id, speed); | ||||||
|   while(digitalRead(switchPin)); |   while(!digitalRead(switchPin)); | ||||||
|   OffsetAxe(id, offset); |   OffsetAxe(id, offset); | ||||||
|   Write(id, 4, OPERATING_MODE); |   Write(id, 4, OPERATING_MODE); | ||||||
|   return MovingTick(id, 0); |   return MovingTick(id, 0); | ||||||
| @@ -262,6 +262,14 @@ void OffsetAxe(uint8_t id, int offset){ | |||||||
|   int32_t posPresent = Read(id, PRESENT_POSITION); |   int32_t posPresent = Read(id, PRESENT_POSITION); | ||||||
|   int32_t homePosition = - posPresent - offset; |   int32_t homePosition = - posPresent - offset; | ||||||
|   Torque_off(id);  |   Torque_off(id);  | ||||||
|  |  | ||||||
|  |   if(id == idX && X_REVERSE) | ||||||
|  |     homePosition *= -1; | ||||||
|  |   else if(id == idY && Y_REVERSE) | ||||||
|  |     homePosition *= -1; | ||||||
|  |   else if(id == idZ && Z_REVERSE) | ||||||
|  |     homePosition *= -1; | ||||||
|  |    | ||||||
|   Write(id, homePosition, HOMING_OFFSET); |   Write(id, homePosition, HOMING_OFFSET); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Marc-Antoine Lafreniere
					Marc-Antoine Lafreniere