前言

开发环境: 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 进行硬件开发)相关推荐

  1. STM32通过串口控制LED闪烁或者呼吸效果

    STM32通过串口控制LED闪烁或者呼吸效果 目录 STM32通过串口控制LED闪烁或者呼吸效果 1.准备工作 2.思路分析 3.实际操作 4.小结 1.准备工作 1.首先我们需要准备32的最小系统板 ...

  2. 嵌入式STM32入门之定时器控制LED闪烁与产生PWM脉冲宽度调制信号

    定时器控制LED闪烁与产生PWM脉冲宽度调制信号 一.前言 二.定时器基本介绍 (一)STM32定时器 (二)通用定时器主要功能 (三)计数器模式 (四)定时器工作原理 三.实验(1)初识定时器 (一 ...

  3. 一个按键控制LED闪烁与关闭(定时器中断)

    来源: 单片机简单程序_zhjysx的博客-CSDN博客https://blog.csdn.net/zhjysx/category_11558658.html 作用:用一个开关切换LED闪烁模式以及关 ...

  4. NE555时基电路实验(二)NE555控制LED闪烁

    NE555时基电路实验(二)NE555控制LED闪烁 实验用到的元器件: 1.NE555芯片,1片: 2. 470uF.100uF电解电容,耐压值16v,1个: 3.发光 LED,2个: 4.10千欧 ...

  5. 定时器中断控制LED闪烁(每隔1s)---普中科技开发仪

    定时器中断o,利用中断控制LED闪烁每隔1s闪烁一次(精确的1s) notes: (1)工作方式寄存器TMOD ,低四位用于To,高四位用于T1,(GATE,C/T- ,M1,M0) 一般让GATE ...

  6. 用定时器T0查询方式P0口8位控制LED闪烁

    #include<reg52.h> #define uchar unsigned char #define uint unsigned int void main (void) { uch ...

  7. STM32F103C8T6串口控制LED闪烁

    任务:开启时单片机回复已打开:关闭时在电脑显示已关闭:发 送 1 打开:发送 2 关闭. 本次学习是基于STM32的通用定时器结合串口,进行对LED灯闪烁的控制,使得延时函数时带来的误差性,以及消耗大 ...

  8. STM32实现定时器控制LED闪烁

    文章目录 一.定时器介绍 二.STM32C配置项目 1.新建工程 2.配置引脚 3.配置SYS 4.配置GPIO 5.配置定时器 6.配置中断 7.时钟配置 8.创建代码 三.修改keil代码 四.实 ...

  9. CC2530控制LED闪烁

    CC2530控制LED闪烁 CC2530 控制LED闪烁 电路图 知识点 CC2530有两个高频时钟 输入输出配置 程序及注释 CC2530 控制LED闪烁 CC2530拥有21个数字I/O(输入/输 ...

最新文章

  1. Python学习心得——基础知识(六)
  2. android 看AP 国家代码,Android WiFi 获取国家码
  3. Oracle中用For Loop 替代Cursor
  4. 直播丨墨天轮邂逅MySQL之父,腾讯云CDB/CynosDB技术揭秘之自主可控、前沿探索
  5. java代码怎样整体左移_java 多行代码左移
  6. mysql返回前2行_取得前一次MySQL操作所影响的记录行数
  7. 使用java的java 命令,直接调用执行class文件
  8. opencv(10)图像变换之边缘检测
  9. 数字化时代,如何提高企业的交易管理效率?
  10. QDateTime 和tm 的时间显示
  11. 国内quora_处理Quora不真诚问题分类问题
  12. iView组件+Django实现前后端分离上传图片
  13. 基于springboot的ShardingSphere5.2.1的分库分表的解决方案之数据加密之RSA的解决方案(九)
  14. 申请免费SSL证书教程之华为云20张免费证书
  15. day01 Redis
  16. 数据分析师有哪些等级
  17. c,c++代码格式规范
  18. 8.1 结构体的定义和使用
  19. 电脑BIOS密码的设置与修改方法
  20. 使用Python+Folium实现地理空间可视化效果

热门文章

  1. Eureka注册中心配置登录验证
  2. springboot整合thymeleaf启动错误
  3. [Codeforces Round #516][Codeforces 1063C/1064E. Dwarves, Hats and Extrasensory Abilities]
  4. 李克用置酒三垂冈赋——刘翰(清)
  5. Python.对鸢尾花数据集进行可视化操作,对数据分析
  6. C++11的更新内容--auto--右值引用和移动构造--1114
  7. docker白话版(一)简介+使用命令
  8. ubuntu 18.04初安装
  9. Python Day11 魔方方法
  10. oracle hm,Oracle 11g 新特性 – HM(Hang Manager)简介