2012-12-07 327 views
2

更新: 我指出了問題來自何處。爲了避免出現任何複雜情況,我使用了ScanNetwork示例,所以我甚至不需要輸入SSID。一旦碰到WiFi.status(),代碼將停止在電路板上運行。 我有一個Serial.println之前和之後,它試圖得到一個WiFi.status(),serial.println之後沒有執行,當然,我還沒有連接。Arduino WiFi屏蔽在WiFi.status停止工作()

我已經下載了代碼的新鮮副本,並且情況保持不變。我真的用完了主意....


我使用的是官方的Arduino無線屏蔽

,我有以下代碼:

status = WiFi.begin([ssid],[pass]); 
Serial.println(status); 

狀態既不是WL_CONNECTED也不WL_IDLE_STATUS,這是官方參考中列出的兩種可能的答案http://arduino.cc/en/Reference/WiFiBegin

狀態是數字4. 當然,我無法連接到WiFi。 這是什麼?

我按了一百萬次重置按鈕,有沒有更強大的工廠恢復按鈕?

回答

1

根據WiFi.h函數begin()函數的返回值(全部三個函數,每個安全方案一個)是int s。這個功能並沒有直接說明,但我相信,就像status()函數一樣,返回類型是wl_status_twl_status_twl_definitions.h作爲聲明的枚舉:

typedef enum { 
     WL_NO_SHIELD = 255, 
        WL_IDLE_STATUS = 0, 
        WL_NO_SSID_AVAIL, 
        WL_SCAN_COMPLETED, 
        WL_CONNECTED, 
        WL_CONNECT_FAILED, 
        WL_CONNECTION_LOST, 
        WL_DISCONNECTED 
} wl_status_t; 

所以你4WL_CONNECT_FAILED。可能對你而言並不奇怪,因爲你知道你連接失敗。

最幸福的調試器,AKA重置按鈕,只會做這麼多。打印狀態是一個好的開始。請確保您使用的安全類型爲begin()的正確風格,您似乎正在使用WPA。考慮完全關閉路由器的安全(如果在您所在地區安全的話)或使用備用路由器來測試屏蔽層通信的能力。這也許聽起來很明顯,但檢查拼寫錯誤的SSID。

+0

謝謝。根據你的評論,我已經指出了這個問題。一旦它遇到WiFi.status(),代碼就會完全停止,請參閱上面的更新。 –

+0

這很可能是你盾牌上的錯誤。嘗試更新屏蔽層上的固件。 [該方法可以在arduino.cc網站的**這個**頁面上找到。](http://arduino.cc/en/Hacking/WiFiShieldFirmwareUpgrading) – NJones

+0

我正在讀它並卡住了部分它提到「連接J3跳線將屏蔽置於編程模式」什麼是J3跳線 –

4

enter image description here

我已經想通了。 顯然,有一個跳線,當你把它插入時,它會將屏蔽踢入DFU模式,以便重新編程。因此,盾牌不會出現。