CH5 數位訊號 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.

Slides:



Advertisements
Similar presentations
人機介面 Arduino 簡介 授課教師 開課單位. Arduino 簡介 Arduino 是一塊 Open source 的 Simple i/o 介面板,並 且具有使用類似 java, C 語言的開發環境。 可以快速使用 Arduino 語言 ( 基於 wiring) 與 Flash 或 Processing…
Advertisements

苏少版《音乐》教材分析与 教学研究 江苏省中小学教研室 戴海云. 提 纲 第一部分 《音乐》教材分析 编写思路 主要特点 第二部分. 《音乐》教学实验与研究 教学研究 案例分析.
中國音樂史.
課程名稱:多變的聲音 編授教師: 中興國中 楊秉鈞.
上海交通大学附属中学 李由 晏敏宽 刘华典 指导老师:朱乔荣 徐忠惠 制作:李由
广告文案作业三 黄佩.
开关电源的结构和基本原理.
民间器乐 第五章.
聚成企业管理顾问有限公司 2006年6月1日.
高雄市復華高級中學 校務分享簡介 簡報人:康木村 校長.
黃金比例.
“国培计划(2012)”—幼儿园骨干教师远程培目
孔子傳第三集: 興辦私學-禮學之美 生命教育工作坊.
LabVIEW简介 李楠.
國三第五課 亞洲音樂漫遊.
智慧電子應用設計導論(1/3) Sensor-II
Netduino 程式設計教學 國立豐原高中 郭再興.
4-10 STM Timer/Counter 與比較吻合輸出
VHDL數位電路實習與專題設計 文魁資訊-UE301
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
Arduino 基本知識.
微處理機原理與應用 Chapter 1 簡介 Chung-Min Wu, Ph.D
智慧電子應用設計導論(1/3) Sensor-III
內容:串列傳輸 實作:Arduino to PC 、 Arduino to Arduino 簡報:廖崇義
電子技術(三) 小專題報告 紅外線感溫顯示器
102年度新北市立三重商工旗艦計畫實施方案 先進車用電子控制技術培育計畫
特雷門琴 (Theremin) 是 tone() 函數的應用, 它只需要一個蜂鳴器, 一個光敏電阻, 以及一個 10K 電阻就可以進行測試了. 實際電路接線如下 :光敏電阻與 10 K 電阻串聯, 光敏電阻一端接 5V, 與電阻串接處接Arduino 的 A0 腳, 電阻另一端接地. 而蜂鳴器則 +
Arduino单片机基础 周弋
    Arduino 1602 LCD 量測電壓顯示 LCD 示波器    林品成 月.
2010電資院 「頂尖企業暑期實習」 經驗分享心得報告
小專題-霍爾電路之IC研究 組員:施怡儒 S 柯曄新 S 張久藝 S
8-1 功能簡介 8-4 實驗成果 8-2 電路說明 8-5 延伸應用與練習 8-3 程式設計
Arduino.
动手玩转Arduino (五) RF数据通信
智慧電子應用設計導論(1/3) Display
绪论:LabVIEW控制简介 复旦大学物理教学实验中心 phylab.fudan.edu.cn.
語法:Variables & Functions 實作:Digital out (Button+LED) 簡報:廖崇義
Labview內部Linx功能簡介(Analog/Digital/PWM)
DHT11 溫溼度感測器 林品成 月.
K60基础课程 02 首都师范大学物理系 王甜.
近代物理实验期末报告 ——by 金宵 周逸卢
第二週 記譜法.
電子音樂 通訊系 B 楊穎穆.
    使用Arduino量測交流(AC)電壓    林品成 月.
    使用Arduino量測直流(DC)電壓    林品成 月.
