用Python控制鸿蒙开发板,YYDS!

话说很久以前,我将 MicroPython 的解释器给“挖”了出来,然后做了适配,成功运行于鸿蒙设备(Hi3861)之上。

详见前一篇帖子:《使用 Python 开发鸿蒙设备程序(0-初体验)

然而,这在本质上也就只是一件装酷的事,除了写个 Hello World 体验资源受限设备上的 Python 语言程序设计之外,基本一无是处......

为了实现最初的梦想:通过 Python 降低鸿蒙设备开发的门槛。最近我又开始躁动起来,大刀阔斧的在之前工作的基础上做了 Python SDK 的设计和开发。终于,现在可以直接用 Python 来控制鸿蒙开发板外设了。

我之前的帖子《<<鸿蒙开发板外设控制>>直播图文版(2020.10.28)》中涉及的案例都可以用 Python 完成!

大家看完这篇帖子后,可以尝试使用 C 和 Python 来实现相同的功能,体会一下不同。

OK!我们进入正题,直接上 Python 代码学习!

在这里给大家做一点点概念上的科普,帮助大家更好的理解代码。GPIO(General Purpose Input/Output)即:通用型输入输出的简称。

其物理表现形式为:可接收或输出电信号的引脚,使用者可根据需要将其作为输入(GPI)或输出(GPO)使用。并且, 一般情况下,开发板上都有多个 GPIO 引脚供使用。

当 GPIO 作为输出使用时,输出的电信号为高电平(1)或者低电平(0),因此,只要在电路上稍加设计就可以接入外设(如:LED 灯,电动机,等),并通过程序控制外设的状态。

有了这些概念之后,上面的示例的代码理解起来就简单了!无非就是将 LED 灯(一种外设)接入第 7 号 GPIO 引脚,并通过程序设置第 7 号引脚输出高电平,点亮 LED 灯。

如果只是单纯的通过代码点亮一个 LED 灯,是真的不难,但也是真的挺无聊。所以,再给大家一个稍微复杂一点的示例:通过开关控制 LED 灯的状态。

“Show me the code!”

这个示例看起来挺吓人的,比上一个示例复杂了一些。然而,本质却依旧是 GPIO 外设控制。

在硬件连接上,第 11 号 GPIO 引脚接入了一个按键,其目的是接收按键的信号,既然是接收信号那么显然 GPIO 基本功能应该设置为“输入”(与连接 LED 的第 7 号 GPIO 基本功能设置相反)。

并且,将初始状态设置为高电平(pull up)态,当引脚电平从高电平转为低电平(按键被按下)时触发中断。

最后,设置中断触发后调用的函数为 button_callback,当这个函数被调用时会通过 GPIO_7 改变外接 LED 灯的状态。

整个过程如下图所示:

相信大家已经迫不及待想要动手实战,体验一下 Python 操作外设的快感了。

OK!方法如下:

  • 下载附件中的 libdtpython.a 并存储到 /code/vendor/hisi/hi3861/hi3861/build/libs。

  • 编写 Python 代码并使用工具 Txt2CStr.exe 转换为 C 数组。

  • 将转换后的代码加入附件中的 demo 工程中编译并执行。

注意:
  • 由于在 Python 中提供了 i2c 相关接口,因此,需要改动文件 user_config.mk

  • 路径:/code/vendor/hisi/hi3861/hi3861/build/config/usr_config.mk

  • 配置:CONFIG_I2C_SUPPORT=y

代码已经开源,记得给个星星哦!

https://gitee.com/delphi-tang/python-for-hos
Enjoy it!
(0)

