我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195


架構好ESP32的開發環境後(http://t.ly/O3jqD),就可以開始寫程式,一般來說除了一開始的helloworld之外,arduino有很多感測及輸出模組(塊),依據難度可以暫時分成以下幾個類型,以後會依序介紹。

  1. 數位輸出:供電就會啟動,不需要任何控制,例如:LED、Relay、錄放音等,LED也可作為類比輸出pwm
  2. 數位感測:這類感測器只會提供兩個選項:HIGH(高電壓)、LOW(低電壓),例如振動感測、人體感測器HC-SR501、觸摸感測器TTP223B,有人經過時會給HIGH,沒人時會給LOW。
  3. 類比感測:這類項目比較多,例如火焰大小、水位、雨滴、土壤、氣體mq2,這類感測可以提供一個0-4095之間的數值,例如水位感測的數值為100,代表該處有一點點水,若回覆4095則是代表水已經滿了,因此類比感測能提供變化較多的數值提供使用者作為參考。
  4. 類比輸出:蜂鳴器、伺服馬達、DC馬達等,在ESP32中類比輸出pwm稍微複雜些,可以引入analogWrite的lib,或者直接寫ledcSetup控制。
  5. I2C類感測器:例如1602LCD、MPU-6000陀螺儀加速器。
  6. SPI模塊:高速傳輸設備,例如SD卡、RC522 RFID、TFT顯示器等。
  7. UART模塊:源自於RS232,例如BLE藍芽通訊,也可以用來讓兩個arduino傳輸資料
  8. 其他特殊類:例如WIFI網路、聲音、影像,這類較為複雜的傳感器,需要透過特殊的函式庫來讀取資訊。

這裡我們先從最簡單的HelloWorld開始吧。

HelloWorld

先了解Arduino的程式結構,主要分成Setup()與Loop(),Setup用來做初始設定,Arduino只會執行一次,然後就會執行Loop,Loop就是迴圈,會不斷重複的執行,一般要做什麼重複感測(例如每1分鐘感測一次溫濕度),都會放在Loop這裡。

image

通常我們第一個程式是標準HelloWorld,用以檢測開發環境是否正常、晶片有沒有故障之類。而這隻程式暫時沒有用到Loop,我們僅須寫在Setup中。

HelloWorld程式會用到第一個物件Serial:序列通訊,用以將Arduino的資訊傳輸到開發工具的序列視窗,如果你常寫程式的話就是Log除錯的功能,將獲得的資料顯示出來,主要是Arduino沒有程式中斷點(Breakpoint)功能,所以Serial非常重要,每一隻程式幾乎都會用到。

Serial.begin(115200);//代表以胞率115200啟動序列通訊,另外一個常見的胞率是9600,兩者速度對人類來說是幾乎一樣的,這裡建議先用115200。
Serial.println("Hello World!");//代表在訊列視窗中顯示HelloWorld並換行,另外一個語法是Serial.print(),這樣的寫法是印出資料後不換行。
delay(1000);//delay代表休息,1000=1000ms=1秒,所以這句代表休息一秒
整個程式的意思將HelloWorld每秒印在序列視窗一次,重複執行不停止。

image
點選上傳程式按鈕後,ESP32要注意需要在畫面出現.....____......____.....時
按住ESP32右下側按鈕(BOOT或標示為IO0)不放,直到畫面跳開
如果太晚放開,要在燒錄完畢後,按一下左側RESET重開機以開始工作  

image

image

完成程式上傳後,點選開啟序列視窗按鈕,可以看到每秒不斷出現的Hello World,若無顯示任何資訊,請先檢查胞率設定是否相同。

image

arrow
arrow
    文章標籤
    arduino esp32 iot esp8266
    全站熱搜

    夜市 小霸王 發表在 痞客邦 留言(0) 人氣()