Python实现对小风扇的控制

1.本次小实验总共需要准备的物品包括:Pico开发板、扩展板、电脑、USB数据线、电位器模块、电机驱动模块、电机小风扇、6根母对母杜邦线。
(1).电位器模块:电位器是具有三个引出端、阻值可按某种变化规律调节的电阻元件。电位器通常由电阻体和可移动的电刷组成。当电刷沿电阻体移动时,在输出端即获得与位移量成一定关系的电阻值或电压。简而言之就是调节小风扇的转速的旋转开关,和家里的电风扇一样通过旋转开关调节风速档位,如下图1。

(2).电机驱动模块:通过主动工作来控制电机按照设定的方向、速度、角度、响应时间进行工作的集成电路。就是说当电机驱动模块接到电位器的指令(档位)时,就把电路中的电能转换为电机驱动模块所需的电能,来控制小风扇的转速,如下图。

2.实验现象:本课程是制作一个电位器调节电机小风扇速度的实验。按照下图接线后,下载程序,用手转动电位器,可以看到电机小风扇的速度会变化。


运行效果如下视屏链接
控制风扇的效果视频

3.我们使用Thonny这个编程软件进行编程和程序的运行。
下面是对代码的个人理解,非常简单通俗化。
from machine import Pin, PWM, ADC #从机器内置函数里引用Pin引脚和PWM脉冲宽带调制和ADC数模转换器
import utime #引用utime定时函数,也就是可以用来设定某个工作过程的时间
rp = ADC(28) #初始化电位器引脚,电位器IO端连接是Pico开发板的扩展板上的引脚GP28
pwm1 = PWM(Pin(13)) #PWM输出初始化,电机引脚,因为我们电机驱动模块IN4端口连接的引脚Pico开发板扩展板的引脚是GP13
pwm1.freq(1000) # 设置频率
conver_100 = 101 / (65536)# 数值转化参数
def my_map(x, in_min, in_max, out_min, out_max): #定义一个my_map()函数,定义输入和输出的最大值和最小值四个参数和一个X参数
return int((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)# 数值重映射(把电位器的值与电机模块的值一一对应),就是说把电位器的信号(数值)转换为电机模块能够理解的脉冲
def pwm_motor(speed): #定义一个pwm_motor函数,并给函数定义一个speed参数,设置风扇的转速,speed=[0, 100]
if speed > 100 or speed < 0: #如果风扇的转速大于100或者小于0,就返回重新获取0到100之间的速度
print(‘Please enter a limited speed value of 0-100’)
return
pulse = my_map(speed, 0, 100, 0, 65535)
#如上面的代码pluse=(speed-0)(65535-0)/(100-0)+0=65535speed/100,把speed这个信号的值转换为脉冲值
print(pulse) #输出pluse
pwm1.duty_u16(pulse) #电机根据这个脉冲值进行风扇的转速的控制
while True:
val_rp = int(rp.read_u16() * conver_100)
# 把读取的电位器数值转化成[0, 100]
utime.sleep(.1) #设定睡眠时间1秒
pwm_motor(val_rp) # print(val_rp)

Python实现旋转按钮控制小风扇相关推荐

  1. python控制电机输出转速_Micropython Turnipbit 换挡风扇 旋转按钮控制直流电机转速...

    学过物理学的我们都知道换挡风扇的原理,一般按钮控制电感分压或者电容分压,以达到控制电流的目的.那么我们可不可以使用Turnipbit模拟这个系统呢?其实是很简单的.类似于之前用Tpyboard做的智能 ...

  2. python控制电机_[MicroPython]TurnipBit开发板旋转按钮控制直流电机转速

    1.实验目的: 学习在PC机系统中扩展简单I/O 接口的方法 学习TurnipBit拼插编程 了解直流电机的工作原理 学习L298N的工作原理 学习TurnipBit扩展板L298N和按键模块的接线方 ...

  3. Arduino 入门教程(八)旋转按钮控制LED亮度

    代码如下: // 定义旋转电位计模拟信号输入针脚号 const int analogInPin = A0; // 定义LED神灯数字信号针脚号 const int analogOutPin = 9; ...

  4. [MicroPython]TurnipBit开发板旋转按钮控制直流电机转速

    1.实验目的: 学习在PC机系统中扩展简单I/O 接口的方法 学习TurnipBit拼插编程 了解直流电机的工作原理 学习L298N的工作原理 学习TurnipBit扩展板L298N和按键模块的接线方 ...

  5. html 5音乐界面控制,使用按钮控制HTML5背景音乐开关

    演示:使用按钮控制HTML5背景音乐开关 你的浏览器不支持audio标签. $("#audio_btn").click(function() { var music = docum ...

  6. Unity骰子插值旋转的投掷功能,获得正面点数(可按钮控制上下左右插值翻转,无万向锁问题)

    标题Unity骰子插值旋转的滚动投掷功能,和点数的获得 功能效果展示 可按钮控制上下左右插值翻转,无万向锁问题. 有需要demo的联系我,QQ:763992638

  7. Python自动化 | 通过键盘控制鼠标来玩赛尔号

    最近心血来潮回归赛尔号(十年铁皮常不请自来) 做剧情任务的时候有个小游戏,拖动黄色的按钮到达终点,白色的是存档点,途中如果碰到墙壁需要对战野怪,打赢了可以从存档点出发,但是由于刚回归,精灵跟不上时代, ...

  8. Python用 selenium 模块控制Firefox浏览器

    Python用 selenium 模块控制Firefox浏览器 需要的东西: Firefox浏览器下载地址: http://getfirefox.com/ selenium包: https://pyp ...

  9. 按钮控制动画的暂停与开始

    今天分享一篇按钮控制动画暂停开始的代码 自己研究了音乐播放器的动画暂停播放功能:先看看图片按播放,滚轮转动,按暂停滚轮则挺住,下面是代码的实现 public class SongPlayActivit ...

最新文章

  1. 数据导出Excel表格
  2. 八天学会MongoDB:第三天 细说高级操作
  3. caffe源码c++学习笔记
  4. 如何搭建AIoT智能对话交互系统:技术解析和实操分享
  5. TFS在项目中Devops落地进程(上)
  6. arm linux 进程页表,arm-linux内存页表创建
  7. 更换jdk版本_滴滴夜莺发布 v3 版本,从运维监控演化成了运维平台
  8. Java:QQ登录页面的制作(实现成功登录的代码)——含源码
  9. Tomcat 中文乱码
  10. 计算机慢怎么解决6,电脑运行速度慢怎么回事 电脑运行速度慢的解决方法
  11. 【招聘】STM32、LINUX、FPGA工程师,硬件设计工程师,待遇7000~15000!
  12. 腾讯测试岗位的面试经历
  13. coolnbsp;sensor/image/videonbsp;technbsp;cou…
  14. matlab求解三次多项式,【MATLAB编程】三次样条
  15. Windows下获取计算机名和当前用户名
  16. 企业微信个人二维码在哪里?会失效吗?
  17. 设置MyEclipse的编辑器和控制台为护眼色
  18. 纯Go实现的Firebase的替代品 | Gopher Daily (2021.08.11) ʕ◔ϖ◔ʔ
  19. java 显示中文_java显示中文乱码的解决方法
  20. 乌镇论剑:张朝阳的四张牌=两横两纵

热门文章

  1. 铜九铁路客运将于2008年9月1日正式开通
  2. matlab spline边界约束,三阶样条插值(一阶导数边界条件) matlab程序
  3. C语言——函数(下)
  4. golang 模拟键盘输入
  5. ant design Vue 纯前端实现分页
  6. Xilinx FPGA资源解析与使用系列——Transceiver(一)参考时钟解析
  7. opencv3/C++ 机器学习-决策树/DTrees
  8. Nature 曹云龙/谢晓亮等破解新冠病毒趋同进化机制,将为抗新冠病毒添新药!...
  9. F-PointNets
  10. 破解音频隐写术:结合机器学习