Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 3050|回復: 4
打印 上一主題 下一主題

Serial LCD v1.1回傳值問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2014-8-18 02:34:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
小弟我..使用了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..
2#
發表於 2014-8-19 02:53:28 | 只看該作者
回復 1# jacklnc 我看.h裡面
#define SLCD_INIT_ACK        0xA5
#define SLCD_INIT_DONE        0xAA
---------------------
也許你該回傳0XAA
3#
 樓主| 發表於 2014-8-20 00:32:42 | 只看該作者
#define SLCD_INIT_DONE        0xAA 這個值應該是 SerialLCD傳給我的吧 ?
4#
發表於 2014-8-20 03:12:03 | 只看該作者
本帖最後由 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;
      }
  }
如果還不行,
就可能不是程式的問題,
5#
 樓主| 發表於 2014-8-20 04:46:29 | 只看該作者
感謝大大...試過了不過還是不行...
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-4-29 14:19 , Processed in 0.324670 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表