2020年4月11日 星期六

[Arduino] 讀取訊號

讀取訊號

目的:藉由電阻的不同,讀取到不同的訊號

  1. 環境準備
  2. 額外材料
    • 可變電阻 *1
    • 麵包版 * 1
    • 無源蜂鳴器*1
    • 線材
      • 公對母 * 3
      • 公對公 * 5
  3. 程式
    • 開新檔案
    • 另存新檔
      • 檔名:04_DetectSinglal
      • 填入內容
      • const byte analogPin =A0;
        int value;
        
        void setup() {
          // put your setup code here, to run once:
          Serial.begin(9600);
        }
        
        void loop() {
          // put your main code here, to run repeatedly:
          value = analogRead(analogPin);
          Serial.println(value);
          tone(13,value,500);
          delay(550);
        }
示意圖

開啟監控畫面


2020年3月14日 星期六

[Arduino] What is Arduino?

Ref : 維基百科

Arduino是一家製作開源硬體和開源軟體的公司,該公司負責設計和製造單板微控制器和微控制器套件,用於構建數位裝置和互動式物件,以便在物理和數位世界中感知和控制物件。

Arduino電路板設計使用各種微處理器和控制器。這些電路板配有一組數字和類比I/O引腳,可以連接各種擴充板或麵包板和其他電路。這些電路板具有串列埠,包括某些型號上的通用串列匯流排(USB),也用於從個人電腦載入程式。微控制器通常使用C/C++程式語言。除了使用傳統的編譯工具鏈之外,Arduino專案還提供了一個基於Processing語言專案的整合式開發環境。

Arduino專案始於2003年,作為義大利伊夫雷亞地區伊夫雷亞互動設計研究所的學生專案,目的是為新手和專業人員提供一種低成本且簡單的方法,以建立使用感測器與環境相互作用的裝置執行器。適用於初學者愛好者的此類裝置的常見範例包括簡單機器人、恆溫器和運動檢測器。

Arduino這個名字來自義大利伊夫雷亞的一家酒吧,該專案的一些創始人過去常常會去這家酒吧。 酒吧以伊夫雷亞的Arduin(Arduin of Ivrea)命名,他是伊夫雷亞邊疆伯爵,也是1002年至1014年期間的義大利國王

Why Arduino?

有許多其他微控制器和微控制器平台可用。 Parallax Basic Stamp,Netmedia的BX-24,Phidg​​ets,MIT的Handyboard以及許多其他產品都提供了類似的功能。 Arduino簡化了使用微控制器的方式,但與其他系統相比它提供了一些優勢:
  1. 便宜:Arduino板相對便宜。可以手動組裝最便宜的Arduino模塊版本,甚至預組裝的Arduino模塊的價格也不到50美元
  2. 跨平台:Arduino軟件(IDE)在Windows,Macintosh OSX和Linux操作系統上運行。大多數微控制器系統限於Windows。
  3. 簡單:Arduino軟件(IDE)對於初學者來說易於使用且夠靈活
  4. 開源和可擴充:Arduino是開源的軟體且很容易讓別人擴充或使用別的人擴充

2020年2月7日 星期五

[Arduino] 測試按鈕

測試按鈕

目的:按下喇叭之後才能發出聲音
  1. 環境準備
  2. 額外材料
    • 無源蜂鳴器 *1
    • 麵包版 * 1
    • 傾斜開關 * 1
    • 電阻 * 1
    • 線材
      • 公對母 * 3
      • 公對公 * 3
  3. 程式
    • 開新檔案
    • 另存新檔
      • 檔名:02_DoReMi_Btn
      • 填入內容

const int buttonPin = 2;     // button pin
const int beePin =  13;      // bee pin
const int NOTE_C5 = 523;     // Do

void setup() {
  // initialize the BEE pin as an output:
  pinMode(beePin, OUTPUT);      
  // initialize the push button pin as an input:
  pinMode(buttonPin, INPUT);     
}

void loop(){
  
  // check if the push button is pressed.
  // if it is, the buttonState is HIGH:
  if (digitalRead(buttonPin) == HIGH) {     
      tone(13, NOTE_C5 , 500);
  } 
}