相关推荐

  • gpio引脚介绍 树莓派3b

    陈拓chentuo@ms.xab.ac.cn 2018.06.09/2018.06.10 从网上下载了几张精美的图片,感谢图片的制作者! 0. 概述 本文介绍树莓派 Zero W的GPIO控制,并用L ...

  • 学习单片机,还是要按部就班,不管8位,还是32位,就这么学

    不管是8位的单片机,还是32位的单片机,都是很容易学的.如果之前学过8位单片机,有8位单片机的基础,那么学习32位单片机就更加容易了.即使没有学过8位单片机,直接学习32位单片机也是可以的.在学习单片 ...

  • STM32CubeIDE下载安装

    STM32CubeIDE下载安装

  • Go 最小硬件编程(第一部分)

    我们能够让 Go 在多低的配置下运行并做一些实用的事情呢? 最近我购买了这个特别便宜的开发板: 购买它,我基于以下三个理由:第一,我(作为一个程序员)从未搞过 STM32F0 系列的开发板:第二,ST ...

  • 巧用1个GPIO控制2个LED显示4种状态

    很多电子产品有状态指示灯,比如电视机: 待机状态亮红灯 开机状态亮绿灯 实现起来很简单,微控制器MCU的两个GPIO分别控制就行: 不过资源总是紧张的,有时候会碰到GPIO不够用的情况. 如果只用1个 ...

  • 【Linux笔记】LED驱动程序

    前言 学STM32我们从点灯开始,学Linux驱动我们自然也要点个灯来玩玩,尽量在从这些基础例程中榨取知识,细抠.细抠,为之后更复杂的知识打好基础. 与硬件无关的LED驱动 回顾hello驱动程序,我 ...

  • 9.Cortex-A9LED汇编、C语言驱动编写

    https://m.toutiao.com/is/eYrknJp/ 0. 前言 一般我们购买一个开发板,厂家都会给出对应的电路图文件,我们可以通过搜索对应名称来查找到对应的外设.对于驱动工程师来说,我 ...

  • 史上最全的LED点灯程序,你都掌握了吗?

    干货福利,第一时间送达! 摘要:你点亮过多少板子的LED灯呢?有很多小伙伴留言说讲一下STM32.FPGA.Liunx他们之间有什么不同.不同点很多,口说无凭,今天就来点亮一下STM32.FPGA和L ...

  • 小表妹想学鸿蒙(HarmonyOS)开发板,于是我翻出了所有的鸿蒙开发板!

    最近收集了一些鸿蒙开发板,如Neptune,HiSpark系列.以及小熊派的开发板,现在就分别介绍一下这些开发板的基本功能,以及他们之间的区别和如何选购.在后期我会基于这些开发板做一些视频课程和写一些 ...

  • HarmonyOS | 小熊派鸿蒙开发板初体验

    之前小熊派鸿蒙开发板还没开售的时候,小熊派官方给我送了一套,这是小熊派第三次给我送开发板了,开发板还是一如既往的精致: 因为时间安排不过来,所以一直没有拿出来玩.正好处于年底,又到新的一年立flag的 ...

  • iTOP3399开发板GPIO子系统-应用层控制GPIO

    GPIO 是比较常用的资源,比如说控制 LED 灯亮灭,控制 LCD 上电,控制模块的复位电路,做外设的中断脚等等,这些都有对 GPIO 的操作和使用,所以说,GPIO 开发是驱动开发中必不可少的操作 ...

  • 【教程】Banana Pi BPI-F2P 工业控制开发板如何从SD卡与eMMC启动

    Install Win32DiskImager 安装Win32DiskImager Open win32diskimager-1.0.0-install, choose "I accept ...

  • 【新提醒】HC32L072开发板之 KEY控制LED

    开发板上LED与KEY的原理图如图1所示,可以用SW1和SW2分别控制DS1和DS2.其程序如下: 图1  LED与KEY原理图 实现控制功能的程序如下: /********************* ...

  • 【新提醒】基于HC32F460开发板的电机驱动及调速控制

    步进电机是一种常用的执行器件,使用它能进行精准的定位及转速调节等工作.一个简单的步进电机驱动要由步进电机.驱动电路及微控制器构成,见图1所示. 图1 步进电机驱动构成 在HC32F460开发板上,提供 ...

  • 【新提醒】HC32F460开发板的程序下载及LED控制

    我使用的HC32F460开发板是基于HC32F460JETA,共有48个引脚.所使用的开发工具,则是第三方的雅特力调试下载器AT_LINK. 该开发板有别于原厂的HC32F460开发板,其LED灯的原 ...

  • 迅为IMX6开发板Android应用-AndroidStudio-calculator测试

    本章配套资料在网盘资料"迅为iTOP-i.MX6 开发板资料汇总(不含光盘资料)\06_iTOP-iMX6 开发板 Android应 用 开 发 环 境 软 件 以 及 源 码 \08_An ...

  • 安卓开发板OrangePi Zero2外接USB无线网卡测试示例

    目前Zero2开发板测试过的能用的 USB 无线网卡型号为:RTL8723BU,其他型号的 USB 无线网卡请自行测试,如果无法使用就需要移植对应的 USB 无线网卡驱动 1) 首先将 RTL8723 ...