Try   HackMD

Arduino 初體驗筆記


職訓所課程,紀錄學習 ardunio 硬體控制的地方。

硬體:Arduino Uno / USB 通訊晶片:CH340

/dev/tty.wchusbserial11240 是 Arduino Uno(CH340 晶片)在 Mac 系統連接的 USB 序列埠編號。

序列埠(Serial port),序列通訊埠,COM埠。
COM = Communication(通訊)。

硬體

三用電表

使用的型號:多功能自動換檔電錶
https://www.hila.com.tw/exec/product.php?mod=show&cid=84&pid=DM-865&lg=T

三用:電壓,電阻,電流

符號:

image
image

兩隻探棒(探針) 可以換成鯊魚夾

黑色線:共用孔? 寫著 COM 的位置

COM 代表 "Common" 或 "公共端"

作為負極(接地端)

紅色線:插在 input 的位置 正極

有兩個紅色

  1. 10A 大電流使用 ( 200mA ~ 10A )
  2. 200mA 以下

測量電壓:

電壓檔位先調整到最大

測量電流:

量測

Xnip2024-09-10_16-20-34

NMOS:

Xnip2024-09-11_09-30-22

類比 vs 數位
高頻電路 = 類比電路
自然界中的空中信號

模擬電路

練習電路操作,寫程式:

https://www.tinkercad.com/things/4oAAZz6arIs-firstcircuits

https://wokwi.com/dashboard/projects

電阻並街 電阻越並越小

電阻串接 電流會越小

V = I x R

7408 and 74開頭系列 AND 邏輯閘:
https://www.tinkercad.com/things/ad9xcH2S0fz-and-

Xnip2024-09-11_10-40-25

電路表示圖:

Xnip2024-09-11_10-40-53

自己畫:

Xnip2024-09-11_15-10-49

logisim 邏輯閘模擬設計

Logisim-evolution 基於 Logidim 的跨平台開源版本

(Mac M1 實測可用 需安裝 Java)

https://github.com/logisim-evolution/logisim-evolution/releases

組合電路 ====> 固定輸入,0 就是 0,1 就是 1

Xnip2024-09-11_11-50-43


驅動程式

使用 Arduino Uno 相容控制板

USB 通訊晶片:CH340

非原廠晶片,需安裝驅動程式

https://www.taiwaniot.com.tw/技術文件/如何安裝ch340晶片程式/

驅動程式下載位置:
https://www.wch.cn/downloads/category/67.html?feature=USB转串口&product_name=CH341

安裝說明中文翻譯摘要 for mac

系統需求
OS X 10.9 到 OS X 10.15
OS X 11.0 (Big Sur) 及以上版本

預設用 pkg 安裝,當使用 OS X 11.0 及以上版本,且作業系統不支援 Rosetta 時,應該安裝 dmg 格式的驅動程式(請參考第 4 步),否則應預設安裝 pkg 格式的驅動程式(請參考第 3 步)。

Xnip2024-09-05_21-46-33

數位輸出輸入腳位

digital Input/Output pin

====> 讀取該腳位訊號or訊號輸出

使用前要先 pinMode() 設定

編譯後再上傳

供電方式:

  1. USB
  2. 7-12V直流電源
  3. Vin/GND (初學不建議)

Power 5V Vin GND

電源腳位, for 5V

電子電路

M 百萬 mega 10^6

法語 "intensité" 來描述電流的大小。

電荷

電壓:伏特 (V)

Ardunio 常用電壓 5 伏特

電流:安培 (A)

常用 毫安 mA

電阻:歐姆 (Ω)

電阻器 resistor

定值電阻 fixed resisitor

電阻表示:

顏色 數值
0
1
2
3
4
5
6
7
8
9

四色環電阻:

  • 十位數、個位數、倍數 (10 的 n 次方)
    • 紅(2) 紅(2) 棕(10¹) 金 (誤差 ±5%)