接法



挑戰
如果要按按鈕輸出一首音樂該怎麼做
#include "pitches.h"

int kunde[]={
  NOTE_G5,NOTE_E5,NOTE_E5,NOTE_F5,NOTE_D5,NOTE_D5,NOTE_C5,NOTE_D5,NOTE_E5,NOTE_F5,NOTE_G5,NOTE_G5,NOTE_G5,
  NOTE_G5,NOTE_E5,NOTE_E5,NOTE_F5,NOTE_D5,NOTE_D5,NOTE_C5,NOTE_E5,NOTE_G5,NOTE_G5,NOTE_C5};
int kunde_time[]={
  500,500,1000,500,500,1000,500,500,500,500,500,500,1500,
  500,500,1000,500,500,1000,500,500,500,500,1500};
int duration = 500;  // 500 milliseconds
const int buttonPin = 2;     // button pin
const int beePin =  13;      // bee pin

// variables will change:
int buttonState = 0;         // variable for reading the push button status

void setup() {
  // initialize the BEE pin as an output:
  pinMode(beePin, OUTPUT);      
  // initialize the push button pin as an input:
  pinMode(buttonPin, INPUT);     

}

void loop() {
  // read the state of the push button value:
  buttonState = digitalRead(buttonPin);

  // check if the push button is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) { 
       
    for (int i= 0; i < 24; i++) 
    {
      // 在 pin13 上輸出聲音,每個音階響 duration 豪秒
      tone(beePin, kunde[i], kunde_time[i]);
      
      // 間隔一段時間後再播放下一個音階
      delay(kunde_time[i]+100);
    }
    // 兩秒後重新播放 
    delay(2000);
    totalCount=0;
  }
      

}

如果要按三次按鈕才輸出音樂呢
#include "pitches.h"

int kunde[]={
  NOTE_G5,NOTE_E5,NOTE_E5,NOTE_F5,NOTE_D5,NOTE_D5,NOTE_C5,NOTE_D5,NOTE_E5,NOTE_F5,NOTE_G5,NOTE_G5,NOTE_G5,
  NOTE_G5,NOTE_E5,NOTE_E5,NOTE_F5,NOTE_D5,NOTE_D5,NOTE_C5,NOTE_E5,NOTE_G5,NOTE_G5,NOTE_C5};
int kunde_time[]={
  500,500,1000,500,500,1000,500,500,500,500,500,500,1500,
  500,500,1000,500,500,1000,500,500,500,500,1500};
int duration = 500;  // 500 milliseconds
int totalCount =0; 
const int buttonPin = 2;     // button pin
const int beePin =  13;      // bee pin

// variables will change:
int buttonState = 0;         // variable for reading the push button status

void setup() {
  // initialize the Bee pin as an output:
  pinMode(beePin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);     

}

void loop() {
  // read the state of the push button value:
  buttonState = digitalRead(buttonPin);

  // check if the push button is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) { 
        totalCount++;
        delay(500);
  } 
  
  if(totalCount==3)  
  {
    for (int i= 0; i < 24; i++) 
    {
      // 在 pin13 上輸出聲音,每個音階響 duration 豪秒
      tone(beePin, kunde[i], kunde_time[i]);
      
      // 間隔一段時間後再播放下一個音階
      delay(kunde_time[i]+100);
    }
    // 兩秒後重新播放 
    delay(2000);
    totalCount=0;
  }
      

}


2020年2月1日 星期六

[Arduino] 測試喇叭


測試喇叭

目的:利用Pin 13輸出聲音

  • Do(523Hz) 
  • Re (587Hz)
  • Mi(659Hz)
  • Fa(698Hz)
  • So(784Hz)
  • La(880Hz)
  • Si(988Hz)
  • 高音 Do(1047Hz) 
  1. 環境準備
  2. 額外材料
    • 無源蜂鳴器*1
    • 線材公對母*3
  3. 程式
    • 開新檔案
    • 另存新檔
      • 檔名:01_DoReMi
      • 填入內容

#include "pitches.h"

