---
# System prepended metadata

title: Arduino課堂練習

---

# Arduino課堂練習
## LED閃爍實驗
### 一顆LED ch4-1
讓一顆LED發亮
#### 電路圖
![](https://i.imgur.com/8sm8CIy.png)
#### 程式碼
```cpp=
void setup() {
 
  pinMode(LED_BUILTIN, OUTPUT);
}


void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  
  delay(1000);                      
  digitalWrite(LED_BUILTIN, LOW);    
  delay(1000);                      
}

```
### 霹靂燈來回變化
四顆燈泡能輪流發亮
#### 電路圖
![](https://i.imgur.com/70FT90H.png)

#### 程式碼 ch4-3a
```c=
const int led[] = {10,11,12,13};
int i;
int j=0;
int direct=0;




// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  for(i=0;i<4;i++){
     pinMode(led[i], OUTPUT);
  }
  
}

// the loop function runs over and over again forever
void loop() {
  for(i=0;i<4;i++){
    digitalWrite(led[i], LOW);
  }
  digitalWrite(led[j], HIGH);
  delay(200);
  if(direct==0)
  {
    if (j==3)
      direct=1;
    else
    j=j+1;
  }
                      // wait for a second.3
  else
  {
    if(j==0)
    direct=0;

    else
    j=j-1;
  }

} 
```
### 呼吸燈來回變化
四科呼吸燈來回閃爍
#### 程式碼 ch4_5
```c=
const int led[] = {3,5,6,9};
int i;
int j=0;
int direct=0;
int brightness=0;
int lighten = 5;



// the setup function runs once when you press reset or power the board
void setup() {

}

// the loop function runs over and over again forever
void loop() {
  analogWrite(led[i],brightness);

  delay(50);
  if(direct==0)
  {
    if(brightness<=250)
    brightness = brightness+lighten;
    else
    direct =1;
  }
  else
  {
    if(brightness>0)
    brightness = brightness-lighten;
    else
    {
      direct=0;
      i++;
      if(i>=4)
      i=0;
    }
  }
}
```
## 串列埠實驗
### Arduino傳送訊息給電腦
按下按鍵傳送給電腦
#### 操作畫面截圖(Serial Monitor)
![](https://i.imgur.com/0Qvkrch.png)

#### 程式碼 ch6-1
```cpp=
byte val=65;
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  for(int i=0;i<26;i++)
  {
    Serial.write(val+i);
    Serial.print("=");
    Serial.println(val+i);
    delay(1000);
  }
}
```
### Arduino 接收電腦訊息
讓Arduino接收到輸入的訊息

#### 操作畫面截圖和拍照(Serial Monitor)
![](https://i.imgur.com/wqN3M3Q.png)


#### 程式碼
``` cpp=
int num =0;
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  if(Serial.available()>0)
  {
    num=Serial.read();
    Serial.print("received:");
    Serial.println(num,DEC);
  }
}
```
### Arduino傳送LED狀態給電腦
列出目前的LED燈狀態於螢幕上
#### 操作畫面截圖
![](https://i.imgur.com/Mjw0RZk.png)
#### 程式碼
``` cpp=
int led[]={10,11,12,13};
int i,j;
void setup()
{
  Serial.begin(9600);
  for(i=0;i<4;i++)
    pinMode(led[i],OUTPUT);
}
void loop()
{
  for(i=0;i<4;i++)
  {
    digitalWrite(led[i],HIGH);
    Serial.print("LED=");
    for(j=0;j<4;j++)
    {
      if(j==i)
        Serial.print("1");
      else
        Serial.print("0");    
    }
    Serial.println();
    delay(1000);
    digitalWrite(led[i],LOW);
  }
}

```
### 鍵盤控制LED閃爍速度
利用鍵盤輸入數字，控制時間的間隔
#### 操作畫面截圖和拍照(Serial Monitor)
#### 程式碼
``` cpp=
const int led=13;
int key=0,flash=0,keydata=0;
void setup(){
  Serial.begin(9600);
  pinMode(led,OUTPUT);
  digitalWrite(led,LOW);
}
void loop(){
  if(Serial.available()>0)
  {
    key = Serial.read();
    key=key-'0';
    if(key>=0 && key<=9)
        keydata=key;
  }
  if(keydata=0)
    digitalWrite(led,LOW);
  else
  {
    flash=keydata*100;
    digitalWrite(led,HIGH);
    delay(flash);
    digitalWrite(led,LOW);
    delay(flash);
  }
}
```
## 心得感想
經過這次的Arduino課程，我學習到了基本的電路串接，包含led正負極、麵包板、UNO、按壓開關的串接、電阻的運用等，還有學到了命令Arduino的程式語法，如何控制燈泡和要怎麼讓Arduino傳送LED狀態給電腦，及電壓和接地的概念，讓我對電路和Aduino有更進一步的認識。
## 按鈕開關實驗
### 按鈕開關控制一個LED明暗
利用按鈕控制LED明或暗
#### 電路圖
![](https://hackmd.io/_uploads/rkpK7YDH3.png)

#### 操作畫面截圖
![](https://hackmd.io/_uploads/H1VXssxB3.png)

#### 程式碼
```cpp=
const int sw=2;
const int led=13;
const int debounceDelay=20;
int ledStatus=LOW;
int val;

void setup() {
  pinMode(sw, INPUT_PULLUP);
  pinMode(led,OUTPUT);

}

void loop() {
  val=digitalRead(sw);
  if(val==LOW)
  {
      delay(debounceDelay);
      while(digitalRead(sw)==LOW)
          ;
      ledStatus=!ledStatus;
      digitalWrite(led,ledStatus);
    }
}

```
### 按鈕開關控制四個LED方向移位
用按鈕控制燈泡輪流閃爍
#### 電路圖
![](https://hackmd.io/_uploads/B1g7YtvH2.png)

#### 操作畫面截圖
![](https://hackmd.io/_uploads/Sy1sYjxS3.png)

#### 程式碼 ch5-4
```cpp=
const int sw = 2;
const int led[] = {10, 11, 12, 13};
const int debounceDelay = 20;
int val;
int i;
int j = 3;
int direct = 0;

void setup()
{
  pinMode(sw, INPUT_PULLUP);
  for (i = 0; i < 4; i++)
    pinMode(led[i], OUTPUT);
}

void loop()
{
  val = digitalRead(sw);
  if (val == LOW)
  {
    delay(debounceDelay);
    while (digitalRead(sw) == LOW)
      ;
    direct = !direct;
  }

  for (i = 0; i < 4; i++)
    digitalWrite(led[i], LOW);

  if (direct == 0)
  {
    digitalWrite(led[j], HIGH);
    delay(500);
    if (j == 0)
      j = 3;
    else
      j--;
  }
  else
  {
    digitalWrite(led[j], HIGH);
    delay(500);
    if (j == 3)
      j = 0;
    else
      j++;
  }
}

```
## 類比電路實驗
### 電位器調光實驗
利用電位器調整亮度
#### 電路圖
![](https://hackmd.io/_uploads/HyYxrFDH3.png)

#### 操作畫面截圖
![](https://hackmd.io/_uploads/SJz-HFDS3.png)

#### 程式碼 ch８－２
 ```cpp=
const int led=10; 
int val;

void setup ( ) 
{ 
}

void loop ( )
{
  val=analogRead (0);
  val=map (val,0,1023,0,255);
  analogWrite (led, val);
}

```
### 電位器控制燈泡閃爍
利用電位器調整閃爍速度
#### 電路圖
![](https://hackmd.io/_uploads/HyTNSFwS2.png)

#### 操作畫面截圖
![](https://hackmd.io/_uploads/HycSrtwS3.png)

#### 程式碼 ch８－３
```cpp=
const int led = 10;
int val;

void setup() {
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
}

void loop() {
  val = analogRead(0);
  val = map(val, 0, 1023, 1000, 50);
  digitalWrite(led, HIGH);
  delay(val);
  digitalWrite(led, LOW);
  delay(val);
}

```
### 光敏電阻
使用光敏電阻控制燈泡明暗
#### 電路圖
![](https://hackmd.io/_uploads/B1U_IKwrn.png)

#### 操作畫面截圖

![](https://hackmd.io/_uploads/By3y9olBh.png)


#### 程式碼 ch８－５
```cpp=
const int cds = 0;
const int led = 10;
int val;

void setup()
{
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
}

void loop()
{
  val = analogRead(cds);
  if (val > 512)
    digitalWrite(led, HIGH);
  else
    digitalWrite(led, LOW);
}
```
## 心得感想(二)
經過這次的課程我學到了更多Aduino的配件應用，按鈕、光敏電阻及可變電阻讓燈泡的應用更多樣化，包誇閃爍順序和明暗等，使用成功後對Aduino的興趣更深了。希望以後能製作一些小專案。