1. 程式人生 > >Arduino和ESP8266引腳圖

Arduino和ESP8266引腳圖

 

Arduino的引腳圖

https://www.geek-workshop.com/thread-11826-1-1.html

 

 

ESP8266

 https://item.taobao.com/item.htm?_u=n1qf7bf57e4b&id=562045987553

 

 

 

 

模擬輸入 Analog input
ESP8266只有一個ADC通道提供給使用者。它可以使用於讀取ADC引腳電壓,也可使用於讀取模組電源電壓(VCC)。
讀取ADC引腳值電壓,使用analogRead(A0)。輸入電壓範圍:0~1.0V。
讀取模組電源電壓,使用ESP.getVcc() 且ADC引腳不能連線。另外,下面的程式碼必須新增至程式中:
ADC_MODE(ADC_VCC);
這條程式碼不能包含在任何函式中,放在程式中 #include 之後即可。
模擬輸出 Analog output


analogWrite(pin, value) 在已有的引腳上使能軟體PWM功能。PWM可以用在引腳0~16。呼叫analogWrite(pin, 0) 可以關閉引腳PWM。取值範圍:0~ PWMRANGE,預設為1023。 PWM 範圍可以使用analogWriteRange(new_range)語句來更改。
PWM 預設頻率:1KHz。使用analogWriteFreq(new_frequency) 可以更改頻率。

時間與延時  Timing and delays
millis() 和 micros() 分別返回單位為毫秒和微秒的值,復位後值重置。
delay(ms) 暫時程式給定毫秒時間並允許WiFi和TCP/IP任務的執行。delayMicroseconds(us) 暫時程式給定微秒時間。
記住wifi連線後除了素描程式外還有許多程式碼需要再晶片上執行。每次loop()函式完成時或當delay被呼叫時,Wifi和TCP/IP庫都有機會處理任何等待事件。如果你程式中某處有迴圈,消耗事件大於50ms且沒有呼叫delay,你可以考慮新增一個呼叫延時函式以保持Wifi堆疊的平穩執行。
有個 yield()函式和delay(0)功能相同。delayMicroseconds函式,在另一方面,不會為其他任務讓步,所以當延時超過20ms時不推薦使用它。

序列 Serial

Serial 功能幾乎和普通arduino一樣,除了硬體FIFO (128 bytes for TX and RX)有額外256byte TX and RX緩衝區。傳輸和接收都是中斷驅動。當FIFO和緩衝區分別為滿和空時,讀寫功能將阻止程式的執行。
Serial 使用UART0,即引腳對映GPIO1(TX)和GPIO3(RX)。Serial.begin 之後呼叫Serial.swap()時,Serial引腳將對映到GPIO15(TX)和GPIO13(RX)。再次呼叫 swap時 引腳對映將回到GPIO1(TX)和GPIO3(RX)。
Serial1 使用UART1,TX引腳為GPIO2。UART1不能用來接收資料因為通常情況RX引腳被用到flash晶片連線了。使用Serail1,呼叫 Serial1.begin(baudrate)。
如果Serial1沒有使用且Serial沒有被調換 - 通過在Serial.begin之後呼叫Serial.set_tx(2)或者直接呼叫Serial.begin(baud,config,mode,2) 可以將UART0的TX對映到GPIO2。
預設情況下當你呼叫Serial.begin,Wifi庫診斷輸出是禁用的。再次啟動除錯輸出,呼叫Serial.setDebugOutput(true)。呼叫Serial1.setDebugOutput(true),Serial1重定向除錯輸出。
你也需要使用Serial.setDebugOutput(true)去使能printf()函式的輸出。
Serial和Serial1都支援 5,6,7,8資料位;奇 (O), 偶 (E),無(N) 校驗位;1或2停止位。設定所需模式,呼叫Serial.begin(baudrate,SRIAL_8N1),Serial.begin(baudrate, SERIAL_6E2), etc.

Progmem

程式記憶體工作特性和arduino頁非常相似,在只讀儲存器中的存放只讀資料和字串,為你的應用釋放堆。最重要的區別是在ESP8266上字串不合並。這意味著在程式碼中定義在F("")和PSTR("")中的相同字串在每個例項中都將佔用空間。所以你需要自行管理重複的字串。 有個附加輔助巨集,讓它更容易通過 const PROGMEM 字串去使用 FPSTR()(__FlashStringHelper)方法。這樣使用將有助於使合併字串更簡便。Not pooling strings...(這尼瑪什麼鬼,不懂)