2018年1月16日 星期二

[Tinkercad arduino程式設計]使用脈波寬度調變PWM控制LED亮度

前一篇我們使用digitalwrite來控制LED的on/off,本篇則介紹如何使用脈波寬度調變(Pulse Width Modulation, PWM)控制LED亮度,造成一種由暗到漸漸亮,亮到漸漸暗的效果。
上圖剛開始使用title block comment視覺模塊來當成註解,說明程式的功能,接下來用兩個count計數視覺模塊來設計迴圈效果,一個是上數up,另外一個是下數down,每次增減量都是以5為單位,範圍從0-255或255-0。控制變數為brightness,然後用set pin輸出視覺模塊來控制第9腳LED的亮度。最後再利用wait來製造延遲效果。以下是將上圖轉換成程式,要特別留意是set pin輸出視覺模塊會被轉換成analogwrite()以類比輸出方式來控制LED的亮度,這就是PWM技術。 在arduino中標有"~"符號者,就是可以被當成類比輸出,有 ~3、~5、 ~6、 ~9、 ~10 和 ~11等腳位。


2018年1月15日 星期一

[ Tinkercad Arduino] 用Ardino快樂學習程式設計

前幾篇文章我們介紹如何使用Tinkercad去設計以及模擬電路,Tinkercad是一套免費的工具,功能相當強大,可以學習3D建模、電路設計、以及程式設計。今天本文要介紹就是如何使用Tinkercad來學習程式設計。以步驟如下:

1.開啟Tinkercad網站:https://www.tinkercad.com,登入帳號和密碼後,選擇Circuits以及Create new Circuit。



2.選擇Arduino元件。


3.加上LED以及330歐姆的電阻,並將它連接到Arduino第13支腳以及GND。

4.開啟Code Editor,可以看到程式碼已經撰寫好了。


5.按下Start Simulation,就可以看到它在執行。
這次從123d circuit到Tinkercad circuit的改版,在程式部份增加視覺化的程式設計,用拼圖方式就能寫程式。程式設計如下圖,先把內建LED(build-in LED)點亮,等待(wait)1秒,再把內建LED(build-in LED)熄滅,再等待(wait)1秒,依此循環,雖然視覺化的程式設計看不出來有循環的意思,但對於嵌入式系統,會有一點超級大迴圈。

上圖的轉換成程式列表如下:

void setup()
{
  pinMode(13, OUTPUT);
}

void loop()
{
  digitalWrite(13, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(13, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
}


2018年1月14日 星期日

[Tinkercad] 簡易電路LED串並聯介紹


(影片來源:https://www.youtube.com/watch?v=upuGkCdGEKA&t=30s)

Tinkercad是一套教導小朋友認識基本電路的好工具,上面影片中教導我們如何用三用電錶來量測電壓電流、以及電阻,再教導我們認識兩個LED的串並聯電路。

以上是我使採用330歐姆的電阻以及9V的電池,來觀察發現電流高達20.9mA,已經呈現過電流的現象。



採用LED串聯電路,指一顆LED正極接至另一顆的負極,我們可以發現電流下降到14.9mA,已經沒有過電流的現象,記得串聯流經每顆LED的電流是相同的。

採用LED並聯指一顆LED正極和負極分別接至另一顆的正極和負極,我們發現電流增加到21.1mA,也沒有發現LED有過電流的情形,因為並聯所以每個LED的電流值僅10.55mA。


接下來我們來做實驗,求LED過電流最低是多少呢?

(1) 大約超過20mA就有過電流現象。


(2) 大約超過145mA就有燒毀現象。



2018年1月10日 星期三

[Tinkercad] 好用的電路學習工具-TinkerCAD

Tinkercad不僅是適合所有人的簡單線上3D設計和3D列印應用程式,同時也是學習電路設計、模擬的好工具。首先,可以在上圖右上方先註冊,取得帳號後就可以登入。


在上圖有左方,可以選擇Circuits選單,然後按下Create New Circuit按鈕,就可以開始設計,下面影片是教導如何用一個開關來啟閉馬逹的運轉。




這套工具很強,也很實用。

2018年1月8日 星期一

[英雄出少年系列] 測水位

目前市面上賣售的水位計,可以看水利署電子報認識水位計

本文介紹的接觸式水位計。
電路圖:


程式碼:



結果:



作者:
雲林科技大學-資訊工程所 莊尚儒
曾於財團法人資訊工業策進會 DIGI+ Talent計畫中研習,平時興趣為設計開發板的應用、網頁設計、App設計與科技和商品結合的設計

2018年1月7日 星期日

[英雄出少年系列] 用Arduino控制伺服馬達

伺服馬達用在機器人關節的控制,對於設計機器人而言,是很重要的技術,伺服馬達就是使用伺服機構的馬達(電動機),簡單說就是可以精準控制,如本篇文章提到用角度來控制。

電路圖:


程式碼:

#include

#include

Servo myservo; // 建立Servo物件,控制伺服馬達

void setup()
{
  myservo.attach(2); // 連接數位腳位2,伺服馬達的訊號線
}

void loop()
{
  for(int i = 0; i <= 180; i+=1){
    myservo.write(i); // 使用write,傳入角度,從0度轉到180度
    delay(20);
  }
  for(int i = 180; i >= 0; i-=1){
    myservo.write(i);// 使用write,傳入角度,從180度轉到0度
    delay(20);
  }
}

實驗結果:

作者:
雲林科技大學-資訊工程所 莊尚儒
曾於財團法人資訊工業策進會 DIGI+ Talent計畫中研習,平時興趣為設計開發板的應用、網頁設計、App設計與科技和商品結合的設計

[英雄出少年系列] Arduino超音波測距範例

電路圖

程式碼:

實驗結果:









作者:
雲林科技大學-資訊工程所 莊尚儒
曾於財團法人資訊工業策進會 DIGI+ Talent計畫中研習,平時興趣為設計開發板的應用、網頁設計、App設計與科技和商品結合的設計