pin1
--- pin口1¶
pin1
模块的主要功能与函数
功能相关函数¶
-
pin1.
is_touched
()¶ 获取pin口当前状态。返回的结果是True:pin口被触摸,或者False:pin口未被触摸。
-
pin1.
get_touchpad_value
()¶ 获取pin口被触摸的值。数值范围为0-10000。
-
pin1.
set_touchpad_threshold
(val)¶ 设置pin口触摸触发阈值,参数:
- val 变化的百分比,检测到变化的幅值大于该百分比时认为被触摸,数值为0.0-1。
-
pin1.
read_digital
()¶ 获取pin口数字输入,值为0或1。
-
pin1.
write_digital
(val)¶ 设置pin口数字输出,参数:
- val 数字输出值为0或1。
-
pin1.
write_analog
(val)¶ 设置模拟输出(pwm),参数:
- val 模拟输出值,数值范围为0-1023。
-
pin1.
read_analog
()¶ 获取模拟输入值(pwm)。数值范围为0-3300,单位为mv。
-
pin1.
servo_write
(val)¶ 设置舵机转动的角度,参数:
- val 舵机转动的角度,或者舵机控制脉冲的高电平的维持时间,数值为0-19999。 当数值小于544 的时候,输入数据如果小于0,会转换为0,如果大于180会转化为180,代表设置 的是模拟舵机的转动角度; 当数值大于或等于544时,表示设置的是50Hz PWM波的高电平的时间宽度(单位是 us),所以最大 值是 19999, 将近20ms,如果大于19999的,则转化为19999。
-
pin1.
analog_set_frequency
(frequency)¶ 设置pin模拟输出(pwm)频率,参数:
- frequency PWM频率值,数值范围为0-5000
程序示例一:¶
import haloboard
import event
@event.start
def on_start():
global results
if haloboard.pin1.is_touched():
haloboard.led.show_all(126, 211, 33)
程序示例二:¶
import haloboard
import event
PIN_MODE_TOUCH = 1
PIN_MODE_READ_DIGITAL = 2
PIN_MODE_WRITE_DIGITAL = 3
PIN_MODE_WRITE_ANALOG = 4
PIN_MODE_READ_ANALOG = 5
PIN_MODE_WRITE_SERVO = 6
pin_mode = PIN_MODE_TOUCH
pin_index = 0
@event.button_pressed
def on_button_pressed():
global pin_mode, pin_index
pin_index = (pin_index + 1) % 10
if pin_index % 2 == 0:
pin_mode = PIN_MODE_TOUCH
print("*****", "in tp mode")
elif pin_index == 1:
pin_mode = PIN_MODE_WRITE_ANALOG
print("*****", "in write analog mode")
elif pin_index == 3:
pin_mode = PIN_MODE_READ_DIGITAL
print("*****", "in read digital mode")
elif pin_index == 5:
pin_mode = PIN_MODE_WRITE_DIGITAL
print("*****", "in write digital mode")
elif pin_index == 7:
pin_mode = PIN_MODE_READ_ANALOG
print("*****", "in read analog mode")
elif pin_index == 9:
pin_mode = PIN_MODE_WRITE_SERVO
print("*****", "in servo mode")
print("pin mode is: " + str(pin_mode))
@event.start
def on_start():
global pin_mode
while True:
if pin_mode == PIN_MODE_TOUCH:
time.sleep(0.1)
if haloboard.pin0.is_touched():
print("pin0 is touched")
if haloboard.pin1.is_touched():
print("pin1 is touched")
if haloboard.pin2.is_touched():
print("pin2 is touched")
if haloboard.pin3.is_touched():
print("pin3 is touched")
if pin_mode == PIN_MODE_READ_DIGITAL:
print("pin0:", end = "")
print(haloboard.pin0.read_digital(), end = "")
print(" ,pin1:", end = "")
print(haloboard.pin1.read_digital(), end = "")
print(" ,pin2:", end = "")
print(haloboard.pin2.read_digital(), end = "")
print(" ,pin3:", end = "")
print(haloboard.pin3.read_digital())
time.sleep(1)
if pin_mode == PIN_MODE_WRITE_DIGITAL:
print("write_digital HIGH")
haloboard.pin0.write_digital(1)
haloboard.pin1.write_digital(1)
haloboard.pin2.write_digital(1)
haloboard.pin3.write_digital(1)
time.sleep(1)
print("write_digital LOW")
haloboard.pin0.write_digital(0)
haloboard.pin1.write_digital(0)
haloboard.pin2.write_digital(0)
haloboard.pin3.write_digital(0)
time.sleep(1)
if pin_mode == PIN_MODE_WRITE_ANALOG:
print("write_analog 512")
haloboard.pin0.write_analog(512)
haloboard.pin1.write_analog(512)
haloboard.pin2.write_analog(512)
haloboard.pin3.write_analog(512)
time.sleep(1)
if pin_mode == PIN_MODE_WRITE_SERVO:
print("write_servo 150")
haloboard.pin2.servo_write(150)
haloboard.pin3.servo_write(150)
time.sleep(2)
print("write_servo 10000")
haloboard.pin2.servo_write(10000)
haloboard.pin3.servo_write(10000)
time.sleep(2)
if pin_mode == PIN_MODE_READ_ANALOG:
print("pin2:", end = "")
print(haloboard.pin2.read_analog(), end = "")
print("pin3:", end = "")
print(haloboard.pin3.read_analog())
time.sleep(1)
程序示例三:¶
import haloboard
import event
pin_mode = 0
@event.button_pressed
def on_button_pressed():
global pin_mode
pin_mode = pin_mode + 1
print("pin mode is: " + str(pin_mode))
@event.start
def on_start():
global pin_mode
while True:
pin_mode %= 8
if pin_mode < 4:
if pin_mode == 0:
print("pin write servo 0")
haloboard.pin0.servo_write(0)
elif pin_mode == 1:
print("pin write servo 90")
haloboard.pin0.servo_write(90)
elif pin_mode == 2:
print("pin write servo 120")
haloboard.pin0.servo_write(120)
elif pin_mode == 3:
print("pin write servo 180")
haloboard.pin0.servo_write(180)
程序示例四:¶
import haloboard
import event
PIN_MODE_TOUCH = 1
PIN_MODE_READ_DIGITAL = 2
PIN_MODE_WRITE_DIGITAL = 3
PIN_MODE_WRITE_ANALOG = 4
PIN_MODE_READ_ANALOG = 5
pin_mode = PIN_MODE_TOUCH
@event.button_pressed
def on_button_pressed():
global pin_mode
pin_mode = pin_mode + 1
if pin_mode > PIN_MODE_READ_ANALOG:
pin_mode = PIN_MODE_TOUCH
print("pin mode is: " + str(pin_mode))
@event.start
def on_start():
global pin_mode
while True:
if pin_mode == PIN_MODE_TOUCH:
if haloboard.pin0.is_touched():
print("pin0 is touched")
if haloboard.pin1.is_touched():
print("pin1 is touched")
if haloboard.pin2.is_touched():
print("pin2 is touched")
if haloboard.pin3.is_touched():
print("pin3 is touched")
if pin_mode == PIN_MODE_READ_DIGITAL:
print("pin0:", end = "")
print(haloboard.pin0.read_digital(), end = "")
print(" ,pin1:", end = "")
print(haloboard.pin1.read_digital(), end = "")
print(" ,pin2:", end = "")
print(haloboard.pin2.read_digital(), end = "")
print(" ,pin3:", end = "")
print(haloboard.pin3.read_digital())
time.sleep(1)
if pin_mode == PIN_MODE_WRITE_DIGITAL:
print("write_digital HIGH")
haloboard.pin0.write_digital(1)
haloboard.pin1.write_digital(1)
haloboard.pin2.write_digital(1)
haloboard.pin3.write_digital(1)
time.sleep(1)
print("write_digital LOW")
haloboard.pin0.write_digital(0)
haloboard.pin1.write_digital(0)
haloboard.pin2.write_digital(0)
haloboard.pin3.write_digital(0)
time.sleep(1)
if pin_mode == PIN_MODE_WRITE_ANALOG:
print("write_analog 512")
haloboard.pin0.write_analog(512)
haloboard.pin1.write_analog(512)
haloboard.pin2.write_analog(512)
haloboard.pin3.write_analog(512)
time.sleep(1)
if pin_mode == PIN_MODE_READ_ANALOG:
print("pin2:", end = "")
print(haloboard.pin2.read_analog(), end = "")
print("pin3:", end = "")
print(haloboard.pin3.read_analog())
time.sleep(1)