DIY人脸跟踪电风扇送女朋友(2)
生活随笔
收集整理的這篇文章主要介紹了
DIY人脸跟踪电风扇送女朋友(2)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
接著之前的內(nèi)容,我們來編寫一下云臺控制的代碼。實際上由于安裝了開源的Adafruit_Python_PCA9685模塊,操作舵機非常的簡單。這里我們把舵機的控制分成x軸和y軸,x軸可以像左或者向由旋轉一定的角度。y軸可以向上或者向下旋轉一定的角度。所以舵機控制的接口定義為:
# channel 控制x軸還是y軸 # direction 控制方向,對應x軸的left或者right, y軸的up和down # angle 為旋轉的角度,0 - 45 度之間 def ServoControl(channel, direction, angle):...# 如果想讓云臺像左轉動15度,如下調(diào)用方式: ServoControl('x', 'left', 15)# 如果想讓云臺像上轉動20度,如下調(diào)用方式: ServoControl('y', 'up', 20)# 如果想讓云臺恢復到水平中間位置,如下調(diào)用方式: ServoControl('x', 'left', 0) #'right' 也可以 ServoControl('y', 'up', 0) #'down' 也可以下面是完整的舵機控制代碼:
from __future__ import division import time import Adafruit_PCA9685 import threadingplus_y_up = 350 plus_y_down = 550 plus_y_middle = int((plus_y_up + plus_y_down) / 2) plus_y_half = int((plus_y_down - plus_y_up) / 2) plus_y_current = plus_y_middleplus_x_left = 600 plus_x_right = 150 plus_x_middle = int((plus_x_left + plus_x_right) / 2) plus_x_half = int((plus_x_left - plus_x_right) / 2) plus_x_current = plus_x_middlepwm = Nonedef ServoInit():global pwmpwm = Adafruit_PCA9685.PCA9685()pwm.set_pwm_freq(60)pwm.set_pwm(0, 0, plus_x_current)pwm.set_pwm(1, 0, plus_y_current)def ServoControl(channel, direction, angle):global pwm angle_max = 45if angle > angle_max:angle = angle_maxratio = float(angle) / angle_maxif channel == 'x':if direction == 'right':plus = plus_x_middle - int(plus_x_half * ratio)if direction == 'left':plus = plus_x_middle + int(plus_x_half * ratio)print(plus)pwm.set_pwm(0, 0, plus)if channel == 'y':if direction == 'up':plus = plus_y_middle - int(plus_y_half * ratio)if direction == 'down':plus = plus_y_middle + int(plus_y_half * ratio)print(plus)pwm.set_pwm(1, 0, plus)if __name__ == '__main__': while True:ServoControl('x', 'right', 45) time.sleep(1)ServoControl('x', 'right', 0) time.sleep(1)ServoControl('x', 'left', 45)time.sleep(1)今天暫時就把云臺代碼寫好吧。
總結
以上是生活随笔為你收集整理的DIY人脸跟踪电风扇送女朋友(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ps 通道人像磨皮,3 步快速修出光滑细
- 下一篇: DIY人脸跟踪电风扇送女朋友(3)