豌豆小车/Buggy

Buggy模块是一台小车,连接主控即可控对齐进行一些控制:
1. 控制Buggy小车上的led1、led2以各种颜色发光。
2. 控制Buggy小车上的buzzer以各种频率发出声音。
3. 控制Buggy小车上的左右电机以不同得速度或方向转动。
Buggy小车具有下列传感器,可以获取一些数据:
1. 获取Buggy小车上的循迹传感器t1~t5的状态和值。
2. 获取Buggy小车上的t6、t6有无障碍物遮挡。
3. 获取Buggy小车上的光敏传感器s1、s2的值。
4. 获取Buggy小车的电池电量。

小车行驶

Buggy.run(left, right)
设置左右两个电机的转动速度
参数:
  • left (int) –

    转速:-100~100

    符号表示转动方向,绝对值为转动速度
  • right (int) –

    转速:-100~100

    符号表示转动方向,绝对值为转动速度

Examples

# 控制电机转动
from wonderbits import Buggy
import time

buggy1 = Buggy()
while True:
    # 先让左右电机都以50的功率正转
    buggy1.run(50, 50)
    time.sleep(3) # 持续3秒

    # 让a b 电机都以50的功率反转, 且舵机1,2都转到90度
    buggy1.run(-50, -50)
    time.sleep(3) # 持续3秒

    # 停止所有电机
    buggy1.stop()
    time.sleep(5) # 持续5秒

停车

Buggy.stop()
左右两个电机停止转动

Examples

未提供。可参考 run 的使用案例

控制左灯时

Buggy.set_led1(r, g, b)
设置led1灯颜色(r,g,b 参数都设置为0时,关闭LED)
参数:
  • r (int) – 红色:0~255
  • g (int) – 绿色:0~255
  • b (int) – 蓝色:0~255

Examples

# 控制led1和led2灯颜色变换
from wonderbits import Buggy
import time
buggy1 = Buggy()

# LED灯在按红-绿-蓝色变化,每次持续一秒
buggy1.set_led1(20, 0, 0)
buggy1.set_led2(20, 0, 0)
time.sleep(1)
buggy1.set_led1(0, 20, 0)
buggy1.set_led2(0, 20, 0)
time.sleep(1)
buggy1.set_led1(0, 0, 20)
buggy1.set_led2(0, 0, 20)
time.sleep(1)
buggy1.set_led1(0, 0, 0) # 关闭led1灯
buggy1.set_led2(0, 0, 0) # 关闭led2灯

控制右灯

Buggy.set_led2(r, g, b)
设置led2灯颜色(r,g,b 参数都设置为0时,关闭LED)
参数:
  • r (int) – 红色:0~255
  • g (int) – 绿色:0~255
  • b (int) – 蓝色:0~255

Examples

未提供。可参考 set_led1 的使用案例

设置蜂鸣器

Buggy.set_buzzer(fre)
设置蜂鸣器声音频率(Hz)
设置频率为0表示关闭蜂鸣器
参数:frequency (int) – 频率:0~20000 Hz

Examples

# 设置蜂鸣器音调越来越高
from wonderbits import Buggy
buggy1 = Buggy()

for f in range(20000):
    buggy1.set_buzzer(f)

获取距离值

Buggy.get_distance()
获取检测的距离值(cm)
返回:距离值,范围 0~100 cm
返回类型:float

Examples

# 显示检测的距离值
from wonderbits import Buggy, Display

buggy1 = Buggy()
display1 = Display()

while True:
    display1.print(1, 1, buggy1.get_distance())

是否检测到黑线

Buggy.is_line_detected(t=3)
判断某个循迹传感器是否检测为黑
参数:t (int) –

通道:1~5

表示t1~t5
返回:
True:对应循迹传感器全部检测为黑
False:对应循迹传感器全部检测为白
返回类型:bool

Examples

# 显示循迹传感器的状态,显示效果如下
#   ---------------------------------------
#           5个循迹传感器的检测状态
#   ---------------------------------------
from wonderbits import Buggy, Display
display1 = Display()
buggy1 = Buggy()

while True:
    for i in range(5):
        display1.print(1, 2 * i + 1, int(buggy1.is_line_detected(i + 1)))

获取s1光强

Buggy.get_light_s1()
获取s1检测的亮度值,亮度值代表相对强度,值越大代表亮度越强
返回:亮度值,范围 0~100
返回类型:float

Examples

# 显示s1和s2检测的亮度值
from wonderbits import Buggy, Display
display1 = Display()
buggy1 = Buggy()

while True:
    display1.print(1, 1, buggy1.get_light_s1())
    display1.print(2, 1, buggy1.get_light_s2())

获取s2光强

Buggy.get_light_s2()
获取s2检测的亮度值,亮度值代表相对强度,值越大代表亮度越强
返回:亮度值,范围 0~100
返回类型:float

Examples

未提供。可参考 get_light_s1 的使用案例

控制舵机

Buggy.set_servo(angle)
设置舵机转动到指定角度
使用此函数后舵机将拥有维持角度的扭矩,施加外力改变舵机的角度会很困难
参数:angle (float) – 角度:0~180

Examples

# 控制舵机变化角度
from wonderbits import Buggy
import time
buggy1 = Buggy()

