class JoyStickTest(tk.Frame): def __init__(self,master): # create GUI self.master = master self.master.title('JoyStick Test') label = tk.Label(root,text='Joystick') label.pack() self.gui = GuiJs(master=root) self.gui.createCordinateLabel() self.gui.createCircle(200,200,220,220,'red') self.gui.createButton(btn_name='Finish',callback=self.cleanup) #JoyStick instanse self.js = JoyStick() self.val_vert = 0 self.val_horz = 0 self.move_vert = 0 self.move_horz = 0 #ServMotor self.sm= ServMotor(18,180,0) # Led instance self.Led = Led(17) self.Sw = Sw(4,'either',self.callback_Sw) #display GUI def cleanup(self): print 'Test Finished' self.js.cleanup() self.sm.cleanup() self.Led.cleanup() sys.exit() # Flashing LED Test No.1 def callback_Sw(self): if self.Sw.getState()== 'Released': if self.Led.getState() != 'Off':self.Led.setLedOff() else: if self.Led.getState() != 'On':self.Led.setLedOn() def test(self): self.val_vert = self.js.getValVert() self.val_horz = self.js.getValHorz() self.move_vert = self.movement(self.val_vert) self.move_horz = self.movement(self.val_horz) #:print (self.val_vert,self.val_horz,self.move_vert,self.move_horz) if self.move_vert == 0 and self.move_horz == 0: self.Led.setLedOff() else:self.Led.setLedOn() self.gui.renewCordinate(self.val_vert,self.val_horz) self.gui.moveCircle(self.move_vert,self.move_horz) self.moveServmoter() self.master.after(50,self.test) def movement(self,val): move_val = 0 if val > 255:move_val = -10 elif val > 63:move_val = -5 elif val <= -512:move_val = 0 elif val < -255:move_val = 10 elif val < -63: move_val = 5 return move_val def moveServmoter(self): deg = self.sm.getDeg() if self.val_horz > 100: if deg < 180: deg += 10 print deg self.sm.setDeg(float(deg)) elif self.val_horz < -200: if deg >= 10: deg -= 10 print deg self.sm.setDeg(float(deg))
class JoyStickTest(tk.Frame): def __init__(self, master): # create GUI self.master = master self.master.title('JoyStick Test') label = tk.Label(root, text='Joystick') label.pack() self.gui = GuiJs(master=root) self.gui.createCordinateLabelJs1() self.gui.createCordinateLabelJs2() self.gui.createCircleJs1(200, 200, 220, 220, 'red') self.gui.createButton(btn_name='Finish', callback=self.cleanup) self.gui.createCircleJs2(200, 200, 220, 220, 'blue') #JoyStick instanse self.js1 = JoyStick(0, 3, 27) self.val_vert1 = 0 self.val_horz1 = 0 self.move_vert1 = 0 self.move_horz1 = 0 self.js2 = JoyStick(7, 4, 22) self.val_vert2 = 0 self.val_horz2 = 0 self.move_vert2 = 0 self.move_horz2 = 0 #ServMotor #self.servo= ServMotor(18,180,0) #self.servo = I2cServo() # Led instance self.Led = Led(17) #display GUI def cleanup(self): print 'Test Finished' self.js1.cleanup() self.js2.cleanup() #self.servo.cleanup() self.Led.cleanup() sys.exit() # Flashing LED Test No.1 def setLed(self): if (self.js1.getSelState()== 'Released') and \ (self.js2.getSelState()== 'Released'): if self.Led.getState() != 'Off': self.Led.setLedOff() else: if self.Led.getState() != 'On': self.Led.setLedOn() def test(self): self.val_vert1 = self.js1.getValVert() self.val_horz1 = self.js1.getValHorz() self.move_vert1 = self.move_vert(self.val_vert1) self.move_horz1 = self.move_horz(self.val_horz1) #print ('Js1'+'vert:%d'% self.val_vert1+'hortz:%d'% self.val_horz1+'sel:%d' % self.val_sel1) #print (self.val_vert1,self.val_horz1,self.move_vert1,self.move_horz1) self.val_vert2 = self.js2.getValVert() self.val_horz2 = self.js2.getValHorz() self.move_vert2 = self.move_vert(self.val_vert2) self.move_horz2 = self.move_horz(self.val_horz2) #print ('Js2'+'vert:%d'% self.val_vert2+'hortz:%d'% self.val_horz2+'sel:%d' % self.val_sel2) # if self.move_vert1 == 0 and self.move_horz1 == 0: # self.Led.setLedOff() # else:self.Led.setLedOn() self.gui.renewCordinateJs1(self.val_vert1, self.val_horz1) self.gui.renewCordinateJs2(self.val_vert2, self.val_horz2) self.gui.moveCircle1(self.move_horz1, self.move_vert1) self.gui.moveCircle2(self.move_horz2, self.move_vert2) #self.movePwmServo() #self.moveI2cServo() self.setLed() # check Adc(vert,Horz) and Sw per 50ms self.master.after(30, self.test) def move_vert(self, val): move_val = 0 if val >= 2: move_val = -10 elif val <= 0: move_val = 10 else: move_val = 0 return move_val def move_horz(self, val): move_val = 0 if val >= 2: move_val = -10 elif val <= 0: move_val = 10 else: move_val = 0 return move_val def moveI2cServo(self): self.servo.setDuty(self.servo._I2CSERVO_HORZ_0, self.val_horz1, 0, 1024) self.servo.setDuty(self.servo._I2CSERVO_VERT_0, self.val_vert2, 0, 1024) def movePwmServo(self): deg = self.sm.getDeg() if self.val_horz1 > 100: if deg < 180: deg += 10 self.sm.setDeg(float(deg)) elif self.val_horz1 < -200: if deg >= 10: deg -= 10 self.sm.setDeg(float(deg))
class RobotArmTest(tk.Frame): def __init__(self, master): # create GUI self.gpio = pigpio.pi() self.master = master self.master.title('JoyStick Test') label = tk.Label(root, text='Joystick') label.pack() self.gui = GuiRarm(master=root) self.gui.createCordinateLabelServo() self.gui.createButton(btn_name='Finish', callback=self.cleanup) #self.gui.createCircleJs2(200,200,220,220,'blue') #JoyStick instanse self.jsR = JoyStick(-1, 4, 27) self.val_horz = 0 #self.jsL = JoyStick(7,4,22) self.jsL = JoyStick(2, -1, 22) self.val_vert = 0 #Volume instance self.vol = Volume(6) self.val_vol = 0 self.vol_sum = 0 self.sampleCount = 0 #ServMotor #self.servo= ServMotor(18,180,0) self.servo = I2cServo() #PWM Freq: 60Hz self.servo.setPWMFreq(60) # Led instance self.Led = Led(4) self.Led.setLedOn() # PowrSw self.PowSw = Sw(17, pud='pudup') self.PowSwCont = 0 #display GUI def shutdown(self): self.Led.setLedOff() self.jsR.cleanup() self.jsL.cleanup() self.vol.cleanup() self.servo.cleanup() self.Led.cleanup() # release pigpio resources self.gpio.stop() os.system("sudo shutdown -h now") def cleanup(self): print('Test Finished') self.Led.setLedOff() self.jsR.cleanup() self.jsL.cleanup() self.vol.cleanup() self.servo.cleanup() self.Led.cleanup() # release pigpio resources self.gpio.stop() sys.exit() # Flashing LED Test No.1 def test(self): if self.PowSw.getState() == 'Pressed': self.PowSwCont += 1 if self.PowSwCont == 10: print 'Pressed' print 'Shutdown!' self.shutdown() else: self.PowSwCont = 0 self.val_horz = self.jsR.getValHorz() self.val_vol = self.vol.getValVol() / 4 self.val_vert = self.jsL.getValVert() self.moveI2cServoHorz() self.moveI2cServoVert() self.moveI2cServoVol() self.gui.renewCordinateServo(self.duty_horz, self.duty_vert, self.val_vol) #call self.test() per 6msec self.master.after(6, self.test) def moveI2cServoHorz(self): self.duty_horz = self.servo.getDuty(self.servo._I2CSERVO_HORZ_0) # print ('horzduty :%d' %duty) # turn to -90 if self.val_horz >= 2: self.duty_horz += 5 # turn to 90 elif self.val_horz <= 0: self.duty_horz -= 5 # dont turn else: return self.servo.setDuty(self.servo._I2CSERVO_HORZ_0, self.duty_horz) def moveI2cServoVert(self): self.duty_vert = self.servo.getDuty(self.servo._I2CSERVO_VERT_0) # print ('vertduty :%d' %duty) # turn to -90 if self.val_vert >= 2: self.duty_vert -= 5 # turn to 90 elif self.val_vert <= 0: self.duty_vert += 5 # dont turn else: return self.servo.setDuty(self.servo._I2CSERVO_VERT_0, self.duty_vert) def moveI2cServoVol(self): if self.sampleCount < 5: self.vol_sum += self.val_vol self.sampleCount += 1 else: val = self.vol_sum / 5 self.servo.setAdValtoDuty(self.servo._I2CSERVO_VOL_0, val, 0, 255) self.sampleCount = 0 self.vol_sum = 0