源师兄Python API文档

pin模块

概述

源师兄内部开放一个11个pin接口,分别为:0,1,2,5,8,11,12,13,14,15,16

API描述

pin类位于ohcode模块下

示例

from ohcode import pin
#初始化pin
pin1=pin(1, pin.IN)
#读取数据
pin1.read_digital()

构造函数

pin1 = pin(id,mode)

【参数】

  • id: 引脚号,取值:[0,1,2,5,8,11,12,13,14,15,16]
  • mode: 输入(pin.IN)或输出模式(pin.OUT)

read_digital

pin1.read_digital()

【参数】

【返回值】

  • 读取到的数字值:0或1

write_digital

pin1.write_digital(value)

【参数】

  • value: 参数值:0或1

【返回值】

pwm模块

API描述

源师兄内部开放一个6个pwm接口,分别为:0,1,2,8,12,13

示例

from ohcode import pwm
#初始化pwm
pwm1=pwm(1)
#设置占空比
pwm1.duty(50)
#设置频率
pwm1.freq(2000)

构造函数

pwm1 = pwm(id,freq=10000, duty=0)

【参数】

  • id: 引脚号,取值:[0,1,2,8,12,13]
  • freq: PWM通道输出频率
  • duty: PWM通道输出占空比,指高电平占整个周期的百分比,取值:[0,100],可选参数,默认0

duty

pwm1.duty(value)#获取或设置PWM通道输出占空比

【参数】

  • value: PWM通道输出占空比,可选参数,如果不传参数则返回当前占空比

【返回值】

  • 返回空或当前PWM通道输出占空比

freq

pwm1.freq(value)#获取或设置PWM通道输出频率

【参数】

  • value: PWM通道输出频率,可选参数,如果不传参数则返回当前频率

【返回值】

  • 返回空或当前PWM通道输出频率

adc模块

API描述

源师兄内部开放一个4个ADC接口,分别为:1,2,13,14

示例

from ohcode import adc
#初始化adc
adc1=adc(1)
#读取数据
adc1.read_analog()

构造函数

adc1 = adc(id)

【参数】

  • id: 端口号,有效值:1,2,13,14

read_analog

adc1.read_analog()

【参数】

【返回值】

  • 模块的模拟值(0-4095)

I2C模块

API描述

源师兄开放1个I2C硬件模块,支持标准100kb/s,快速400kb/s模式,高速模式3.4Mb/s。

示例

from machine import I2C
# i2c0 init 100KHz clock
i2c = I2C(1, freq=100000)
# 扫描I2C总线上的设备
i2c.scan()
# 从总线设备设备addr中读取全部数据
i2c.readinto(addr)
# 从总线设备设备addr中读取len长度的数据
i2c.readfrom(addr, len)
# 从总线设备addr中读取数据并将数据存到buf中
i2c.readfrom_into(addr, buf)
# 向总线设备addr发送数据buf
i2c.writeto(addr, buf)
# 向总线设备addr的memaddr写入buff的men_size个字节
i2c.writeto_mem(addr, memaddr, buf, mem_size)

构造函数

i2c = I2C(id, freq=100000)

【参数】

  • id: 1
  • freq: I2C时钟频率

scan

 i2c.scan() #扫描I2C总线上的从机

【参数】

【返回值】

  • list 对象, 包含了所有扫描到的从机地址

readinto

i2c.readinto(addr) #从总线读取全部数据

【参数】

  • addr: 从机地址

【返回值】

  • 读取到的数据,bytes 类型

readfrom

i2c.readfrom(addr, len) #从总线读取一定长度的数据

【参数】

  • addr: 从机地址
  • len: 数据长度

【返回值】

  • 读取到的数据,bytes 类型

readfrom_into

i2c.readfrom_into(addr, buf) #读取数据并放到制定变量中

【参数】

  • addr: 从机地址
  • buf: bytearray类型, 定义了长度,读取到的数据存放在此

【返回值】

writeto

i2c.writeto(addr, buf) #发送数据到从机

【参数】

  • addr: 从机地址
  • buf: 需要发送的数据

【返回值】

  • 成功发送的字节数

writeto_mem

i2c.writeto_mem(addr, memaddr, buf, mem_size=8) #写数据到从机寄存器

【参数】

  • addr: 从机地址
  • memaddr: 从机寄存器地址
  • buf: 需要写的数据
  • mem_size: 寄存器宽度, 默认为8位

【返回值】

uart模块

API描述

源师兄内部开放一个硬件串口

示例