while True:
    buggy1.set_servo(10)
    time.sleep(3)
    buggy1.set_servo(90)
    time.sleep(3)
    buggy1.set_servo(135)
    time.sleep(3)
    buggy1.set_servo(170)
    time.sleep(3)

黑色校准

Buggy.calibrate_with_black()
校准循迹传感器的黑色值

Examples

# 校准循迹传感器
from wonderbits import Buggy, Control, Display
import time

display1 = Display()
control1 = Control()
buggy1 = Buggy()

while True:
    # 请把5个循迹传感器对准黑色区域,按下sw1校准的黑色值
    if control1.is_sw1_pressed():
        buggy1.calibrate_with_black()

    # 请把5个循迹传感器对准白色区域,按下sw1校准的白色值
    if control1.is_sw2_pressed():
        buggy1.calibrate_with_white()

    for i in range(5):
        display1.print(1, 2 * i + 1, int(buggy1.is_line_detected(i + 1)))

校准循迹传感器的白色值

Buggy.calibrate_with_white()

Examples

未提供。可参考 calibrate_with_black 的使用案例

获取电量

Buggy.get_battery_value()
获取电池电量值
返回:电池电量值,范围 0~100
返回类型:int

Examples

# 实时显示电池电量值
from wonderbits import Buggy, Display
buggy1 = Buggy()
display1 = Display()

while True:
    display1.print(1, 1, buggy1.get_battery_value())

获取所有循迹传感器状态

Buggy.get_tracking_status()
返回:所有循迹传感器的状态
返回类型:list

Examples

# 输出循迹传感器的状态列表和灰度值列表
from wonderbits import Buggy
import time

buggy1 = Buggy()

while True:
    print(buggy1.get_tracking_status())
    print(buggy1.get_tracking_values())
    time.sleep(1)

获取所有循迹传感器灰度值

Buggy.get_tracking_values()
返回:所有循迹传感器的灰度值
返回类型:list

Examples

未提供。可参考 get_tracking_status 的使用案例

设置黑白阈值比例

Buggy.set_tracking_rate(value)
设置循迹传感器的黑白阈值百分比为value
阈值 = 循迹传感器检测的黑色值 * value% + 循迹传感器检测的白色值 * (1 - value%)
参数:value (int) – 值:0~100

Examples

# 校准循迹传感器
from wonderbits import Buggy, Control, Display
import time

display1 = Display()
control1 = Control()
buggy1 = Buggy()

while True:
    # 请把5个循迹传感器对准黑色区域,按下sw1校准的黑色值
    if control1.is_sw1_pressed():
        buggy1.calibrate_with_black()

    # 请把5个循迹传感器对准白色区域,按下sw1校准的白色值
    if control1.is_sw2_pressed():
        buggy1.calibrate_with_white()

    # 把sw3拨到1一端,设置循迹传感器的阈值百分比为sw4的值
    if control1.is_sw3_at_1():
        buggy1.set_tracking_rate(control1.get_sw4())

    for i in range(5):
        display1.print(1, 2 * i + 1, int(buggy1.is_line_detected(i + 1)))
        display1.print(2, 1, control1.get_sw4())

当前方有障碍物

Buggy.when_blocked(dis=30)
当检测到前方存在障碍物时,执行被修饰的函数
参数:dis (int) – 障碍物距离小于dis才会触发事件。范围:10~100cm

Examples

# 当buggy1检测到障碍物会在display1模块中显示障碍物的距离

from wonderbits import Buggy,Display

display1 = Display()
buggy1 = Buggy()

@buggy1.when_blocked()
def run1(val):
    display1.print(1, 1, val)

while True:
    pass

当左侧循迹传感器检测到黑线

Buggy.when_line_detected_left()
当循迹传感器左侧两个通道检测到黑线时,执行被修饰的函数

Examples

# 当buggy1循迹传感器左侧两个通道检测到黑线会在display1模块中显示 left black

from wonderbits import Buggy,Display

display1 = Display()
buggy1 = Buggy()

i = 0

@buggy1.when_line_detected_left()
def run1(val):
    global i
    display1.print(1, 1, i)
    i += 1

while True:
    pass

当右侧循迹传感器检测到黑线

Buggy.when_line_detected_right()
当循迹传感器右侧两个通道检测到黑线时,执行被修饰的函数

Examples

未提供。可参考 when_line_detected_left 的使用案例

当任何循迹传感器检测到黑色

Buggy.when_any_black_detected()
当循迹传感器任意一个通道检测到黑线时,执行被修饰的函数

Examples

# 当buggy1循迹传感器任意一个通道检测到黑线会输出循迹状态的列表

from wonderbits import Buggy,Display

display1 = Display()
buggy1 = Buggy()

@buggy1.when_any_black_detected()
def run1(val):
    print(val)

while True:
    pass

事件源

Buggy.Buggy.source_battery_value

battery_value事件源

Buggy.Buggy.source_s1

s1事件源

Buggy.Buggy.source_s2

s2事件源

Buggy.Buggy.source_distance

distance事件源

Buggy.Buggy.source_tracer_state

tracer_state事件源

Buggy.Buggy.source_tracer_states

tracer_states事件源

Buggy.Buggy.source_tracer_values

tracer_values事件源