ros中使用zr_screen_1602

zr_screen_1602

跳線控制背光顯示
可變電阻調節字符清晰度

可用於ros機器人調試的數據、狀態的顯示。
在這裏插入圖片描述
在這裏插入圖片描述
video
https://www.bilibili.com/video/av95252286
硬件節點

rospy.Subscriber("screen_1602", screen_1602, callback)
rospy.Service('zr_hw_cmd', hw_cmd, fun1)

ros節點

pub = rospy.Publisher('screen_1602', screen_1602, queue_size=1) 
srv_name='zr_hw_cmd'
rospy.wait_for_service(srv_name)

消息
screen_1602.msg

/*----------------------------------------------------------------------*/

string line1
string line2

分兩行顯示,每行16個字符

支持數字,英文,日文,一些特殊符號。
LCD1602內含有八個自定義的字符空間,
可通過service自定義符號到位置 1、2、3、4……7
可以發送“\x01\x02\x03\x04…”的字串來顯示
注意位置0的自定義符號不能被顯示,因爲“\0”在設備中是字符串結束標誌,而我們通訊的消息類型是字符串string。

通訊刷新頻率10hz
屏幕信息不改變可以不發送msg數據,或者發送空串。
““空字符串,保留本行不變化。如line1=””;line2=“xxx”;第一行不變化。
非空字符串,顯示完串的每個字符後,行末尾清空。

發送一個空格即可清除一行,不必發送16個空格。如line1=" ";line2=“xxx”;第一行清空

service 請求和顯示msg一般情況下不要同時發送。因爲硬件資源有限,容不下太多消息。
如果需要自定義字型,建議先用service完成自定義,再發送msg顯示。

爲了確保通訊實時性,硬件內部控制屏幕刷新,採用固定頻率按行分次刷新的方案。
所以當通訊刷新速度很快時,視覺上能感受到屏幕兩行刷新的時間差。(爲正常現象)

hw_cmd.srv

/*----------------------------------------------------------------------*/

string cmd
uint8[] input
---
uint8[] output

cmd命令支持的字符串有:“n”,“v”,“b”,“c”,"chr"
n代表name
v代表version
b代表brand
c代表copyright

chr代表自定義字形集,可以定義7個字形,需要參數數組input,input[9]就是字形數據。
每次可以執行chr可設置一個字形
input[0] 爲id
input[1-9]爲字形數據

自定義字形數據如下(這裏沒有id

'''
    //uint8_t bell[8]  = {0x4, 0xe, 0xe, 0xe, 0x1f, 0x0, 0x4};
    //uint8_t note[8]  = {0x2, 0x3, 0x2, 0xe, 0x1e, 0xc, 0x0};
    //uint8_t clock[8] = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0};
    //uint8_t heart[8] = {0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0};
    //uint8_t duck[8]  = {0x0, 0xc, 0x1d, 0xf, 0xf, 0x6, 0x0};
    //uint8_t check[8] = {0x0, 0x1, 0x3, 0x16, 0x1c, 0x8, 0x0};
    //uint8_t cross[8] = {0x0, 0x1b, 0xe, 0x4, 0xe, 0x1b, 0x0};
    //uint8_t retarrow[8] = {	0x1, 0x1, 0x5, 0x9, 0x1f, 0x8, 0x4};
'''

每個字形5*8個點,點陣數據8行,每行是數組的一個字節
bell字形如下

00100
01110
01110
01110
11111
00000
00100
00000

請您知曉:

執行chr 設置自定義字符時,會有設置不成功的情況。硬件程序增加了適當的延時,所以使用 chr 時請注意。
猜測可能是因爲硬件pcf8574模塊+1602模塊的本身特性,與arduino第三方庫不太兼容的原因。 如有錯誤,請各位老師多多指正!

示例

roslaunch zr_screen_1602 screen_1602_demo.launch
roslaunch zr_screen_1602 screen_1602_display.launch
roslaunch zr_screen_1602 screen_1602_fake.launch

video
https://www.bilibili.com/video/av95252286
gitbub
https://github.com/zaizhizhuang/zr

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