from machine import UART
#初始化串口
uart=UART(2)
uart.init(9600, bits=8, parity=None, stop=1)
uart.write("Hello word. \r\n")
#串口读取数据
r = uart.read()
#读取数据到buffer
b = bytearray(8)
r = uart.readinto(b)
#关闭串口
uart.deinit()

构造函数

uart = UART(id, baudrate=115200,bits=8, parity=None, stop=1)

【参数】

  • id: UART号,有效值2
  • baudrate: UART波特率,可选参数,默认115200
  • bits: 每个字符的位数,7、8 或 9,可选参数
  • parity:是奇偶校验,0(偶数)或 1(奇数),默认为None
  • stop:是停止位数,1 或 2,默认为1

init

 uart.init(baudrate=115200,bits=8, parity=None, stop=1)

【参数】

  • baudrate: UART波特率,可选参数,默认115200
  • bits: 每个字符的位数,7、8 或 9,可选参数
  • parity:是奇偶校验,0(偶数)或 1(奇数),默认为None
  • stop:是停止位数,1 或 2,默认为1

【返回值】

read

uart.read([nbytes]) # 读取字符。若指定nbytes,则最多读取该数量的字节。否则可读取尽可能多的数据。

【参数】

  • nbytes: 最多读取nbytes字节,可选参数

【返回值】

  • 一个包括读入字节的字节对象

readinto

uart.readinto(buf[, nbytes])  #将字节读取入buf。若指定nbytes,则最多读取该数量的字节。否则,最多读取len(buf)数量的字节

【参数】

  • buf: 一个buffer对象
  • nbytes: 最多读取nbytes字节,可选参数

【返回值】

  • 读取并存入buf的字节数

write

uart.write(buf)  #将字节缓冲区写入UART。

【参数】

  • buf: 一个buffer对象

【返回值】

  • 写入的字节数

deinit

uart.deinit()  #释放UART资源

【参数】

【返回值】

timer模块

API描述

源师兄中一共有两个定时器,但只开放了0号计时器

示例

 from machine import Timer
 #实例化一个定时器
 Tim1 = Timer(0)
 Tim1.init(period=500, mode=Timer.PERIODIC, callback=lambda t:print("I am one periodic time"))
 tim1.init(period=300, mode=Timer.ONE_SHOT, callback=lambda t:print('I am one shot time'))
 Tim1.value()

构造函数

Timer(index, mode=Timer.PERIODIC, freq=-1,period=-1,callback=None,arg=None)

【参数】

  • index: Timer号,取值:0代表硬件定时器
  • mode: 运行模式,单次(Timer.ONE_SHOT)或周期(Timer.PERIODIC),可选参数
  • freq: Timer运行频率,支持浮点,单位Hz,可选参数
  • period: Timer运行周期,单位ms,可选参数
  • callback: 超时回调函数,必须设置,要带一个参数
  • arg: 超时回调函数参数,可选参数

【返回值】

  • timer对象:Timer(index, mode, period),通过value可以获取定时器的index

init

 Timer.init(mode=Timer.PERIODIC, freq=-1,period=-1,callback=None, arg=None) #初始化定时器参数

【参数】

  • mode: 运行模式,单次或周期,可选参数
  • freq: Timer运行频率,支持浮点,单位Hz,可选参数,优先级高于period
  • period: Timer运行周期,单位ms,可选参数
  • callback: 超时回调函数,必须设置,要带一个参数
  • arg: 超时回调函数参数,可选参数

【返回值】

  • timer对象:Timer(index, mode, period),通过value可以获取定时器的index

deinit

timer.deinit() #释放Timer资源

【参数】

【返回值】

oled模块

API描述

源师兄板载一个oled屏幕,可用于输出文字和表情图案

示例

from ohcode import oled
#显示文字
oled.show('您好,中国!')
#显示表情
oled.show('\:HEART')
#按行显示
oled.show_by_line('您好,中国!',1,1)
oled.flush()
#按坐标位置显示
oled.show_by_coord('您好,中国!',0,0)
oled.flush()
#按坐标位点亮位置点
oled.show_by_pixel(0,0,1)
oled.flush()

构造函数

uart = UART(id, baudrate=115200,bits=8, parity=None, stop=1)

【参数】

  • id: UART号,有效值2
  • baudrate: UART波特率,可选参数,默认115200
  • bits: 每个字符的位数,7、8 或 9,可选参数
  • parity:是奇偶校验,0(偶数)或 1(奇数),默认为None
  • stop:是停止位数,1 或 2,默认为1