6-1 功能簡介 6-4 實驗成果 6-2 電路說明 6-5 延伸應用與練習 6-3 程式設計
亚博科技 Arduino视频教程 第8讲 蜂鸣器发声实验.
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
Ch3 經營環境 管理學:整合觀點與創新思維3/e.中山大學企管系 著.前程文化 出版.
亚博科技 Arduino视频教程 第12讲 8乘8点阵.
物聯網期末報告 組員: 邱景柏 方嘉慶 陳約翰 洪銘陽
K60入门课程 06 首都师范大学物理系 靳熙芃.
第九章 循序邏輯應用 9-1 計數器 9-2 跑馬燈 9-3 紅綠燈 台北市私立景文高級中學 資電學程 吳永義 數位邏輯.
知识点0204 夏普红外测距传感器 主讲人:宁波鄞州职业教育中心学校 陈浙 (Arduino功能模块与应用)
羊樂多笛笛 作者:吳滋錕、劉智昇.
演講人:國立彰化師大附工 機電科主任:楊 昭 德
測試藍芽模組的接收和發送功能 班級:資通三A 學號: 姓名:簡宏恩.
Arduino課程 液晶1602 中部自造者基地-雲科大.
智慧型環境控制甲蟲幼蟲養殖教育觀察箱 溪南國中 胡啟有.
人民音乐出版社 七年级.
动态扫描显示(实验四) 查询式键盘(实验五)
第五章 序列埠通訊 並列與序列通訊簡介 認識序列埠 認識字元資料類型 字串資料類型 從序列埠監控視窗觀察變數 從Arduino接收序列資料
第七章 LED七段顯示器 認識七段顯示器 用陣列儲存七段顯示數字 認識74HC595(序列連接七段顯示器)
科展心得分享 電子科教師:童信源.
第四章 開關電路與LED跑馬燈 認識開關 讀取數位輸入值 if條件式 撰寫迴圈程式 認識陣列 認識埠口與位移操作.
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
裕民國小 100學年度第一學期 多元文化社團 直笛社團&合唱社團 期末成果發表會
第十章 變頻控制LED燈光和馬達 調節電壓變化 類比輸出(PWM) 製作調光器 隨機數字與燭光效果 透過序列埠調整燈光亮度 認識直流馬達
第2章 Arduino编程.
Presentation transcript:

CH5 數位訊號 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇

數位表示方式 數位訊號通常會使用2進位表示: 10011010101 在0與1之間所轉換的其實就是電壓高低的準位,0表示電壓在低準位,而1表示電壓在高準位,依據系統運作的工作電壓,低準位和高電壓準位不會只限於單一數值,而會介於一電壓範圍區間內。 數位訊號則非常要求時脈周期,每個訊號的時間長短會依據連接的設備不同而有不同的要求。

Arduino LED範例 digitalWrite(ledPin, HIGH); // 將第13隻腳設為高電位 delay(1000); // 等待1秒 digitalWrite(ledPin, LOW); // 將第13隻腳設為低電位 改變Delay函式內的時間參數,會有不同的影響

Arduino LED接線 LED可以有兩種接法,因為LED是一種二極體,只有單一方向可以導通,讓電流由正極流向負極,接法1是視Arduino的接點為負極,所以只有當接腳改變為低電位時,LED才會亮;而接法2是視接腳為正極,故當接腳為高電位時,LED才會亮。

Arduino Pin13 在Arduino的Duemilanove板子上,第13隻腳已經接上了1k的限流電阻,如圖所示。 若讀者利用其他數位腳位來測試LED時,最好加上限流電阻的部分以保護LED,尤其是採用外部電源時。

Arduino結合按鈕與LED 利用外部的訊號來做燈號的切換,有單純的開關或是紅外線感應。

Arduino結合按鈕與LED val = digitalRead(BUTTON); // 讀取並儲存按鈕狀態 if (val == HIGH) //若按鈕按下,改變狀態 程式當中的HIGH,是因為按鈕一邊接上的是Arduino的正5伏特腳位,故當按鈕被按下時,接腳的狀態會為高電位,並不是任意定義腳位的狀態,需依據實際接線的安排。

霹靂燈 有兩種方式,第一種是直接接上多顆LED按照單顆的接法,分別接在不同腳位上;另一種是已經將10顆LED整合成一個小模組的方式,如圖: 請注意使用的為共陽或共陰的模組