五色環電阻:

  • 棕(1) 黑(0) 黑(0) 橙(10³) 金 (誤差 ±5%)

  • 這表示電阻值為 10,000Ω (10kΩ),誤差為 ±5%。

  • 黃(4) 紫(7) 紅(2) 棕(10¹) 銀 (誤差 ±10%)

  • 這表示電阻值為 4.72Ω,誤差為 ±10%。

220 Ω 跟 10K Ω,瓦數 0.25 w

LED 發光二極體

正長 負短

限流電阻 避免 LED 燒毀////

迴路

短路

接地:習慣上把迴路負極 (0電位) 稱為接地(Ground) GND

Arduino 程式

// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }

用 C/CPP 撰寫模擬

使用 sleep(),參考文章:
[ShengYu Talk]C/C++ sleep 用法與範例
https://shengyu7697.github.io/cpp-sleep/

// mac system my computer system #include <stdio.h> #include <unistd.h> void setup(); void loop(); int main() { setup(); sleep(2); printf("Press Enter to start the loop...\n"); getchar(); // 等待用户按下 Enter 键 while (1) { loop(); usleep(1000000); // 暂停 1 秒 } return 0; } void setup() { printf("Setup\n"); } void loop() { printf("Run Loop forever\n"); }

練習題:

(用 Tinkercad 模擬)練習題:

  1. Red-> Yellow-> Blue
    各自每秒亮滅1次,換下個燈
  2. Red、Yellow、Blue 同時亮滅
    閃動3次
  3. 循環 以上順序(1-2-1-2⋯. 無窮迥圈..)
int led[] = {10, 11, 12}; int i; void setup() { for (i = 0; i < 3; i++) pinMode(led[i], OUTPUT); } void loop() { // 第一項功能:紅->黃->藍,各自每秒亮滅1次,換下個燈 for (i = 0; i < 3; i++) { digitalWrite(led[i], HIGH); delay(1000); digitalWrite(led[i], LOW); } // 第二項功能:紅、黃、藍同時每秒亮滅,閃動3次 for (int j = 0; j < 3; j++) { for (i = 0; i < 3; i++) { digitalWrite(led[i], HIGH); } delay(1000); for (i = 0; i < 3; i++) { digitalWrite(led[i], LOW); } delay(1000); } }

analogwrite

有限的仿類比輸出

PWM = Pulse Width Modulation

VT圖,調整供電時間。

8位元控制,可切 256 段

老師提供的範例:
較易閱讀寫法

const int led[] = {3,5,6,9}; int brightness = 0; int lighten = 5; int direct=0; int i=0; void setup() { } void loop() { analogWrite(led[i],brightness); delay(10); if(direct==0) { if(brightness<250) brightness = brightness + lighten; else direct=1; } else { if(brightness>0) brightness = brightness - lighten; else { direct=0; i++; if(i>=4) i=0; } } }

交通號誌紅綠燈模擬

尚未

序列埠

Serial Port
RX 第 0 腳位 Receive
TX 第 1 腳位 Transmit

透過此 Port 接收傳送資料,USB 只是通道
傳輸速率要設定相同

arduino baud rate 通常設定 9600

上拉下拉電阻

避免過大電阻接地短路

arduino 有內建,軟體可以設定


官方網站

https://www.arduino.cc

軟體 Arduino IDE

學習資源

十一分鐘略懂電子電路:電、電路、電阻、電容、電感、二極體、三極體、MOSFET 簡介及相關應用
https://youtu.be/V3A0fxmhYrg?si=bydw6CP2FriPVvAn

Arduino最佳入門與應用打造互動設計輕鬆學(第三版)
https://www.gotop.com.tw/books/bookdetails.aspx?types=a&bn=AEH004500
黃信惠的瘋狂教室【教學】三用電表,第一次就上手,製作專題必備的工具
https://youtu.be/Dvg1X1q7kQs?si=EVV5b8FcVbq37KU_
【教學】麵包板教學
https://youtu.be/s9fCNmhsqr4?si=yEGTrSD6N-ZNTyuR
米羅科技文創學院|Arduino
https://shop.mirotek.com.tw/arduino/arduino-index/
傑森創工 JMaker Workshop
https://blog.jmaker.com.tw/arduino-tutorials/