Add files via upload
This commit is contained in:
		
							parent
							
								
									05f2c6bf1f
								
							
						
					
					
						commit
						76055d38fe
					
				
					 1 changed files with 105 additions and 0 deletions
				
			
		
							
								
								
									
										105
									
								
								Hardware(motor control)/Motor.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								Hardware(motor control)/Motor.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,105 @@
 | 
				
			||||||
 | 
					import RPi.GPIO as GPIO
 | 
				
			||||||
 | 
					from time import sleep
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Motor:
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    print("Starting of the program")
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def __init__(self):
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        GPIO.setmode(GPIO.BCM)
 | 
				
			||||||
 | 
					        GPIO.setwarnings(False)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        #preset GPIO ports for 2 motors
 | 
				
			||||||
 | 
					        self.Motor1 = {'EN': 25, 'input1': 24, 'input2': 23}
 | 
				
			||||||
 | 
					        self.Motor2 = {'EN': 17, 'input1': 27, 'input2': 22}
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        # preset the port for buttons and alarm
 | 
				
			||||||
 | 
					        GPIO.setup(5,GPIO.IN)     # start motor button, initially True
 | 
				
			||||||
 | 
					        GPIO.setup(13,GPIO.IN)    # stop motor button, initially True
 | 
				
			||||||
 | 
					        GPIO.setup(16,GPIO.IN)    # start alarm button, initially True
 | 
				
			||||||
 | 
					        GPIO.setup(26,GPIO.OUT)   # alarm output
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        for x in self.Motor1:
 | 
				
			||||||
 | 
					            GPIO.setup(self.Motor1[x], GPIO.OUT)
 | 
				
			||||||
 | 
					            GPIO.setup(self.Motor2[x], GPIO.OUT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #utilize PWM function, enable motors and frequency is 100Hz
 | 
				
			||||||
 | 
					        self.EN1 = GPIO.PWM(self.Motor1['EN'], 100)    
 | 
				
			||||||
 | 
					        self.EN2 = GPIO.PWM(self.Motor2['EN'], 100)    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.EN1.start(0)                    
 | 
				
			||||||
 | 
					        self.EN2.start(0)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        #stop signals for motors and alarm
 | 
				
			||||||
 | 
					        self.motorStop=False
 | 
				
			||||||
 | 
					        self.alarmStop=False
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def start_motor(self):
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        while (not self.motorStop) or (not GPIO.input(5)): #break the loop when motor stop signal is detected
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            print ("FORWARD MOTION")
 | 
				
			||||||
 | 
					            self.motorStop=self.stop_motor()
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            self.EN1.ChangeDutyCycle(50)
 | 
				
			||||||
 | 
					            self.EN2.ChangeDutyCycle(50)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            GPIO.output(self.Motor1['input1'], GPIO.HIGH)
 | 
				
			||||||
 | 
					            GPIO.output(self.Motor1['input2'], GPIO.LOW)
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					            GPIO.output(self.Motor2['input1'], GPIO.HIGH)
 | 
				
			||||||
 | 
					            GPIO.output(self.Motor2['input2'], GPIO.LOW)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        GPIO.cleanup()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def stop_motor(self):
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        userStop=input("Stop the motor? choose between Y/N")
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if (userStop=="Y") or (not GPIO.input(13)):
 | 
				
			||||||
 | 
					            print("stopping motor...")
 | 
				
			||||||
 | 
					            self.EN1.ChangeDutyCycle(0)
 | 
				
			||||||
 | 
					            self.EN2.ChangeDutyCycle(0)
 | 
				
			||||||
 | 
					            print("motor stops")
 | 
				
			||||||
 | 
					            return True
 | 
				
			||||||
 | 
					        elif userStop=="N":
 | 
				
			||||||
 | 
					            return False
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            stop_motor(self)
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def start_alarm(self):
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        while (not self.alarmStop) or (not GPIO.input(16)):
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            self.alarmStop=self.stop_alarm()
 | 
				
			||||||
 | 
					            GPIO.output(26,True)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        GPIO.cleanup()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def stop_alarm(self):
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        stopRequest=input("Turn off the alarm? choose between Y/N")
 | 
				
			||||||
 | 
					        if stopRequest=="Y":
 | 
				
			||||||
 | 
					            print("Alarm turning off...")
 | 
				
			||||||
 | 
					            GPIO.output(26,False)
 | 
				
			||||||
 | 
					            print("Alarm is off")
 | 
				
			||||||
 | 
					            return True
 | 
				
			||||||
 | 
					        elif stopRequest=="N":
 | 
				
			||||||
 | 
					            return False
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            self.stop_alarm()
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					if __name__=="__main__":
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    #print("Execute function...")
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    motor1=Motor()
 | 
				
			||||||
 | 
					    #motor1.start_motor()
 | 
				
			||||||
 | 
					    motor1.start_alarm()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue