接着之前的内容,我们来编写一下云台控制的代码。实际上由于安装了开源的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度,如下调用方式:
ServoControl('x', 'left', 15)# 如果想让云台像上转动20度,如下调用方式:
ServoControl('y', 'up', 20)# 如果想让云台恢复到水平中间位置,如下调用方式:
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)相关推荐

  1. DIY人脸跟踪电风扇送女朋友(1)

    女朋友的生日快到了,作为一个屌丝程序员,想要送给女朋友一个特别的礼物,最终结合现在火热的深度学习技术,选择做一个人脸跟踪电风扇,能够跟踪人脸,始终对着人脸吹,让女友无时无刻不感受到"清风徐来 ...

  2. DIY人脸跟踪电风扇送女朋友(4)

    成果展示: 如下视频所示为制作好的人脸跟踪电风扇 人脸跟踪风扇 相关代码已经放在百度网盘上面了. 链接:https://pan.baidu.com/s/188AylEd2QgOiA6YFv01N3A ...

  3. DIY人脸跟踪电风扇送女朋友(3)

    下面要重点介绍一下深度学习技术以及yolov3目标检测网络 深度学习技术: 深度学习技术实际上是从早期的人工神经网络发展而来的.本质上就是用一个函数去拟合输入(图片)到结果(目标框)的映射.因为函数本 ...

  4. 【数学建模】DIY人脸识别(原创)

    文章目录 题目 论文:DIY人脸识别技术 摘 要 1.问题的重述 2.问题的分析 3.模型的假设与符号说明 4.模型的准备 4.1 基于Adaboost算法的Haar强特征级联分类器 4.2Adabo ...

  5. TensorFlow实时任意风格迁移,送女朋友的创意礼物有了

    TensorFlow实时任意风格迁移,送女朋友的创意礼物有了 前言 自适应实例规范化 风格迁移网络 编码器结构与实现 通过反射填充(reflection padding)减少块伪影 解码器结构与实现 ...

  6. 【深度学习】DIY 人脸识别技术的探索(一)

    [深度学习]DIY 人脸识别技术的探索(一) 文章目录 摘要 问题重述 模型假设 定义与符号说明 问题分析 模型的建立与求解 参考 摘要 伴随着人工智能技术的发展,人们对信息安全有了更高的要求,传统的 ...

  7. 【深度学习】DIY 人脸识别技术的探索(二)

    [深度学习]DIY 人脸识别技术的探索(二) 文章目录 训练模型 工具 结果展示 问题二的模型建立与求解 基于 KNN 的人脸识别模型 训练模型 MTCNN 可以并行训练(3 个网络同时训练,前提是内 ...

  8. 非刚性人脸跟踪 —— 实用工具

    面向对象设计 与人脸检测和人脸识别一样,人脸跟踪也由两部分组成:数据和算法.算法通过预先储存(即离线)的数据来训练模型,然后对新来的(即在线)数据执行某类操作.因此,采用面向对象设计是不错的选择. 在 ...

  9. 非刚性人脸跟踪 —— 人脸跟踪

    人脸跟踪问题可认为是寻找一种高效和鲁棒性的方法,它能将各种面部特征的单独检测与这些特征的几何依赖性结合起来,已得到连续帧中每幅图像面部特征位置的精确估计.基于此,需仔细考虑几何依赖性的必要性.下图为用 ...

最新文章

  1. 24 location对象
  2. 【实验】DHCP、NAT配置案例
  3. linux 内存 段,Linux内存储器管理之分段机制
  4. ShardingSphere(五) 公共表配置,实现读写改操作
  5. mysql 程序编码_MySql编码
  6. 最简单的c 语言打开串口程序,一个简单的串口程序
  7. Ubuntu14.04环境编译vlc源码for安卓Android系统
  8. SPDY、HTTP/2、QUIC协议
  9. static Splitterwnd hide and show --by wyj
  10. CSS 双击页面,出现蓝色背景解决方案
  11. Python JsonPath 详细使用
  12. 诗经 - 小雅 - 六月
  13. HttpClient和HtmlUnit的比较总结以及使用技巧(一)
  14. MAC M1安装Node
  15. Python:1014 福尔摩斯的约会
  16. 1个系统节拍 c语言_【菜鸡C语言】菜鸡鼓起勇气用Dev-c++打起节奏来了
  17. 苹果开发者平台-《测试证书》生成流程
  18. 江苏省重点软件企业信息汇总(排名不分先后)
  19. 51CTO稿酬标准2016版正式发布!
  20. 找男朋友软件测试大乐,抖音2020男朋友测试题答题

热门文章

  1. NSLog中格式符列表
  2. 基于mcp940反编译Minecraft源代码
  3. 网页简单上传图片 imgareaselect插件
  4. 队列的其本应用_迷官问题
  5. win10系统mongodDB安装过程
  6. 三十四 操作文件和目录
  7. Ios KVC KVO
  8. 例题4-5 引发的static知识点
  9. 最近微信方面的更新   getUserInfo:fail scope unauthorized
  10. php json无法解析中文,json 无法解析解决方法