motorwack
This commit is contained in:
		
							parent
							
								
									b059803fdc
								
							
						
					
					
						commit
						2a96147190
					
				
					 1 changed files with 118 additions and 0 deletions
				
			
		
							
								
								
									
										118
									
								
								arduino_maze/motorControl.ino
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								arduino_maze/motorControl.ino
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,118 @@ | ||||||
|  | // 3.6 2 amps
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const int rangeSTick = 1023; // 0 is bottom
 | ||||||
|  | const int reangle = 45, angleRange = 90; // 0 is bottom
 | ||||||
|  | const float transformDesireToAngle = .09; // tranpoe
 | ||||||
|  | const int stillJoystick = 511; | ||||||
|  | const int deadband = 10; | ||||||
|  | const int motorPulseDelay = 500; | ||||||
|  | 
 | ||||||
|  | const float angleChange = 1.8; | ||||||
|  | float x = 0, y = 0; //angle of current postion
 | ||||||
|  |   | ||||||
|  | class MotorControl | ||||||
|  | { | ||||||
|  |   public: | ||||||
|  |   float currentPostion; | ||||||
|  |   float goPostion; | ||||||
|  |   int pastDesire = stillJoystick; | ||||||
|  |   bool reset; | ||||||
|  |   bool isButtonPressed; | ||||||
|  |   int button; | ||||||
|  |   int direct, pulse; | ||||||
|  |    | ||||||
|  |     MotorControl(int dire, int puls) | ||||||
|  |     { | ||||||
|  |       pinMode(dire,OUTPUT); | ||||||
|  |       pinMode(puls,OUTPUT); | ||||||
|  |       direct = dire; | ||||||
|  |       pulse = puls; | ||||||
|  |       currentPostion = reangle; | ||||||
|  |     } | ||||||
|  |     void whatToDo(int desire) | ||||||
|  |     { | ||||||
|  |       if (desire < 0) | ||||||
|  |       button = desire * -1; | ||||||
|  |       else | ||||||
|  |       goto yeet; | ||||||
|  |       switch (button) | ||||||
|  |       { | ||||||
|  |         default: | ||||||
|  |         goto yeet; | ||||||
|  |         case 1: | ||||||
|  | goto caseEnd; | ||||||
|  |         case 2: | ||||||
|  | goto caseEnd; | ||||||
|  |         case 3: | ||||||
|  | goto caseEnd; | ||||||
|  |         case 4: | ||||||
|  | goto caseEnd; | ||||||
|  |         case 5: | ||||||
|  | goto caseEnd; | ||||||
|  |         case 6: | ||||||
|  | goto caseEnd; | ||||||
|  |         case 7:  | ||||||
|  |       caseEnd:   | ||||||
|  |       button = 0; | ||||||
|  |       return;  | ||||||
|  |       } | ||||||
|  |       yeet: | ||||||
|  |       if(desire > (pastDesire + 10) || desire < (pastDesire - 10)) // noise from constant stick upload
 | ||||||
|  |       { | ||||||
|  |         goPostion = tranpose(desire); | ||||||
|  |         pastDesire = desire; | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       // two pins
 | ||||||
|  |       if(goPostion > (currentPostion + 5.0)) | ||||||
|  |       { | ||||||
|  |         digitalWrite(direct, HIGH); | ||||||
|  |         currentPostion += angleChange; | ||||||
|  |         digitalWrite(pulse,HIGH);  | ||||||
|  |         delayMicroseconds(motorPulseDelay);  | ||||||
|  |         digitalWrite(pulse,LOW);  | ||||||
|  |         delayMicroseconds(motorPulseDelay); | ||||||
|  |       } | ||||||
|  |       return; | ||||||
|  |       if((currentPostion - 5.0) > goPostion) | ||||||
|  |       { | ||||||
|  |         digitalWrite(direct, LOW); | ||||||
|  |         currentPostion -= angleChange; | ||||||
|  |         digitalWrite(pulse,HIGH);  | ||||||
|  |         delayMicroseconds(motorPulseDelay);  | ||||||
|  |         digitalWrite(pulse,LOW);  | ||||||
|  |         delayMicroseconds(motorPulseDelay); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     float tranpose(int desire) | ||||||
|  |     { | ||||||
|  |       int temp = desire * transformDesireToAngle; | ||||||
|  |       return temp; | ||||||
|  |     } | ||||||
|  |     void calibrate() | ||||||
|  |     { | ||||||
|  |       currentPostion = reangle; | ||||||
|  |       goPostion = reangle; | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // defines pins numbers
 | ||||||
|  | const int stepPinM1 = 3; // motor 1
 | ||||||
|  | const int dirPinM1 = 5; | ||||||
|  | const int stepPinM2  = 6; // motor 2
 | ||||||
|  | const int dirPinM2 = 9; | ||||||
|  | 
 | ||||||
|  | MotorControl xMotor(stepPinM1, dirPinM1); | ||||||
|  | MotorControl yMotor(stepPinM2, dirPinM2); | ||||||
|  | 
 | ||||||
|  | void setup() { | ||||||
|  |    | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void loop() { | ||||||
|  |   xMotor.whatToDo(700);// angle
 | ||||||
|  |   yMotor.whatToDo(700);// angle
 | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue