不使用 Arduino 內建函式庫來點亮LED燈

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

本文將說明如何在不使用 Arduino 內建函式庫()來製作 LED 閃爍功能(Blink)。使用的軟硬環境如下:

軟體

硬體

Windows 10

Arduino UNO * 1

Arduino IDE

LED * 2

Google Chrome

220 OHM 電阻 * 2

Tinkercad

麵包版 * 1

Arduino Uno 的微處理器是Atmel ATMega328p,規格手冊下載網址為 https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf

在不用Arduino函示庫下,使用C語言來做微處理器程式設計時,須對微處理器的三個暫存器(DDR, PORT, PIN)做設定,此部分可參考https://docs.arduino.cc/hacking/software/PortManipulation

舉例來說,若要使用 Arduino Uno pin 13 來控制 LED 的開起與關閉,而 pin 13 是 PORTB 來做映射(mapping),首先要設定 pin 13 為輸出:

DDRB = B00100000;  // sets Arduino pins 13 as outputs

設定 pin 13 為High電位或是低電位:

PORTB = B00100000; // sets digital pin 13 HIGH

PORTB = B00000000; // sets digital pin 13 LOW

<avr/io.h> 有這些暫存器位址以及輸入輸出腳位位址。


電路設計



程式碼

#include <avr/io.h>

#include <util/delay.h>


int main(void)

{

  DDRB = B00100000; // Set pin 13 as output

  DDRB |= _BV(DDB4); // Set pin 12 as output

  DDRD |= _BV(DDD7); // Set pin 7 as output


  while (1)

  {

    PORTB = B00100000; // sets digital pin 13 HIGH

    PORTB |= _BV(PORTB4); // pin 12 High

    PORTD |= _BV(PORTD7); // pin 13 High

    _delay_ms(500);


    PORTB = B00000000; // sets digital pin 13 LOW

    PORTB &= ~_BV(PORTB4); // pin 12 Low

    PORTD &= ~_BV(PORTD7); // pin 7 Low

    _delay_ms(500);

  }

  return 0; // We will never get here!

}


TinkerCAD 範例連結:https://www.tinkercad.com/things/dGOkHOlGgc0


結果影片:






Scratch 3 遊戲:狗吃香蕉(Dog eats bananas)

 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.


【遊戲名稱】狗吃香蕉(Dog eats bananas)

【基本動作】
  1. 點擊綠旗遊戲開始。
  2. 在畫面上按下滑鼠左鍵,小狗開始追蹤滑鼠。
  3. 小狗吃到香蕉時,香蕉一根一根地少。
  4. 小狗吃到香蕉時,會說出:「Yummy」(好吃)。
  5. 香蕉被吃到時,會跑到畫面上的隨機位置。

【遊戲試玩】



製作步驟:(底下程式積木僅供參考,設計方式不是只有一種。)
步驟、選擇小狗(Dog1)角色

步驟、小狗積木
功能為按下滑鼠左鍵,小狗開始追蹤滑鼠。


步驟、選擇香蕉(Banana)角色

步驟、製作香蕉(Banana)角色被吃掉的造型。
複製原本的
香蕉(Banana)角色造型後,再使用選擇(Select)工具點選一根香蕉來刪除。



步驟五、香蕉積木
功能為小狗吃到香蕉時,香蕉一根一根地少,以及香蕉被吃到時,會跑到畫面上的隨機位置。

步驟六
增加 “文字轉語音” 擴充積木

點選添加擴展圖示


選擇文字轉語音的擴展

步驟七、舞台背景積木
積木功能為小狗吃到香蕉時,會說出:「Yummy」(好吃)



恭喜您完成了。

可增加的額外功能:
  • 計時與計分
專案範例網址:https://scratch.mit.edu/projects/252457534