ros中使用zr_ledkey_1638

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章