(LattePanda)拿铁熊猫python 简单控制led闪烁(使用python 进行硬件开发)
前言
开发环境: LattePanda(拿铁熊猫)开发板, arduino, windows10
开发语言: python3.7,
首先说一下思路,这里的控制思路是通过对mcu中烧录 Firmata协议的控制代码(同官方),然后再通过python的 pymata模块根据firmata协议对mcu进行信息发送达成mpc与mcu的信息交互, 从而达到控制 gpio 13口, 由于13口的状态对应着下图开发板上亮着的那个蓝色的指示灯,所以我们对13口进行上拉下拉操作可以使得其进行闪烁.
资料索引
更详细,原理说明,参考这篇博文,和以下资料
传送门
firmata协议测试客户端: 传送门
firmata的github官方说明
firmata对应arduino使用源码
python的firmata模块调用firmata源码
参考链接1
参考链接2
参考链接3
LattePanda.Firmata是 LattePanda 提供的开源 Firmata 库,适用于在 Visual Studio 中开发的 Windows 应用程序。此类允许您从 Windows 应用程序控制 Arduino GPIO,其功能包括:
读取和写入数字引脚
读取模拟输入
控制伺服电机
通过 I2C 总线向设备发送数据和从设备接收数据 传送门
管脚说明
区域 U1 中的引脚分配给 X-Z8300 内核。
U2 区的引脚分配给 ATmega32u4 内核。区域 U2 中的 20 个数字引脚(A0 - A5、D0 - D13)中的每一个都可以用作输入或输出,每个引脚的工作电压为 5 伏。每个引脚可以输出或接收 40 mA 电流,并且每个引脚都有一个 20-50k 欧姆的内部上拉电阻(默认断开)。 注意:任何 I/O 引脚上的电流超过 40mA 可能会对 ATmega32u4 造成永久性损坏。
一些引脚具有专门的功能:
模拟输入: A0 - A5、A6 - A11(在 D4、D6、D8、D9、D10 和 D12 上)。LattePanda 有 12 个模拟输入,标记为 A0 到 A11,所有这些都可以用作数字 I/O(输入/输出)。每个引脚具有 10 位分辨率(即 1024 个不同的值)。默认情况下,它们的电压从地面测量到 5 伏。
串行: D0 (RX) 和 D1 (TX)。用于接收(RX)和发送(TX)TTL串行数据。
外部中断: D3(中断0)、D2(中断1)、D0(中断2)、D1(中断3)和D7(中断4)。这些引脚可配置为在测量低值、上升沿或下降沿或值变化时触发中断。
PWM: D3、D5、D6、D9、D10 和 D13 提供 8 位 PWM 输出。
SPI: D16 (MOSI)、D14 (味噌)、D15 (SCK)。
LED: D13 有一个由数字引脚 13 驱动的内置 LED。
TWI: D2(SDA)、D3(SCL)。板上的其他引脚:
复位:使LOW 线复位微控制器。通常用于向屏蔽添加重置按钮,该按钮可以阻止 SBC 上的功能。
拿铁熊猫上ide推荐
由于 pycharm之类的安装到 拿铁熊猫上太大了,这里使用的 thonny
并配置anaconda 环境如下图
正文
1.根据自己的拿铁熊猫版本
选择物理编程,安步骤配置环境
我这里的是 lattePanda V1.0
注意按照物理编程的说明,记得让windows处于开发者模式,然后根据手册所说将代码通过 arduino 上传进 mcu 中
2.在拿铁熊猫的python环境中,安装fyFirmata 以及 PyMata 库
传送门
其实就在python环境下pip install 安装就行了(使用anaconda的同学,记得对于自己创建的环境使用, conda activate 你创建的环境名称 在cmd中进行切换),总之你要保证thonny的python解释器和你配置的python环境一致.
**
3.最后配置好Thonny的python解释器环境,然后使用以下代码验证
**(代码来自参考链接里面)
#!/usr/bin/env python3
import time
import sys
import signalfrom PyMata.pymata import PyMata# Digital pin 13 is connected to an LED. If you are running this script with
# an Arduino UNO no LED is needed (Pin 13 is connected to an internal LED).
BOARD_LED = 13# Create a PyMata instance
board = PyMata("COM5", verbose=True)def signal_handler(sig, frame):print('You pressed Ctrl+C')if board is not None:board.reset()sys.exit(0)signal.signal(signal.SIGINT, signal_handler)# Set digital pin 13 to be an output port
board.set_pin_mode(BOARD_LED, board.OUTPUT, board.DIGITAL)time.sleep(2)
print("Blinking LED on pin 13 for 10 times ...")# Blink for 10 times
for x in range(10):print(x + 1)# Set the output to 1 = Highboard.digital_write(BOARD_LED, 1)# Wait a half second between toggles.time.sleep(.5)# Set the output to 0 = Lowboard.digital_write(BOARD_LED, 0)time.sleep(.5)# Close PyMata when we are done
board.close()
读数据例子
#!/usr/bin/env python3
import time
import sys
import signalfrom PyMata.pymata import PyMata# Digital pin 13 is connected to an LED. If you are running this script with
# an Arduino UNO no LED is needed (Pin 13 is connected to an internal LED).
BOARD_LED0 = 0
BOARD_LED1 = 1
# Create a PyMata instance
board = PyMata("COM3", verbose=True)def signal_handler(sig, frame):print('You pressed Ctrl+C')if board is not None:board.reset()sys.exit(0)signal.signal(signal.SIGINT, signal_handler)# board.set_pin_mode(BOARD_LED0, board.OUTPUT, board.DIGITAL)
board.set_pin_mode(BOARD_LED0, board.INPUT, board.DIGITAL)
board.set_pin_mode(BOARD_LED1, board.INPUT, board.DIGITAL)time.sleep(2)
i = 0
limit_num = input("输入脉冲数: ")
limit_num = eval(limit_num)
a1 = 0
while True:a = board.digital_read(BOARD_LED0)b = board.digital_read(BOARD_LED1)print("零号:" + str(a))print("一号:" + str(b))if a>b:print("正向")else:print("反向")if a != a1:a1 = ai = i + 1if i <= limit_num:i = 0limit_num = input("输入脉冲数: ")limit_num = eval(limit_num)# Close PyMata when we are done
board.close()
然后不出错的话就可以看到.拿铁熊猫上面的灯按照0.5s闪烁10次了
如下图
(LattePanda)拿铁熊猫python 简单控制led闪烁(使用python 进行硬件开发)相关推荐
- STM32通过串口控制LED闪烁或者呼吸效果
STM32通过串口控制LED闪烁或者呼吸效果 目录 STM32通过串口控制LED闪烁或者呼吸效果 1.准备工作 2.思路分析 3.实际操作 4.小结 1.准备工作 1.首先我们需要准备32的最小系统板 ...
- 嵌入式STM32入门之定时器控制LED闪烁与产生PWM脉冲宽度调制信号
定时器控制LED闪烁与产生PWM脉冲宽度调制信号 一.前言 二.定时器基本介绍 (一)STM32定时器 (二)通用定时器主要功能 (三)计数器模式 (四)定时器工作原理 三.实验(1)初识定时器 (一 ...
- 一个按键控制LED闪烁与关闭(定时器中断)
来源: 单片机简单程序_zhjysx的博客-CSDN博客https://blog.csdn.net/zhjysx/category_11558658.html 作用:用一个开关切换LED闪烁模式以及关 ...
- NE555时基电路实验(二)NE555控制LED闪烁
NE555时基电路实验(二)NE555控制LED闪烁 实验用到的元器件: 1.NE555芯片,1片: 2. 470uF.100uF电解电容,耐压值16v,1个: 3.发光 LED,2个: 4.10千欧 ...
- 定时器中断控制LED闪烁(每隔1s)---普中科技开发仪
定时器中断o,利用中断控制LED闪烁每隔1s闪烁一次(精确的1s) notes: (1)工作方式寄存器TMOD ,低四位用于To,高四位用于T1,(GATE,C/T- ,M1,M0) 一般让GATE ...
- 用定时器T0查询方式P0口8位控制LED闪烁
#include<reg52.h> #define uchar unsigned char #define uint unsigned int void main (void) { uch ...
- STM32F103C8T6串口控制LED闪烁
任务:开启时单片机回复已打开:关闭时在电脑显示已关闭:发 送 1 打开:发送 2 关闭. 本次学习是基于STM32的通用定时器结合串口,进行对LED灯闪烁的控制,使得延时函数时带来的误差性,以及消耗大 ...
- STM32实现定时器控制LED闪烁
文章目录 一.定时器介绍 二.STM32C配置项目 1.新建工程 2.配置引脚 3.配置SYS 4.配置GPIO 5.配置定时器 6.配置中断 7.时钟配置 8.创建代码 三.修改keil代码 四.实 ...
- CC2530控制LED闪烁
CC2530控制LED闪烁 CC2530 控制LED闪烁 电路图 知识点 CC2530有两个高频时钟 输入输出配置 程序及注释 CC2530 控制LED闪烁 CC2530拥有21个数字I/O(输入/输 ...
最新文章
- Python学习心得——基础知识(六)
- android 看AP 国家代码,Android WiFi 获取国家码
- Oracle中用For Loop 替代Cursor
- 直播丨墨天轮邂逅MySQL之父,腾讯云CDB/CynosDB技术揭秘之自主可控、前沿探索
- java代码怎样整体左移_java 多行代码左移
- mysql返回前2行_取得前一次MySQL操作所影响的记录行数
- 使用java的java 命令,直接调用执行class文件
- opencv(10)图像变换之边缘检测
- 数字化时代,如何提高企业的交易管理效率?
- QDateTime 和tm 的时间显示
- 国内quora_处理Quora不真诚问题分类问题
- iView组件+Django实现前后端分离上传图片
- 基于springboot的ShardingSphere5.2.1的分库分表的解决方案之数据加密之RSA的解决方案(九)
- 申请免费SSL证书教程之华为云20张免费证书
- day01 Redis
- 数据分析师有哪些等级
- c,c++代码格式规范
- 8.1 结构体的定义和使用
- 电脑BIOS密码的设置与修改方法
- 使用Python+Folium实现地理空间可视化效果
热门文章
- Eureka注册中心配置登录验证
- springboot整合thymeleaf启动错误
- [Codeforces Round #516][Codeforces 1063C/1064E. Dwarves, Hats and Extrasensory Abilities]
- 李克用置酒三垂冈赋——刘翰(清)
- Python.对鸢尾花数据集进行可视化操作,对数据分析
- C++11的更新内容--auto--右值引用和移动构造--1114
- docker白话版(一)简介+使用命令
- ubuntu 18.04初安装
- Python Day11 魔方方法
- oracle hm,Oracle 11g 新特性 – HM(Hang Manager)简介