Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
(學習護照)樹莓派基礎教學
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yi-Zhen, Chen
July 14, 2021
Programming
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
(學習護照)樹莓派基礎教學
Yi-Zhen, Chen
July 14, 2021
More Decks by Yi-Zhen, Chen
See All by Yi-Zhen, Chen
(學習護照)AI基礎課程
yizhen1223
2
230
(TA實作課程)MNIST_MLPCNNRNN
yizhen1223
0
250
運用文字探勘分析於圖書資訊檢索使用者行為與習慣-以中原大學張靜愚紀念圖書館為例
yizhen1223
0
190
Other Decks in Programming
See All in Programming
アクセシビリティから考える情報設計
high_g_engineer
0
370
スマート反転とウェブアクセシビリティ
camiha
0
200
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
320
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
180
iOSDC2026登壇資料.pdf
riofujimon
0
140
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
130
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
220
Foundry Localでエージェント開発
seosoft
0
190
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
150
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
170
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
230
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
The Spectacular Lies of Maps
axbom
PRO
1
990
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
720
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
Being A Developer After 40
akosma
91
590k
Designing for Timeless Needs
cassininazir
1
470
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
350
The agentic SEO stack - context over prompts
schlessera
0
930
Code Reviewing Like a Champion
maltzj
528
40k
Scaling GitHub
holman
464
140k
Six Lessons from altMBA
skipperchong
29
4.5k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Transcript
None
None
體積輕巧的微型電腦 搭載Linux系統 低價位、高擴充性
Raspberry Pi 微型電腦會以水果為基礎命名的傳統 例:蘋果電腦 程式語言 Python
• 無人機飛行器
• 遊戲機、掌上機
• 網路攝影機、門禁監控
• 智慧家電 智慧園藝系統、 自動寵物餵食器、平板、 各項感測器…等等族繁不及備載
連接攝像鏡頭 連接觸控螢幕 插入系統檔 通用型輸入輸出
USB轉TTL/RS-232 HDMI轉VGA 相機鏡頭 電源 Micro USB
None
紅/黃/綠 LED燈 大按鍵開關 1K/2K 電阻 自激/他激 蜂鳴器 10K可變電阻 光敏電阻 傾斜滾珠開關
超音波距離感測器 類比轉換 紅外線感測器 雙軸XY搖桿組 20pin 公對母排線 20pin 公對公排線 20pin 母對母排線 麵包板
None
1. 將樹莓派翻面 2. 將SD小卡從轉接卡中取出 3. 正面(有圖案面)朝上放入插槽
1. 翻回正面 2. 使用USB轉TTL/RS-232與樹莓派連結 3. 依序將黑色/白色/綠色插入Pin 6/8/10 4. USB連接電腦 5.
Micro USB插這邊的 電源(power)→
1. 安裝USB to Serial驅動程式 http://goo.gl/QC5Q3O 2. 解壓縮後執行PL2303G_130_20190311.exe進行安裝 3. 重新開機
1.打開裝置管理員 > 通用埠(COMC和LPT) / 通用序列匯流排控制器 查看埠號,此顯示為COM4
※ 連接埠依然出現無法辨認的圖樣,可嘗試安裝舊版的驅動程式 https://reurl.cc/GkKrxW
1.依作業系統32/64位元下載對應版本 2.安裝Putty並執行 https://reurl.cc/lL7doQ
1.選擇Seesion 2.選擇連線方式為Serial 3.Serial line輸入查看到的COM埠號 4.Speed更改為115200 5.點擊Open連線
1.剛連線沒畫面可按下 ※再不行就拔電源重新連線 2.raspberrypi login輸入 pi 3.密碼請輸入預設的 raspberry
None
• ls • cd <目錄> • cd .. • cd
~ • pwd • sudo reboot • sudo poweroff # 查看目前工作目錄 # 重開機 # 關機 # 顯示該目錄下所有檔案與文件夾 # 前往指定目錄,若後頭空白則回到主目錄 # 回上一層 # 回家目錄
• mkdir <目錄名> • touch <檔案名> • nano <檔案名> •
vim <檔案名> • cp <原檔案或目錄> <新檔案或目錄> • mv <原檔案或目錄> <目標檔案或目錄> • rm <檔案或目錄> # 新建目錄(文件夾) # 新增空白檔案或 更新已存在文件時間戳記 # 在終端機編輯文字檔案 # 在終端機編輯文字檔案 # 複製檔案 # 移動檔案 # 刪除檔案
sudo apt-get update sudo apt-get install -y python-dev python-pip libsdl1.2-dev
x11vnc # 請輸入指令 (複製完後在putty按右鍵貼上) 下載此PPT跟範例程式碼(.py):https://reurl.cc/31eeeX
• GPIO (General Purpose Input Output) • GPIO 是一種可用軟體控制的數位訊號 •
決定是輸入還是輸出 1) 輸出:寫值到某根腳位 2) 輸入:從某根腳位讀值
• 樹莓派擁有40個排針 • 控制樹莓派電子元件I/O • 每個排針有不同定義 選擇合適的排針位置連接 • raspberry-gpio-python 擴充庫控制GPIO
• 引腳 1,2,4 1. 恆定輸出電壓 (3.3 / 5 V) •
引腳 6,9,14 …等黑色圖標 1. GND代表Ground接地 2. 電壓為0V • 引腳 7,11,12,13,15 …等綠色圖標 1. 可輸入可輸出 2. 電壓負荷在3.3 ~ 0V 3. 使用程序來控制
變數 , 物件 , 型別 , 註解 模組, 縮排 ,
迴圈 , 條件 , 判斷式
• 宣告變數時不必指定資料型別,依照給定的內容定義其型別
• 匯入模組與套件時使用import RPi.GPIO太長可利用as定義一個別名
• Python用縮排取代其他語言常用的 大括號{ } 來表示區塊 • 有Tab或空白鍵兩種縮排(通常4格空白為一縮排) 整份文件裡須統一使用Tab或空白 不同編輯器Tab長度不同,可能造成排版混亂 所以建議使用空白做縮排
Python 其他語言 (ex. Java, C#)
• 迴圈 (loop) 讓程序敘述在指定條件符合的情況下一直重覆執行 • 主要分成兩種循環: 1. for迴圈 2. while迴圈
• for 迴圈 (for loop) for迴圈可以遍歷任何序列的項目,如一個清單或者一個字串 指定一變數去做迭代 迴圈依照Sequence的範圍去做執行 條件符合每次執行的內容 範例:
以range(3)產生的序列去做遍歷
• range() 創建一個整數序列,可定義成 ( 起始值, 終止值, 遞增/減值 ) • range(10):產生0~9的整數序列
• range(1, 11):產生1~10的整數序列 • range(0, 10, 2):產生從0, 2, 4, 6, 8的整數序列 未指定遞增值的情況下, 其遞增值預設為1 ※ range(10,0,-3) 會產生多少範圍內的序列?
sudo nano test_forloop.py 寫一個for迴圈吧! 新增一個名為test_forloop的python檔案! 指令列輸入:
寫一個for迴圈吧! 請實作看看在for迴圈中range(10,0,-3)的結果 nano存檔方式: 1. 按下 Ctrl + X 離開 2.
詢問是否儲存修改?按下 Y 3. 詢問要儲存的檔名 > 按下 ENTER ※ 注意縮排! 執行python檔案,指令列輸入: sudo python test_forloop.py
• while 迴圈 (while loop) 當條件式成立(為Ture)會一直循環執行 • 條件沒有處理好的話會形成無限迴圈 • while
True 語句中一定要有break語句,否則會一直迴圈下去
• 條件判斷 (if..else..) 通過一個判斷句來決定執行的程式區塊 指定條件式 若符合條件則執行if區塊 若不符則進行 第二個條件句(elif)的判斷 以此類推 範例:
最後結束條件句的判斷後 執行第四個區塊
• 例外處理 (try..except..) 自行控制可能會產生例外的程式碼 • 可選擇加入finally ,無論例外有沒有發生都會執行 finally 後的程式區塊 •
標準異常情況:KeyboardInterrupt用戶中斷執行 範例:
• 函式(def) 可以定義一個由自己想要功能的函數 簡單規定: 1. 以 def 關鍵字開頭,後接函數識別字名稱和圓括號() 2. 任何傳入參數和引數須放在圓括號中
3. 圓括號之間可以用於定義參數 4. 函數內容以冒號起始,並且縮進 範例:
準備材料 麵包板 x1 LED紅燈泡 x1 公對母排線 x2 (一黑一紅) 1K電阻(棕黑黑棕) x1
LED燈 • 發光二導體 • 短腳接負極 GND (接地) • 長腳接正極 Vcc
(接普通輸入出引腳) 一腳接地 一腳接電
麵包板 (Bread Board) 1. 藍綠兩區不通 (隔離) 2. 藍色水平相通 3. 紅色垂直相通
1. LED短腳接地 (與黑排線同水平排) 2. LED長腳接電 (與電阻一腳同水平排) 3. 通電處中間接電阻 (電阻另一腳的水平排上接線) 4.
公母排線與樹莓派引腳連接 黑線:接GND (黑標 位置14) 紅線:接通用引腳 (綠標 位置12) 直接接GND即可
短腳與黑排線同水平排 長腳與電阻一腳 同水平排 通電處中間接電阻 公母排線與樹莓派引腳連接 黑線:接GND (黑標 位置14) 紅線:接通用引腳 (綠標
位置12)
試著把排線 從GPIO 12換到GPIO 1上 看看會不會亮
sudo nano led.py 再新增一個名為led_blink的python檔案吧! 指令列輸入: 記得將排線插回原本12的位置上唷
#!/usr/bin/python import RPi.GPIO as GPIO import time LED_PIN = 12
GPIO.setmode(GPIO.BOARD) GPIO.setup(LED_PIN, GPIO.OUT) try: while True: print "LED is on" GPIO.output(LED_PIN, GPIO.HIGH) time.sleep(1) print "LED is off" GPIO.output(LED_PIN, GPIO.LOW) time.sleep(1) except KeyboardInterrupt: print "Exception: KeyboardInterrupt" finally: GPIO.cleanup() 完整程式碼 請查看led_blink.py GPIO的Hello World—亮燈 1. 打開空白記事本 2. 將led_blink.py拉過去 3. 就可以看到程式碼! 4. 複製led_blink.py的程式碼 5. 在putty的文字編輯器視窗內 按下右鍵,即可貼上程式碼
import RPi.GPIO as GPIO import time 載入模組 LED_PIN = 12
GPIO.setmode(GPIO.BOARD) GPIO.setup(LED_PIN, GPIO.OUT) 設定編號規則與channel 填上燈泡接電的引腳編號
修改完畢請進行存檔 1. 按下 Ctrl + X 離開 2. 詢問是否儲存修改?按下 Y
3. 詢問要儲存的檔名 > 按下 ENTER
#!/usr/bin/python import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) RED_PIN =
11 # GPIO17 YEL_PIN = 12 # GPIO18 GRN_PIN = 13 # GPIO27 GPIO.setup(RED_PIN, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(YEL_PIN, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(GRN_PIN, GPIO.OUT, initial=GPIO.LOW) try: while True: GPIO.output(RED_PIN, GPIO.HIGH) time.sleep(4) GPIO.output(RED_PIN, GPIO.LOW) GPIO.output(YEL_PIN, GPIO.HIGH) time.sleep(2) GPIO.output(YEL_PIN, GPIO.LOW) GPIO.output(GRN_PIN, GPIO.HIGH) time.sleep(4) GPIO.output(GRN_PIN, GPIO.LOW) except KeyboardInterrupt: print "Exception: KeyboardInterrupt" finally: GPIO.cleanup() 完整程式碼 請查看 traffic_light_nonstructure.py 紅綠燈亮燈 這邊一樣要改引腳編號!
sudo poweroff 將樹莓派關機 輸入指令 請幫忙將樹莓派裝置回復成組裝前模樣 待助教點收完畢設備再離位,謝謝配合!