show

 oled.show(content)

【参数】

  • contnet: 需要显示的内容或表情。源师兄内置12个表情符号
    • 大爱心:’\:HEART’
    • 小爱心:’\:HEART_SMALL’
    • 开心: ‘\:HAPPY’
    • 微笑: ‘\:SMILE’
    • 哭:’\:CRY’
    • 悲伤:’\:SAD’
    • 生气:’\:ANGRY’
    • 吃惊:’\:SURPRISE’
    • 对勾:’\:YES’
    • 错误:’\:NO’
    • 礼物:’\:GIFT’
    • 喜欢:’\:LIKE‘

show_by_line

oled.show_by_line(contrnt,row,col)

【参数】

  • content: 字符串
  • row: 行数,参数1-5
  • col: 列数

【返回值】

show_by_coord

oled.show_by_coord(contrnt,row,col)

【参数】

  • content: 字符串
  • row: 行坐标,参数:0-127
  • col: 列数坐标,参数:0-63

【返回值】

show_by_pixel

oled.show_by_pixel(row,col,pix)

【参数】

  • row: 行坐标,参数:0-127
  • col: 列数坐标,参数:0-63
  • pix: 参数为0(熄灭)或1(点亮),

【返回值】

bit_map(start_x,start_y,width,height,state,bmp)

bmp = bytearray([\
0X00,0X00,0X00,0X00,0X03,0XC7,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X1E,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X31,0X70,0X3F,0XFC,0X00,0X00])
oled.__BOLED.bit_map(0,0,30,30,1,bmp)#在屏幕上绘制像素图片
oled.flush()

【参数】

  • start_x:绘制起始x坐标,范围:0-127
  • start_y: 绘制起始y坐标,范围:0-63
  • width:图片的宽度
  • height:图片的高度
  • state:显示状态,0表示清除,1表示显示
  • bmp:位图数据字节数组

【返回值】

flush

oled.flush()#刷新显示,按行、坐标等显示需要使用此方法才能刷新显示内容

【参数】

【返回值】

clear_line

oled.clear_line(row,clear)#按行清除内容

【参数】

  • row: 行数
  • clear: 清除状态,默认为0

【返回值】

clear

oled.clear()#清除整个屏幕内容

【参数】

【返回值】

button模块

API描述

源师兄板载两个button按钮,分别为A、B

示例

from ohcode import button
#初始化button
but1=button(1)
#读取button状态
but1.is_pressed()
#回调函数
def smile(sw):
    print("smile")
#设置按键回调
but1.event_pressed(smile)

构造函数

but1 = button(num)

【参数】

  • num: 按键号,按键A为1,按键B为2

is_pressed

 but1.is_pressed()

【参数】

【返回值】

  • 返回当前的按键状态,按下为True,未按下为False

event_pressed

but1.event_pressed(func)#按键按下时自动调用指定函数

【参数】

  • func: 回调函数。注意定义回调函数时需要设置一个形式参数用于接收按键对象

【返回值】

wifi模块

API描述

源师兄内置WiFi功能,通过WiFi模块可以让源师兄连接到互联网,也可以通过WiFi模块让源师兄创建WiFi热点,组建临时局域网

示例

#1.连接WiFi模式
from ohcode import wifi
#连接WiFi
wifi.connect("yuanshixong","1234qwer",timeout = 3000)
#查看连接状态
print(wifi.status())
#查看连接信息
print(wifi.info())
#2.AP模式
from ohcode import wifi
#设置WiFi名和密码
wifi.set_ap("yuanshixiong","yuanshixong")
#查看是否有设备连接
print(wifi.check_isconnect())
#查看AP属性
print(wifi.ap_config())

connect

wifi.connect(ssid, psd, timeout) #设置连接参数

【参数】

  • ssid: WiFi名称(源师兄仅支持2.4G频段WiFi)
  • psd: WiFi密码
  • timeout:连接WiFi时的超时时间,单位:毫秒,默认10毫秒

【返回值】

status

 wifi.status()

【参数】

【返回值】

  • 如果连接成功,返回True
  • 否者,返回False

info

wifi.info()

【参数】

【返回值】

  • 返回连接WiFi网络的详细信息:IP 地址、子网掩码、网关和 DNS 服务器

set_ap

wifi.set_ap(ssid, psd) #开启WiFi热点

【参数】

  • ssid: 创建wifi热点的名称,用户名不能数字开头
  • psd: 创建wifi热点的密码,密码不能少于8位

【返回值】

check_isconnect

wifi.check_isconnect()