// notes in the melody:
int melody[] = {
  NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_A5, NOTE_B5, NOTE_C6};
int duration = 500;  // 500 milliseconds

void setup() {

}

void loop() {  
  for (int i= 0; i &lt; 8; i++) {
    // 在 pin13 上輸出聲音,每個音階響 duration 豪秒
    tone(13, melody[i], duration);
    
    // 間隔一段時間後再播放下一個音階
    delay(1000);
  }
  
  // 兩秒後重新播放 
  delay(2000);
}
    • 新增標籤
      • 名稱:pitches.h
      • 內容

/*************************************************
 * Public Constants
 *************************************************/

#define NOTE_B0  31
#define NOTE_C1  33
#define NOTE_CS1 35
#define NOTE_D1  37
#define NOTE_DS1 39
#define NOTE_E1  41
#define NOTE_F1  44
#define NOTE_FS1 46
#define NOTE_G1  49
#define NOTE_GS1 52
#define NOTE_A1  55
#define NOTE_AS1 58
#define NOTE_B1  62
#define NOTE_C2  65
#define NOTE_CS2 69
#define NOTE_D2  73
#define NOTE_DS2 78
#define NOTE_E2  82
#define NOTE_F2  87
#define NOTE_FS2 93
#define NOTE_G2  98
#define NOTE_GS2 104
#define NOTE_A2  110
#define NOTE_AS2 117
#define NOTE_B2  123
#define NOTE_C3  131
#define NOTE_CS3 139
#define NOTE_D3  147
#define NOTE_DS3 156
#define NOTE_E3  165
#define NOTE_F3  175
#define NOTE_FS3 185
#define NOTE_G3  196
#define NOTE_GS3 208
#define NOTE_A3  220
#define NOTE_AS3 233
#define NOTE_B3  247
#define NOTE_C4  262
#define NOTE_CS4 277
#define NOTE_D4  294
#define NOTE_DS4 311
#define NOTE_E4  330
#define NOTE_F4  349
#define NOTE_FS4 370
#define NOTE_G4  392
#define NOTE_GS4 415
#define NOTE_A4  440
#define NOTE_AS4 466
#define NOTE_B4  494
#define NOTE_C5  523
#define NOTE_CS5 554
#define NOTE_D5  587
#define NOTE_DS5 622
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_FS5 740
#define NOTE_G5  784
#define NOTE_GS5 831
#define NOTE_A5  880
#define NOTE_AS5 932
#define NOTE_B5  988
#define NOTE_C6  1047
#define NOTE_CS6 1109
#define NOTE_D6  1175
#define NOTE_DS6 1245
#define NOTE_E6  1319
#define NOTE_F6  1397
#define NOTE_FS6 1480
#define NOTE_G6  1568
#define NOTE_GS6 1661
#define NOTE_A6  1760
#define NOTE_AS6 1865
#define NOTE_B6  1976
#define NOTE_C7  2093
#define NOTE_CS7 2217
#define NOTE_D7  2349
#define NOTE_DS7 2489
#define NOTE_E7  2637
#define NOTE_F7  2794
#define NOTE_FS7 2960
#define NOTE_G7  3136
#define NOTE_GS7 3322
#define NOTE_A7  3520
#define NOTE_AS7 3729
#define NOTE_B7  3951
#define NOTE_C8  4186
#define NOTE_CS8 4435
#define NOTE_D8  4699
#define NOTE_DS8 4978

接法


挑戰播一首歌

#include "pitches.h"

// notes in the melody:
int melody[] = {
  NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_A5, NOTE_B5, NOTE_C6};
  
int kunde[]={
  NOTE_G5,NOTE_E5,NOTE_E5,NOTE_F5,NOTE_D5,NOTE_D5,NOTE_C5,NOTE_D5,NOTE_E5,NOTE_F5,NOTE_G5,NOTE_G5,NOTE_G5,
  NOTE_G5,NOTE_E5,NOTE_E5,NOTE_F5,NOTE_D5,NOTE_D5,NOTE_C5,NOTE_E5,NOTE_G5,NOTE_G5,NOTE_C5};
