概要
小龟主控板拥有一套非常简洁的管脚端口操作语法。
查询触摸状态(is_pressed)
语法:
Pin.is_pressed()
car.touch.is_pressed(pin)
说明:
查询指定的管脚是否处于被触摸中。
参数:
pin 管脚名称
返回值 返回是否被触摸
范例:
#查询按键A是否被按下
A.is_pressed()
#另一种写法
car.touch.is_pressed(A)
#查看返回结果,按下返回True,未按下返回False
print(A.is_pressed())
GPIO功能(gpio)
语法:
car.gpio(pin) #读管脚
car.gpio(pin, val) #写管脚
说明:
设置或者读取指定管脚的状态。
参数:
pin 管脚名称
val 设置管脚状态 0-设置管脚为低位,1-设置管脚为高位, 缺省为读取管脚当前状态。
返回值 返回管脚状态
范例:
#读取A1管脚的状态
car.gpio(A1)
#设置A1管脚低电位
car.gpio(A1,0)
打开管脚(on)
语法:
car.on(pin)
Pin.on()
说明:
设置指定管脚输出高位信号。
参数:
pin 管脚名称
范例:
#打开D3管脚
car.on(D3)
#另一种写法
D3.on()
关闭管脚(off)
语法:
car.off(pin)
Pin.off()
说明:
设置指定管脚输出低位信号。
参数:
pin 管脚名称
范例:
#关闭管脚SCL
car.off(SCL)
#另一种写法
SCL.off()
查询管脚状态(val)
语法:
car.val(pin)
Pin.val()
说明:
查询管脚当前状态。
参数:
pin 管脚名称
返回值 返回管脚状态
范例:
#查询管脚SDA的状态
car.val(SDA)
#另一种写法
SDA.val()
#查看返回值
print(car.val(SDA))
发送脉冲(pulse)
语法:
pin.pulse(level, keep)
car.pin.pulse(level, keep)
说明:
输出指定高低位指定时长的脉冲信号。
参数:
pin 管脚名称
level 脉冲信号状态,0-低位, 1-高位
keep 脉冲持续时长
范例:
#在A1管脚上发送10毫秒的高位脉冲信息
car.A1.pulse(1, 0.01)
#另一种写法
A1.pulse(1, 0.01)
操控舵机(servo)
语法:
car.servo(pin, angle, 耗时)
car.servo(pin,angle)
pin.servo(angle)
说明:
设置接在指定管脚上的舵机角度。
参数:
pin 管脚名称
angle 舵机角度 0 - 180,代表0到180度。
耗时 期望用多少秒实现舵机旋转到指定角度。
返回值 返回管脚状态
范例:
#控制接在A1管脚上的舵机旋转到90度
car.servo(A1, 90)
#另一种写法
A1.servo(90)
#控制接在A1管脚上的舵机用2秒的时间旋转到90度(标点符号使用英文输入法)
car.servo(A1,90,2)
设置PWM信号频率(pwm_freq)
语法:
car.pwm_freq(pin, freq)
说明:
设置整块主控板的PWM输出频率。
参数:
pin 管脚名称
freq PWM输出频率
范例:
#设置主控板PWM信号频率为100Hz
car.pwm_freq(A1, 100)
设置PWM信号占空比(pwm_duty)
语法:
car.pwm_duty(pin, duty)
说明:
设置指定管脚输出的PWM信号的占空比。
参数:
pin 管脚名称
duty PWM信号的占空比, 0 - 100,代表0%到 100%。
范例:
#设置A1管脚发送50%占空比的PWM信号
car.pwm_duty(A1, 50)
ADC接口
概要
小龟小车主控板以下管脚支持ADC功能。
正面:D1、D2
背面:
另外小龟小车也使用了ADC功能对锂电池正极进行电压测量。
一、测量电池电压(battery)
语法:
car.adc.battery()->int
说明:
测量接在小龟小车主控板锂电池接口上的电池电压。该测量电压值可以用来判断剩余电量。
参数:
返回值 电池电压,单位毫伏(mV)。
范例:
#测量电池电压
car.adc.battery()
#查看返回值,3920 代表电池电压3920mV,也就是3.92V
print(car.adc.battery())
二、测量管脚电压(val)
语法:
car.adc.val(pin)->float
说明:
测量接在对应管脚上的电压,该功能可以用在诸如电压型的操作杆。
参数:
pin 管脚名称,请参考页头的管脚支持列表
返回值 电池电压,单位福特(V)。
范例:
#测量管脚电压
car.adc.val(D1)
#查看返回值, 3.92 代表接在管脚D1上的传感器管脚电压是3.92V
print(car.adc.val(D1))
DAC接口
概要
小龟小车主控板以下管脚支持DAC功能
正面:A1、A2
输出指定电压(dac)
语法:
car.dac(voltage:float)
说明:
在小龟小车主控板指定管脚上输出指定电压。
参数:
voltage 希望输出电压大小, 单位福特(V)。
范例:
#在A1管脚输出2.2V电压
car.dac(A1, 2.2)
I2C用户总线接口
概要
小龟小车支持一路用户I2C总线,默认管脚是主板正面D3管脚边上的SCL、SDA。
一、打开总线(open)
语法:
car.i2c.open()
car.i2c.open(speed)
说明:
以指定的参数打开用户I2C总线。
参数:
speed 指定I2C用户总线的通讯速率,默认100kbps。
返回值 打开是否成功。
范例:
#以400kbps速率打开默认用户总线
car.i2c.open(400000)
二、扫描总线(scan)
语法:
car.i2c.scan()
说明:
扫描当前用户总线,并返回发现的传感器地址。
参数:
返回值 发现的传感器地址列表
范例:
#扫描用户I2C总线
car.i2c.scan()
#返回 [0, 11, 59]
三、读取数据(read)
语法:
car.i2c.read(addr:int, reg:int)
car.i2c.read(addr:int, reg:int, count:int)
说明:
从指定地址的传感器的指定内部数据寄存器位置读入指定数量的数据。
参数:
addr 需要读取的传感器I2C地址。
reg 需要读取的传感器内部数据寄存器地址。
count 需要读取的数据个数,默认1字节。
返回值 读到的数据
范例:
#读取地址为109的传感器的内部数据寄存器位置为11处1个字节数据
car.i2c.read(109, 11, 1)
四、不指定寄存器读取数据(read_raw)
语法:
car.i2c.read_raw(addr:int)
car.i2c.read_raw(addr:int, count:int)
说明:
从指定地址的传感器的读入指定数量的数据。
参数:
addr 需要读取的传感器I2C地址。
count 需要读取的数据个数,默认1字节。
返回值 读到的数据。
范例:
#读取地址为109的传感器的1个字节数据
car.i2c.read(109, 1)
五、写入数据(write)
语法:
car.i2c.write(addr:int, reg:int)
car.i2c.write(add:int, reg:int, count:int)
说明:
向指定地址的传感器内部指定位置的数据寄存器写入指定长度的数据。
参数:
addr 需要写入的传感器I2C地址。
reg 需要写入的传感器内部数据寄存器地址。
count 需要写入的数据个数,默认1字节。
返回值 处理是否成功。
范例:
#向地址为105的传感器的第57个内部数据寄存器写入1个字节的数据19
car.i2c.write(105, 57, [19])
六、不指定寄存器写入数据(write_raw)
语法:
car.i2c.write(addr:int, reg:int)
car.i2c.write(add:int, reg:int, count:int)
说明:
向指定地址的传感器写入指定长度的数据。
参数:
addr 需要写入的传感器I2C地址。
reg 需要写入的传感器内部数据寄存器地址。
count 需要写入的数据个数,默认1字节。
返回值 处理是否成功。
范例:
#向地址为105的传感器写入2个字节的数据19和36
car.i2c.write(105, [19, 36])
I2C系统总线接口
概要
小龟小车主控板设计了一路用于主控板板载芯片通讯的I2C总线,这路I2C系统总线会在主控板开机后,自动加载。
一、读取数据(read)
语法:
car.i2csys.read(addr:int, reg:int)
car.i2csys.read(addr:int, reg:int, count:int)
说明:
从指定地址的传感器的指定内部数据寄存器位置读入指定数量的数据。
参数:
addr 需要读取的传感器I2C地址。
reg 需要读取的传感器内部数据寄存器地址。
count 需要读取的数据个数,默认1字节。
返回值 读到的数据。
二、不指定寄存器读取数据(read_raw)
语法:
car.i2csys.read_raw(addr:int)
car.i2csys.read_raw(addr:int, count:int)
说明:
从指定地址的传感器的读入指定数量的数据。
参数:
addr 需要读取的传感器I2C地址。
count 需要读取的数据个数,默认1字节。
返回值 读到的数据。
三、扫描总线(scan)
语法:
car.i2csys.scan()
说明:
扫描当前用户总线,并返回发现的传感器地址。大部分传感器是一个传感器一个地址,但也有不少传感器会存在多个地址
参数:
返回值 发现的传感器地址列表
四、写入数据(write)
语法:
car.i2csys.write(addr:int, reg:int)
car.i2csys.write(add:int, reg:int, count:int)
说明:
向指定地址的传感器内部指定位置的数据寄存器写入指定长度的数据。
参数:
addr 需要写入的传感器I2C地址。
reg 需要写入的传感器内部数据寄存器地址。
count 需要写入的数据个数,默认1字节。
返回值 处理是否成功
五、不指定寄存器写入数据(write_raw)
语法:
car.i2csys.write(addr:int, reg:int)
car.i2csys.write(add:int, reg:int, count:int)
说明:
向指定地址的传感器写入指定长度的数据。
参数:
addr 需要写入的传感器I2C地址。
reg 需要写入的传感器内部数据寄存器地址。
count 需要写入的数据个数,默认1字节。
返回值 处理是否成功