Arduino  

Arduino 互動裝置簡介

這塊小小的板子
原本感覺上會是唸資工之類的才會用到的東西
沒想到卻是許多互動設計會用得到的玩意兒

這個的功能就是讓設計者可以透過接線
然後利用板子上的程式
(不過,這程式是自己要先用電腦寫完,再存到這塊板子裡面)讓連接的裝置如LED、燈光等
產生一些動態的呈現
甚至可以利用按鈕之類的與使用者互動

舉例來說
有些展覽會要使用者按一下鈕
然後周圍的LED燈光就會開始變化
就可以用Arduino來做到
而不需要搬一台筆電來控制

Arduino

 

他的USB孔是這種
接印表機用的
平常在寫程式時就要用這個接到電腦
他也可以直接吃USB的電

Arduino

 

但是等到設計完之後當然就不希望東西還要再掛在電腦上
畢竟程式都已經存到這片裡面
所以直接用這邊的電源插電就好了
這樣就可以直接把這塊板子藏在天花板或牆壁中

Arduino

 

他有分為數位輸出輸入和類比輸出輸入
數位的就是只有0跟1 (有或沒有)
類比的話就是可以有程度上的不同 (比方音量調大小、LED亮度調整大小等)
在板子的一邊有13個孔
下面標Digital代表是數位輸出/輸入用
(不過3、5、6、9、10、11還是可以拿來當類比輸出用)

另外0跟1基本上不要去使用它~
所以這邊至少有12個孔可以拿來用
另外GND代表接地

Arduino

 

另一邊則也有類比(Analog)的6個孔

Arduino

 

在一開始板子上是沒有任何程式在裡面的
我們要自己寫進去
而寫程式的介面跟語法跟Processing非常像
其實他就是基於Processing來的
非常高階的程式語言(也就是比較接近人話而不是機器語言、0跟1等等)
所以即便不是資訊科出身的人要學會
也不會太困難

程式介面長這樣:

Arduino

 

他裡面有很多例子可以拿來參考或測試

Arduino

 

然後也與Processing一樣
有Reference可以查他函式的說明

 

Arduino

Arduino

 

而一般玩Arduino
不可或缺的一個配件就是麵包板了
麵包板就是讓人接電線用的
藍的是一整橫排都是同一條電路
紅的也是一整橫排都是同一條電路
中間的則是一直行ABCDE是同一條
FGHIJ也是同一條
可以把它想成:

─────
─────

|||||||||

|||||||||

─────

─────

 

而這要怎麼接就是要看設計者怎麼安排了

Arduino

 

最基本的讓LED亮燈看看
一般而言
從那0~13的孔(程式裡面要寫是哪一個號碼的孔!)
接到正極
而接地的是接到負極

Arduino

 

當然也可以接得更複雜一些
包括電組、LED

Arduino

 

還可以接按鈕
(左下角那顆)

Arduino

 

簡單的李麥克霹靂遊俠燈~
用按鈕可以控制跑的速度

影片:http://www.youtube.com/watch?v=RpUGb_FT7zo

Arduino  

 

以下是程式:


int buttonFast = 2;
int buttonSlow = 7;

int ledNo[] = {3,5,6,9,10,11};
int fadeValue[] = {0,0,0,0,0,0};

int buttonFastState = 0;
int buttonSlowState = 0;
int nowFastPressing = 0;
int nowSlowPressing = 0;

int nowSpeed=100;
int nowNo=1;
int inverse=0;

int i=0;

//Setup-------------------------------------------------------------------------------
void setup() {
  for(i=0;i<6;++i){
    pinMode(ledNo[i], OUTPUT);
  }
  pinMode(buttonFast, INPUT);
  pinMode(buttonSlow, INPUT);
}

//Loop-------------------------------------------------------------------------------
void loop(){
  buttonFastState = digitalRead(buttonFast);
  buttonSlowState = digitalRead(buttonSlow);

  //Faster button
  if (buttonFastState == HIGH) {
    if(nowFastPressing ==0){
      nowFastPressing=1;
      if(nowSpeed>40){
        nowSpeed-=10;
      }
    }
  }
  else {
    if(nowFastPressing==1){
      nowFastPressing=0;
    }
  }
  //Slower button
  if (buttonSlowState == HIGH) {
    if(nowSlowPressing ==0){
      nowSlowPressing=1;
      if(nowSpeed<1000){
        nowSpeed+=10;
      }
    }
  }
  else {
    if(nowSlowPressing==1){
      nowSlowPressing=0;
    }
  }
 
  delay(nowSpeed);
  nowNoSet();
  lightUp();
 
}

void nowNoSet(){
  if(nowNo==0){
    inverse=0;
  }
  if(nowNo==5){
    inverse=1;
  }
 
  if(inverse==0){
    nowNo++;
  }
  else{
    nowNo--;
  }
}

void lightUp(){
  for(i=0;i<6;++i){
    if(i==nowNo){
      fadeValue[i]=240;
      analogWrite(ledNo[i], fadeValue[i]);
    }
    else{
      if(fadeValue[i]>0){
      fadeValue[i]-=40;
      }
      else{
        fadeValue[i]=0;
      }
      analogWrite(ledNo[i], fadeValue[i]);
    }
  }
}

 

arrow
arrow
    全站熱搜

    belleaya (愛) 發表在 痞客邦 留言(8) 人氣()