int duration = 500;  // 500 milliseconds

void setup() {

}

void loop() {
    
  for (int i= 0; i < 24; i++) 
  {
    // 在 pin13 上輸出聲音,每個音階響 duration 豪秒
    tone(13, kunde[i], duration);
    
    // 間隔一段時間後再播放下一個音階
    delay(kunde_time[i]+100);
  }

  // 兩秒後重新播放 
  delay(2000);
}


挑戰播一首可以有長度變化的歌

#include "pitches.h"

// notes in the melody:
int melody[] = {
  NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_A5, NOTE_B5, NOTE_C6};
  
int kunde[]={
  NOTE_G5,NOTE_E5,NOTE_E5,NOTE_F5,NOTE_D5,NOTE_D5,NOTE_C5,NOTE_D5,NOTE_E5,NOTE_F5,NOTE_G5,NOTE_G5,NOTE_G5,
  NOTE_G5,NOTE_E5,NOTE_E5,NOTE_F5,NOTE_D5,NOTE_D5,NOTE_C5,NOTE_E5,NOTE_G5,NOTE_G5,NOTE_C5};
int kunde_time[]={
  500,500,1000,500,500,1000,500,500,500,500,500,500,1500,
  500,500,1000,500,500,1000,500,500,500,500,1500};

void setup() {

}

void loop() {
    
  for (int i= 0; i < 24; i++) 
  {
    // 在 pin13 上輸出聲音,每個音階響 kunde_time[i]豪秒
    tone(13, kunde[i], kunde_time[i]);
    
    // 間隔一段時間後再播放下一個音階
    delay(kunde_time[i]+100);
  }

  // 兩秒後重新播放 
  delay(2000);
}


[Arduino] 環境準備與測試

環境準備

  1. Arduino軟體
    • 軟體下載:https://www.arduino.cc/en/Main/Software
    • 選擇適用的軟體
  2. 開啟軟體 arduino.exe
  3. 連接Arduino Uno
  4. 選擇序列埠

測試範例

  1. 開啟範本 Blink: 檔案>範例>Basics>Blink
  2. 輸出
  3. 檢視成果

2015年12月18日 星期五

Webpack

KD換了公司之後要做的事情又變得不一樣了~
現在要來研究React.js,
不過根據React官網的介紹,
為了使用React.js最簡單的方式當然就是下載不用自己建置的JavaScript就可以了,
可惜天不從人願,
這樣的寫法可能無法完整了解react的api....
所以請自己建置吧~
官網建議使用 browserify 或是 webpack
這邊就介紹webpack了~~~~
為什麼要特別介紹呢!
因為我要被官網搞死~~
沒有任何基礎下指令怎麼下都是不對的.....................
廢話不多說

Step 1 : install npm
NPM - Node Package Manager 為什麼要用他呢?
請參考連結,因為JavaScript日益茁壯,NPM的功能跟NUGet差不多。
最簡單的安裝方式就是安裝Node.js


Step 2 : install react
記得用工作管理員開啟cmd
$ npm install --save react react-dom babel-preset-react


Step 3 : install webpack
參考webpack官網
$ npm install webpack -g


接下來都是抄官網的..............
Step 4 : setup the compilation

先移動到預計寫code的資料夾~~~cd 應該會吧~
然後新增兩個檔案
1.entry.js
document.write("It works.");

2.index.html
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <script type="text/javascript" src="bundle.js" charset="utf-8"></script>
    </body>
</html>

接下來就簡單了~~
執行指令把entry.js建置成bundle.js(畢竟html裡面是include bundle.js

$ webpack ./entry.js bundle.js

這樣就可以啦~~~~其實官網寫得很清楚了~~
剩下的我就不多說~

最重要的是最後一步,
因為webpack預設是讀取webpack.config.js,
所以最終是要把所有設定都寫在config.js裡面。

2015年7月22日 星期三

Add Microsoft SQL JDBC driver to Maven

參考:

起因:
因為使用Eclipse開發Java Program,希望能採用現在比較主流的Maven控管所有的Dependency檔。
但是MSSQL JDBC是少數不直接支援的。