Robofun 機器人論壇
標題:
Serial LCD v1.1回傳值問題
[打印本頁]
作者:
jacklnc
時間:
2014-8-18 02:34
標題:
Serial LCD v1.1回傳值問題
小弟我..使用了serialLCD library後..
這個第一個回傳值是UART_READY 0xA3 沒錯..
然後我回傳了0XA5 如下所示 :
NewSoftSerial::begin(9600);
while(1)
{
if ( NewSoftSerial::available() > 0 && NewSoftSerial::read()==SLCD_INIT )
{
NewSoftSerial::print(SLCD_INIT_ACK);
break;
}
}
delay(2);
NewSoftSerial::print(SLCD_CONTROL_HEADER);
NewSoftSerial::print(SLCD_POWER_OFF);
delay(1);
NewSoftSerial::print(SLCD_CONTROL_HEADER);
NewSoftSerial::print(SLCD_POWER_ON);
delay(1);
NewSoftSerial::print(SLCD_INIT_ACK);
while(1)
{
if (NewSoftSerial::available() > 0 &&NewSoftSerial::read()==SLCD_INIT_DONE)
這裡是無窮迴圈...也就是說沒有這個SLCD_INIT_DONE
break;
}
delay(2);
各位大大可否解答....
Thank a lot..
Best Regards..
作者:
vegewell
時間:
2014-8-19 02:53
回復
1#
jacklnc
我看.h裡面
#define SLCD_INIT_ACK 0xA5
#define SLCD_INIT_DONE 0xAA
---------------------
也許你該回傳0XAA
作者:
jacklnc
時間:
2014-8-20 00:32
#define SLCD_INIT_DONE 0xAA 這個值應該是 SerialLCD傳給我的吧 ?
作者:
vegewell
時間:
2014-8-20 03:12
本帖最後由 vegewell 於 2014-8-20 03:15 編輯
回復
3#
jacklnc
這是省略用語,意思就是既然讀不到,就要催它快給,
當然這需要一些技術,
我認為你的問題可能出在
if ( NewSoftSerial::available() > 0 && NewSoftSerial::read()==SLCD_INIT )
{
之後,多的這一行: NewSoftSerial::print(SLCD_INIT_ACK);
可能這句把機器搞混了,
它裡面有固定的開機程序,不能亂寫,
所以改如下:
NewSoftSerial::begin(9600);
while(1)
{
if ( NewSoftSerial::available() > 0 && NewSoftSerial::read()==SLCD_INIT )
{
break;
}
}
delay(2);
NewSoftSerial::print(SLCD_CONTROL_HEADER);
NewSoftSerial::print(SLCD_POWER_OFF);
delay(1);
NewSoftSerial::print(SLCD_CONTROL_HEADER);
NewSoftSerial::print(SLCD_POWER_ON);
delay(1);
NewSoftSerial::print(SLCD_INIT_ACK);
while(1)
{
if (NewSoftSerial::available() > 0 && NewSoftSerial::read()==SLCD_INIT_DONE)
break;
}
如果還不行,
再如下:
Serial
.begin(9600);
NewSoftSerial.begin(9600);
delay(5000);
Serial.println("Starting the set-up process");
delay(10);
NewSoftSerial.write(SLCD_CONTROL_HEADER);
NewSoftSerial.write(SLCD_POWER_OFF);
delay(10);
NewSoftSerial.write(SLCD_CONTROL_HEADER);
NewSoftSerial.write(SLCD_POWER_ON);
delay(10);
NewSoftSerial.write(SLCD_INIT_ACK);
while(1)
{
if (NewSoftSerial.available() > 0 && NewSoftSerial.read()==SLCD_INIT_DONE) {
Serial.println("It's talking!");
break;
}
}
如果還不行,
就可能不是程式的問題,
作者:
jacklnc
時間:
2014-8-20 04:46
感謝大大...試過了不過還是不行...
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2