473 次檢視
直流電機是最簡單的電機型別。它有兩個端子或引線。當連線電池時,電機將旋轉,如果反轉連線,電機將反方向旋轉。如果端子上的電壓降低,電機速度將相應降低。在本文中,我們將瞭解如何將直流電機與 Arduino 介面並控制其速度。我們不會考慮反轉電機方向,因為這需要額外的 IC(H 橋)。在本文結尾,我將提供一些... 閱讀更多
1K+ 次檢視
我們已經看到,為了將中斷附加到源,我們使用 .attachInterrupt() 函式以及所需的引數。例如,為了將中斷附加到特定引腳,我們使用 attachInterrupt(digitalPinToInterrupt(pin), ISR, mode); 同樣,要從源分離中斷,我們可以呼叫 detachInterrupt() 函式。這將簡單地停用該特定中斷。停用引腳中斷的推薦語法為: detachInterrupt(digitalPinToInterrupt(pin)) 其中 pin 是您希望停用中斷的引腳號。
7K+ 次檢視
如果您希望停用中斷(在執行某些關鍵程式碼段時,尤其是那些必須在給定時間段內完成的程式碼段),您可以使用 noInterrupts() 函式來實現。一旦您的關鍵程式碼執行完畢並且您希望重新啟用中斷,您可以使用 interrupts() 函式來實現。請注意,中斷在 Arduino 中預設啟用,因此,在沒有初始呼叫 noInterrupts() 的情況下呼叫 interrupts() 是不必要的。示例包含 noInterrupts() 和 interrupts() 的程式碼的通用結構如下所示: void setup() { // 在此處放置您的設定程式碼,僅執行一次: } ... 閱讀更多
379 次檢視
透過各種操作,您可能會遇到不可列印的字元。畢竟,char 是一個 8 位數字,如果您檢視 ASCII 表(https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html),只有從 32 到 127 的值,或總共 96 個值中的 127 個是可列印的(請參閱 http://facweb.cs.depaul.edu/~sjost/it212/documents/ascii-pr.htm)。ASCII 僅使用 7 位數字,而不是 8 位。因此,如果您從函式獲得 char 輸出,並希望檢查它是否可列印,則可以使用 Arduino 的 isPrintable() 函式。語法 isPrintable(myChar) 其中 myChar 是要檢查的字元。如果字元可列印,則此函式返回 true。示例 void setup() { ... 閱讀更多
出於各種原因,通常必須在 Arduino 中執行對映。一個例子是將 10 位 ADC 輸出對映到 8 位以節省儲存空間。10 位數字將佔用 2 個位元組的儲存空間,而 8 位數字將僅佔用 1 個位元組,並且仍然保留 10 位數字的大部分資訊。Arduino 有一個現成的 map() 函式來實現這一點。語法 map(value, fromLow, fromHigh, toLow, toHigh) 其中,value 是要對映的值;fromLow 和 fromHigh 是當前值的範圍邊界;toHigh 和 toLow 是新值的範圍邊界... 閱讀更多
當您深入研究高階韌體時,您會處理許多暫存器,其特定位需要根據您的用例進行設定或清除。Arduino 有內建函式可以做到這一點。語法 bitSet(x, index) 和 bitClear(x, index) 其中 x 是其位需要設定/清除的數字,index 是位的位 置(0 表示最低有效位或最右邊的位)。此函式就地更改數字 x,並返回 x 的更新值。請注意,設定位表示將其值設定為 1,清除位表示將其值設定為 0。示例... 閱讀更多
4K+ 次檢視
Arduino 中的 constrain() 函式有助於(顧名思義)將數字限制在上限和下限之間。語法 constrain(val, min, max) 其中,val 是要限制的數字,min 是下限值,max 是上限值如果 val 小於 min,則此函式將返回 min。如果 val 大於 max,則此函式將返回 max。只要 val 在 min 和 max 之間,此函式將返回 val。示例以下示例說明了此函式的使用: void setup() { // 在此處放置您的設定程式碼,僅執行一次: ... 閱讀更多
2K+ 次檢視
如果您是韌體開發人員,那麼將數字或暫存器按特定位數進行移位對於您來說可能非常常見。在 Arduino 中,也可以使用與 C 語言中相同的按位移位運算子,即 >> 用於右移。語法 x >> n 或 x > 1); Serial.println(x
Arduino 中的取模運算子與 C 語言或大多數其他語言中的完全相同。運算子為 %。語法為:a % b,它返回 a 除以 b 時的餘數。示例以下示例說明了此運算子的使用: void setup() { // 在此處放置您的設定程式碼,僅執行一次: Serial.begin(9600); Serial.println(); Serial.println(10%3); Serial.println(4%2); Serial.println(50%9); } void loop() { // 在此處放置您的主程式碼,重複執行: } 輸出序列監視器輸出如下所示。您可以自己算出餘數並驗證輸出是否正確。
615 次檢視
isSpace() 和 isWhitespace() 函式可用於檢查字元是否為空格或更具體地說是空白。空白是空格的子集。雖然空白僅包括空格和水平製表符('\t'),但空格包括換頁符('\f')、換行符('')、回車符('\r')甚至垂直製表符('\v')。示例以下示例演示了這些函式的使用: void setup() { // 在此處放置您的設定程式碼,僅執行一次: Serial.begin(9600); Serial.println(); char c1 = 'a'; char c2 = ' '; char c3 = '\t'; char c4 = ''; ... 閱讀更多