霹靂燈接線與控制 void loop() { // 將第i隻腳設為高電位 for(i=0;i<6;i++) digitalWrite(ledPin[i], HIGH); delay(1000); // 等待1秒 // 將第i隻腳設為低電位 digitalWrite(ledPin[i], LOW); }

指撥開關與LED 每當外在改變指撥開關的組合時,此時的LED也會相對應的產生一樣的亮法。

LED陣列 它經由16隻接腳來控制8×8共64顆LED,這邊LED有分成共陽極和共陰極兩種,在程式上需要特別注意這樣的不同。

LED陣列內部 左:共陽;右:共陰

LED陣列接腳 由於Arduino本身的核心單晶片只有28隻腳位,其中也只有14隻數位控制接腳,扣除必要腳位,只剩12隻,因此範例我們犧牲了LED陣列中最外圍的一圈,實際只控制了6×6的燈號。

LED陣列與Arduino接線腳位 LED陣列 Arduino 1 空接 9 7 2 10 8 3 11 4 12 5 13 6 14 15 16

Arduino控制程式 void loop() { //由上至下移動燈號陣列 int UDPins[] = {5, 13, 4, 7, 12, 8}; //由左至右移動燈號陣列 int RLPins[] = {6, 3, 11, 2, 10, 9}; for(i=0;i<=5;i++) //由上至下顯示燈號 digitalWrite(UDPins[i],HIGH); delay(200); //暫留0.2秒,方便觀察 }

Arduino控制程式 為了程式撰寫的結構能夠簡單明瞭,先定義了兩個陣列來存放實際LED燈的接腳定義,這樣在之後的控制可以使用迴圈讓程式看起來乾淨許多。由前面的LED陣列內部架構可以看出,第1個LED陣列的上下燈號控制中,只需要將Arduino的5、13、4、7、12、8依序拉高電位,這樣就會驅動LED陣列中的6、16、4、9、15、10的腳位,讓燈號亮起。要關閉燈號也就在依照想要的順序將腳位的訊號由高電位該為低電位即可。

外部控制燈號顯示 由於讀取到直線滑動式可變電阻訊號電壓的值為0-5伏特,所以在顯示當中是以0-1023來表示,我們也就利用1024除以總共可以控制的LED陣列數量6組,這個間隔大約為170,所以在程式當中使用判斷式來隨著不同的區間亮出不一樣的燈號位置。

部分程式碼區段 //讀取滑桿式可變電阻的電壓值 範圍:0 - 1023 int analogValue = analogRead(0); //依據不同的電壓值觸發不同的列數 1 - 6 if(analogValue>=853) //電壓值高於853 觸發最右邊 { digitalWrite(RLPins[0],HIGH); digitalWrite(RLPins[1],HIGH); digitalWrite(RLPins[2],HIGH); digitalWrite(RLPins[3],HIGH); digitalWrite(RLPins[4],HIGH); digitalWrite(RLPins[5],LOW); }

XY滑桿LED陣列燈光控制

7段顯示器 它已經將8顆LED排列成8字形,外加一顆小數點,經由不同的燈號組合搭配出0到9的數字顯示。基本的7段顯示器模組只有1位數字,也可以買到多顆組合在一起的多位數顯示。

7段顯示器 7段顯示器也是一種LED陣列,因此也有分成共陽極與共陰極兩種,1顆顯示器有10隻腳位,除了8科LED的控制外,另外兩隻是共同接腳(COM),在電路裡擇一接上即可,依據顯示器共陽或共陰,COM腳位要接正電或接地。

7段顯示器 1顆7段顯示器中的腳位排列如圖所示,分做上下各5之接腳,中間的為共同接腳,由上方右邊數來第2隻是為a腳位,其餘以順時針方向排列,而每隻腳位所對應到的位置也標示在圖中,依據這些位置,才可以顯示出我們要的數字。

Arduino與7段顯示器接線

顯示設定 //先將7段顯示器的0~9用陣列設定好 int number[10][7] ={ {4, 6, 7, 8, 9, 10}, {7, 10}, {3, 6, 7, 8, 9}, {3, 6, 7, 9, 10}, {3, 4, 7, 10}, {3, 4, 6, 9, 10}, {3, 6, 7, 8, 9, 10}, {6, 7, 10}, {3, 4, 6, 7, 8, 9, 10}, {3, 4, 6, 7, 9, 10} };

PWM Pulse Width Modulation 數位訊號模擬成類比訊號,最常使用的方法便是PWM – 脈波寬度調變。 主要的原理便是調整電壓準位變化的時間長短,我們來看以下例子:

Arduino控制PWM 在Arduino的核心ATMEGA328上共有6隻接腳支援PWM訊號,在Arduino的板子上都有標示出來,分別是:3、5、6、9、10、11,如果是較舊的核心:ATMEGA8,只有支援9、10、11三隻腳。 analogWrite(LED, i); // PWM輸出(逐漸變亮) 輸入的參數:第1個是接腳;第2個則是PWM訊號的數值,從0-255

蜂鳴器 蜂鳴器一般常見的有壓電式與磁激式兩種,而聲音高低的變化簡單來說,也就是頻率的不同,藉由高低電位長短時間的配合,可以讓蜂鳴器模擬出近似的音階變化。

音階高低說明 音階 Do Re Mi Fa So La Si 低音 261 294 329 349 392 440 493 中音 523 587 659 698 784 880 988 高音 1046 1175 1318 1397 1568 1760 1976

Arduino音階說明 音階 頻率(Hz) 週期 高電位時間 c(Do) 261 3830 1915 d(Re) 294 3400 1700 E(Mi) 329 3038 1519 f(Fa) 349 2864 1432 g(So) 392 2550 1275 a(La) 440 2272 1136 b(Si) 493 2028 1014 523 1912 956

Arduino與蜂鳴器接線 大顆的蜂鳴器,使用電晶體來放大訊號。若不太要求聲音大小聲、蜂鳴器本身也屬於比較小尺寸的,可以直接從Arduino的腳位接上蜂鳴器。

音階 void playTone(int tone, int duration) { for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); }

節拍 void playNote(char note, int duration) { char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; // 利用比對字元的方式來播放某一個音階 for (int i = 0; i < 8; i++) // 將比對到的音階高電位時間長度傳送給playTone函式播放 if (names[i] == note) playTone(tones[i], duration); }

特殊LED閃爍 要在8X8的LED陣列上畫出自己想要的圖案,需要先拿一張空白的紙,畫滿跟LED陣列一樣的排列方式,或是用方格紙也行,必須知道圖案需要怎麼樣的控制方式才可以達到最接近的圖形。

分段測試 for(i=1;i<=3;i++) digitalWrite(UDPins[i],HIGH); digitalWrite(RLPins[i],HIGH); digitalWrite(RLPins[5],LOW); for(i=1;i<=4;i++) digitalWrite(UDPins[i],HIGH); for(i=0;i<=5;i++) digitalWrite(RLPins[i],HIGH); digitalWrite(RLPins[5],LOW);

結果呈現 最後延遲是決定圖案閃爍的頻率,延遲越小閃爍速度越快。也可以搭配類比訊號,例如光敏電阻,當光線越暗時,心就會跳得越快。偷偷給個提示,可以使用map這個函式來做轉換唷!

數位擴充 擴充數位輸出的晶片:74HC595 需要3隻腳位,就可以擴充到8隻數位輸出

595腳位說明 腳位編號 名稱 功能說明 1-7, 15 Q0-7 並列輸出 (Parallel Output) 9 Q7’ 串列輸出 (Serial Output) 8 GND 接地 16 Vcc 5伏特工作電壓 10 MR Master Reset,接5伏特 11 SH_CP Shift Register Clock Input 12 ST_CP Storage Register Clock Input 13 OE Output Enable,低電位表示致能啟動 14 DS Data Serial input,串列資料輸入

Arduino與單顆595接線

shiftOut SPI(Serial Peripheral Interface)的通訊 需要從Arduino的clockPin(Pin 12)輸出,這樣74HC595才會知道dataPin(Pin 11)的正確讀取方式。

多顆595 只需要將SH_CP和ST_CP接在一起,另外第1顆的Q7’接到第2顆的DS就大功告成了。