開發板設定積木

之前將BlocklyDuino改成可燒錄7697、Arduino、ESP32及ESP8266的版本後,因為不是所有的積木都適用所有的開發板,為了方便積木能辨別使用者要寫哪一種開發板的程式,因此,加上開發板種類的積木,以便程式後續的處理,並加上各開發板腳位對照的積木,方便使用者能設定不同開發板的腳位。原本BlocklyDuino原有的一些感測器及顯示模組的積木,只適用於7697上使用,這幾天也把各開發板的Libraries補齊,讓各個開發板都能使用這些感測器及顯示模組的積木,包括超音波、伺服馬達,128*64的OLED、DHT11、LCD1602,用不同的開發板都能正常運作(WIFI也可以,但藍芽BLE還不行)。

以上的更新必須更新到20201009版本,才能正常運作。更新的過程中,如果之前已經安裝過「Arduino、ESP32及ESP8266核心函式庫」 的話,安裝核心函式的這個步驟便不再需要做(因為核心函式庫只要做一次便好),直接下載最近日期的版本(20201009)來覆蓋即可,更新後的桌面設定積木便會是可選擇開發板的積木。

吉哥積木的安裝及更新

除了開發板設定積木之外,還增加了各個開發板的腳位對映積木,方便使用者能設定不同開發板的腳位。以下的例子,便是編寫ESP32的開發板,讓P12腳位上的LED燈閃爍。

另外,針對腳位的PWM控制,ESP32沒有類比寫入(analogWrite)這個函式,但它有另一個替代的函式,叫做ledcWrite,可是它的使用方式較analogWrite複雜,因此,另外針對ESP32增加了PWM類比寫入,以及蜂鳴器的積木,這些都是屬於類比寫入控制的積木,在ESP32中,所有的腳位都可以做PWM的控制,需要額外設定一個叫「通道(Channel)」的東西,ESP32總共有16個通道(Channel),使用時積木時,通常一個腳位佔用一個相同的通道。

例如,要將P13上的LED燈由暗漸漸變亮,再漸漸變暗,如果是用ESP32的程式來寫的話,必須先在setup內設定channel(在以下的這個例子中Channel是0)、頻率以及解析度,再將P13設定給這個channel;在loop中再針對這個channel寫入PWM數值。

-------------------------------------------------------------------------------------

int i;

void setup()

{

ledcSetup(0, 5000, 8);

ledcAttachPin(13,0);

}

void loop()

{

for (i = 0; i <= 255; i++) {

ledcWrite(0, i);

delay(10);

}

for (i = 255; i >= 0; i--) {

ledcWrite(0, i);

delay(10);

}

}

-------------------------------------------------------------------------------------

以上的程式碼,由以下的ESP32的積木便可以完成。