4141| 4
|
[AI人工智能教程] LattePanda&AI-Python控制Arduino LED灯 |
LattePanda&AI-Python控制Arduino LED灯 概述 —————————————————————————————————————————— Hello World是所有编程语言学习的第一课,但是在单片机学习中,我们的Hello World叫做Blink。Blink是什么意思呢?闪烁。其实Blink就是点亮单片机上的板载LED灯,并让它闪烁的一个程序。 本项目中我们将在LattePanda上,使用JupyterLab编写Blink程序,调用PinPong库来使Arduino UNO上的板载LED灯闪烁。 使用教学 —————————————————————————————————————————— 项目基础 —————————————————————————————————————————— 点亮板载LED灯 Arduino UNO上有自带的LED灯,它与D13口相连,我们编写程序来让它闪烁吧! 硬件准备: 主控:Arduino UNO 连接线:TypeAtoB 方口USB连接线 连接方式:使用连接线连接LattePanda与UNO 启动JupyterLab: 连接好硬件后,打开程序开发环境JupyterLab,创建项目。 1、双击桌面上的“startpage.sh”,弹出JupyterLab界面; 2、切换到“home/lattepanda/桌面/LattePanda&AI项目实战/LattePanda&AI-Python控制Arduino LED灯”项目文件目录下; 3、在右侧的“Launcher”页面中点击“Python3”,新建一个python3文档; [size=10.5000pt]4、选中新建的python3文档,右击后弹出选项框,选择“Rename”,将文件重命名为“Blink(板载LED)”; 程序编写: 项目文件创建好后,开始编程! [size=10.5000pt]1、在当前单元格中编写程序,为了使程序结构清晰,以及便于调试,我们建议你将不同功能的代码块放置于不同单元格内; 样例代码: import time from pinpong.board import Board,Pin #初始化,手动识别板型和端口号(lattepanda delta自带leonard,uno教育版需通过"!pinpong"指令查看uno端口并手动设置) Board("uno", "/dev/ttyUSB0").begin() #引脚初始化为电平输出 led = Pin(Pin.D13, Pin.OUT) #主程序,使LED闪烁的死循环 while True: #死循环 led.write_digital(1) #输出高电平 time.sleep(1) #等待1秒 保持状态 led.write_digital(0) #输出低电平 time.sleep(1) #等待1秒 保持状态[/mw_shl_code] 2、点击第一个单元格使其被蓝色框选,多次点击“运行”直至最后一个单元格被启动; 3、查看效果,Arduino Uno上的板载LED会按照亮1秒,熄灭1秒的规律闪烁; 4、如果我们想要修改小灯闪烁的频率,应该怎么修改程序?只需要修改代码中延时部分的时长即可。如图所示修改后的效果为小灯点亮2秒,熄灭1秒。 点亮外接LED灯 —————————————————————————————————————————— 硬件准备: 主控:Arduino UNO、IO 传感器扩展板 V7.1 模块:LED发光模块 硬件连接图: *将扩展板接入Arduino Uno主控板上,组装时注意对准后再压入,以防压弯插针。 *将LED模块接入10号数字引脚。 程序编写: 1、我们在接线的时候将外接LED接到了10号引脚,所以我们需要修改程序才可以点亮这颗外接的小灯,将LED_PIN 对应的引脚修改为10。 import time from pinpong.board import Board,Pin #初始化,自动识别板型和端口号 Board("uno", "/dev/ttyUSB0").begin() #引脚初始化为电平输出 led = Pin(Pin.D10, Pin.OUT) #主程序,使LED闪烁的死循环 while True: #死循环 led.write_digital(1) #输出高电平 time.sleep(1) #等待1秒 保持状态 led.write_digital(0) #输出低电平 time.sleep(1) #等待1秒 保持状态[/mw_shl_code] 2、如何编写程序使小灯有一个呼吸灯的效果?示例程序如下,运行程序,小灯就会循环执行渐渐变亮、最亮时熄灭的命令。 项目进阶 —————————————————————————————————————————— 数字信号与模拟信号 你知道什么是数字信号什么是模拟信号吗?让我们先看看数字信号与模拟信号的概念吧。 光看概念感觉特别抽象,那么我们用生活中的实例来理解,比如我们平时用到的用于开关灯的开关,开和关是两个状态,非开即关。那么对灯来说开和关就是数字信号。再想想家中如果有一个温度计的话,温度变化是一个连续变化的的数值,并不能用某个特殊的状态来表示,温度的变化就是模拟信号。 在理解了数字信号与模拟信号之后,思考一下,在本项目中控制LED灯亮灭的信号是数字信号还是模拟信号? 硬件分析 不知道同学们有没有注意到,我们在第二个呼吸灯案例的时候,LED灯是接在10号数字引脚上的,但是按照数字信号和模拟信号的概念来看,应该是模拟信号才能实现呼吸灯的效果。这里就需要我们了解一个新的知识点,PWM信号。 观察我们手中的Arduino UNO主控板的数字引脚上,是不是有些引脚号旁边有*标记(有些板子是波浪号~)这些引脚就是支持PWM信号输出的引脚。 PWM(Pulse width modulation,中文名脉冲宽度调制),脉冲宽度调制是一种模拟控制方式。在Arduino中pwm是不断的做高低电平切换模拟出一种近似模拟量的输出的效果来实现变化的。但是这里仅仅得到了近似模拟值输出的效果,如果要输出真正的模拟值,还需要在模拟引脚上执行。 附录 —————————————————————————————————————————— 如你需要深入了解pinpong库,你也可以访问官方教程网站(链接跳转https://pinpong.readthedocs.io/zh_CN/latest/index.html) |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed