zr_ledkey_1638
可用於ros機器人調試的數據、狀態的顯示以及按鍵交互。
video
https://www.bilibili.com/video/av95253286
硬件節點的發佈訂閱
#subscribe 8led8 display
rospy.Subscriber("led8_data8", led8_data8, callback_led8_data8)
#subscribe leds display
rospy.Subscriber("leds_bit8_data", bit8_data, callback_bit8_data)
#publish buttons event
btns_pub = rospy.Publisher('btns_bit8_data', bit8_data, queue_size=1)
硬件節點的service server
#service server ,screen light,set chr ,set leds and btns sort。
rospy.Service('zr_hw_cmd', hw_cmd, fun1)
ros節點中訂閱發佈
#publish led8 、leds
led8pub = rospy.Publisher('led8_data8', led8_data8, queue_size=1)
發佈數碼管顯示的字串,最長16個字符。
ledspub = rospy.Publisher('leds_bit8_data', bit8_data, queue_size=1)
發佈led燈顯示的8bit數
#subscribe btns
rospy.Subscriber("btns_bit8_data", bit8_data, btns_callback_bit8_data)
訂閱按鍵事件,獨立按鍵按下釋放時會發布鍵值消息。可以通過消息判斷按鍵情況。(支持多鍵觸發)
ros節點中serviceclient
srv_name='zr_hw_cmd'
rospy.wait_for_service(srv_name)
val = rospy.ServiceProxy(srv_name, hw_cmd)
resp1 = val(reqlist[i],reqdata[i])
消息
led8_data8.msg
/*----------------------------------------------------------------------*/
string input
字串不計“.”號,最多8個字符,支持數字,英文字母
通訊刷新頻率30hz
bit8_data.msg
/*----------------------------------------------------------------------*/
uint8 data
8位無符號數據,
消息可用於控制8個led燈的點亮狀態。
可以傳遞8個獨立按鍵的狀態。
等等
hw_cmd.srv
/*----------------------------------------------------------------------*/
string cmd
uint8[] input
---
uint8[] output
cmd命令支持的字符串有:“n”,“v”,“b”,“c”,“l>”,“l<” ,“b>”,“b<”,“lit”,"chr"
n代表name
v代表version
b代表brand
c代表copyright
l>代表LED排列高位在左,低位在右(默認)
l<代表LED排列高位在右,低位在左
b>代表BTN排列高位在左,低位在右(默認)
b<代表BTN排列高位在右,低位在左
lit代表light,控制數碼管和LED的亮度 需要參數數組input,input[0]就是亮度值,取值範圍0-7.
chr代表自定義字形集,可以定義30個字形,需要參數數組input,input[0-29]就是字形數據。
設置自定義字形原理
'''
//數碼管字形
// - 8
// | | 3 7
// - 2
// | | 4 6
// - . 5 1
位順序:0B12345678
0B00111111,/*0*/ 0x3f
0B00000110,/*1*/ 0x06
0B01011011,/*2*/ 0x5B
0B01001111,/*3*/ 0x4F
'''
根據規則,字形(0-10-A-F)如下所示
(0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71)
您可以根據需要定義自己的字形
自定字形舉例
‘|-’
0B01110000 0x70
‘-|’
0B01000110 0x46
使用chr命令將字形數組送入硬件緩存可以按數組順序調用
led8pub 發送字符消息即可顯示出配置的字符,1-30(注意編號從1開始)調用緩存數組[0-29]
‘\x01\x02\x03\x04\x05\x06\x07\x08 \x09\x0a\x0b\x0c\x0d\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e’
硬件內置字符支持數字和英文字母,字形如下
static unsigned char numbers[]={
0B00111111,/*0*/
0B00000110,/*1*/
0B01011011,/*2*/
0B01001111,/*3*/
0B01100110,/*4*/
0B01101101,/*5*/
0B01111101,/*6*/
0B00100111,/*7*/
0B01111111,/*8*/
0B01101111/*9*/
};
static unsigned char characters[]={
0B01110111,/*A*/
0B01111100,/*B*/
0B00111001,/*C*/
0B01011110,/*D*/
0B01111001,/*E*/
0B01110001,/*F*/
0B00111101,/*G*/
0B01110110,/*H*/
0B00010001,/*I*/
0B00001110,/*J*/
0B01110010,/*K*/
0B00111000,/*L*/
0B01010101,/*M*/
0B01010100,/*N*/
0B01011100,/*O*/
0B01110011,/*P*/
0B01100111,/*Q*/
0B01010000,/*R*/
0B01100101,/*S*/
0B01111000,/*T*/
0B00111110,/*U*/
0B00011100,/*V*/
0B01101010,/*W*/
0B00011101,/*X*/
0B01101110,/*Y*/
0B01001001/*Z*/
};
可用於ros機器人調試的數據、狀態的顯示以及按鍵交互。
示例
roslaunch zr_ledkey_1638 ledkey_fake.launch
roslaunch zr_ledkey_1638 ledkey_demo.launch
video
https://www.bilibili.com/video/av95253286
gitbub
https://github.com/zaizhizhuang/zr