【参数】

【返回值】

  • 如果有设备连接到wifi,返回:True
  • 否则返回:False

ap_config

wifi.ap_config()

【参数】

【返回值】

  • 返回wifi热点的配置信息

mqtt模块

API描述

在具备稳定网络连接的前提下,源师兄可以通过 MQTT(消息队列遥测传输协议)实现设备间的高效物联网通信。通过该协议,源师兄能够在客户端与服务器之间进行轻量级、低延迟的消息传输,从而实现远程设备的状态监控、数据交换及控制指令的发送。

示例

from ohcode import mqtt
#连接mqtt服务
mqtt.connect('ide.ohcode.com', 1883, 'yuanshixiong', '', '', timeout=3000)
#向《msh》话题发布消息:hello!
mqtt.publish('msh','hello!')
def callback_fun():
   #获取回调消息
    msg = mqtt.message("msh")
    print("msg::",msg)
#设置消息回调
mqtt.received("msh",callback_fun)

connect

mqtt.connect(server, port, client_id, user, psd, timeout) #连接mqtt服务

【参数】

  • server : MQTT 服务器的地址。
  • port : MQTT 服务的端口号,默认值为 1883。
  • client_id :用于标识连接到服务器的客户端名称,通常是唯一的。
  • user: 用于登录 MQTT 服务的用户名。如果不需要用户名验证,可以设置为空字符串。
  • psd: 用于登录 MQTT 服务的密码。如果不需要密码验证,可以设置为空字符串
  • timeout: 连接服务器的超时时间,单位为毫秒,默认为 3000 毫秒。

【返回值】

  • 如果成功连接到 MQTT 服务,返回一个 MQTT 客户端对象;
  • 如果连接失败,返回 `None`。

message

 mqtt.message(topic) #获取话题:topic的消息

【参数】

  • topic : 话题名称

【返回值】

  • 如果检测到话题《topic》的消息,则返回消息内容
  • 否则,返回《None》

received

mqtt.received(topic,func) #设置消息回调

【参数】

  • topic : 话题名称
  • func: 回调函数

【返回值】

connected

mqtt.connected() #判断是否与MQTT服务器连接成功

【参数】

【返回值】

  • 如果成功连接到MQTT服务器,返回《True》
  • 否则,返回《False》

星闪模块

API描述

通过星闪实现源师兄与源师兄之间的数据通信。

示例-广播

#星闪通信方式一:广播(该模式下数据发送与数据接收代码相同,主要广播频道号一样,设备之间就可以收发消息)
from ohcode import sle
from ohcode import oled
#创建星闪对象
slee = sle()
#设置星闪数据通信频道号,频道号范围0-255
slee.start_adv(16)
#发送星闪消息
slee.send('hi')
#判断是否收到消息
if ((slee.received())):
#oled屏幕显示收到的消息
oled.show((slee.message()[1]))

构造函数

slee = sle()

【参数】

【返回值】

  • 星闪对象

start_adv(num)

slee.start_adv(num)#设置星闪广播频道号,频道号区间为:0-255

【参数】

  • num: 频道号

【返回值】

send(msg)

slee.send(msg)#广播消息内容

【参数】

  • msg: 文本消息内容

【返回值】

received()

slee.received()#判断设备是否收到消息

【参数】

【返回值】

  • 收到消息返回True,否则返回False

message()

slee.message()#读取消息内容,消息以列表格式返回[设备名,消息内容]

【参数】

【返回值】

  • 返回列表,列表中两个元素,第一个元素:发送消息设备信息,第二个元素:消息内容

示例-连接通信

from ohcode import sle
from ohcode import oled
import time
#创建星闪服务端对象
slee= sle('s_1')
#启动监听设备连接
slee.set_ap()
#定义一个主函数
def main():
    while True:
        #判断是否收到消息
        if (slee.received()):
            #oled显示收到的消息内容
            oled.show((slee.message()[1]))
        #给c_1客户端发送消息《hello》
        slee.send('hello','c_1',100)
        time.sleep(1)
main()
from ohcode import sle
from ohcode import oled
import time
#创建星闪客户端对象
slee= sle('c_1')
def main():
    #连接服务端
    slee.connect('s_1')
    #判断星闪是否连接成功,没有连接成功则一直等待
    while not (slee.connected()):
        time.sleep(1)
    while True:
        #发送消息给服务端
        slee.send('yes')
        #屏幕显示收到的消息
        oled.show(slee.message()[1])
        time.sleep_ms(200)
main()
滚动到顶部