Back Ground

아두이노 - Fritzing사용하기 본문

아두이노

아두이노 - Fritzing사용하기

Back 2016. 6. 21. 11:07

1. fritzing 사용하기 (http://fritzing.org/home/)


브레드 보드에 아두이노 보드와 저항, LED, 스위치 등의 여러 가지 부품을 모의 구성해 볼 수 있도록 하여 주며, 회로도나 PCB 제작을 쉽게 할 수 있도록 도와 주는 프로그램






2. fritzing을 사용하여 저항과 스위치 구성하기




3. 디지털입출력 핀 10번의 입력제어


디지털입출력 핀 10번 : 스위치 연결

스위치가 눌려지면 HIGH가 입력되고, 떨어지면 LOW가 입력

디지털입출력 핀 8번 : LED를 연결

스위치가 입력되면 LED가 켜지도록 제어

입출력 설정

setup( )함수 안에서 pinMode( )함수를 이용

디지털입출력 핀 8번은 출력으로 설정

디지털입출력 핀 10번은 입력으로 설정



아두이노 보드의 디지털입출력 핀은 디지털 출력에 사용하였던 핀을 모두 입력으로 사용 가능

if-else문 사용

버튼 스위치가 눌려지면, LED가 연결되어 있는 10번 핀에 "HIGH"를 출력하고, 그렇지 않으면 "LOW"를 출력하여 LED를 OFF




스케치

int pin_led=8;

int pin_sw=10;

정수형 변수 pin_led와 pin_sw에 각각

디지털입출력 핀 8번과 10번을 지정

void setup() {

    pinMode(pin_led,  OUTPUT);

    pinMode(pin_sw,  INPUT);

}

디지털입출력 핀 8번(pin_led)을 출력으로 설정

디지털입출력 핀 10번(pin_sw)을 입력으로 설정

void loop() {


int sw_in=digitalRead(pin_sw);

핀 10번(pin_sw)으로부터 값을 읽어 sw_in저장

   if(sw_in==1) {

      digitalWrite(pin_led,  HIGH);

    }

   else digitalWrite(pin_led,  LOW);

digital_in가 “1”이면, LEDon

digital_in가 “1”이 아니면, LEDoff

}



4. 4개의 스위치와 LED를 이용한 입출력제어


디지털입출력 핀 8개에 4개씩 스위치와 LED를 연결

-디지털입출력 핀 9~12번 : 스위치 연결

-디지털입출력 핀 4~7번 : LED 연결

-스위치가 눌려지면 각 스위치에 지정된 LED가 on되도록 제어

-if-else문 사용




배열 이용

버튼 스위치 연결된 디지털입출력 핀 4개 : 배열 pin_SW[ ]

LED 연결된 디지털입출력 핀 4개 : 배열 pin_LED[ ]



스케치 코드

int pin_LED[ ]= {4, 5, 6, 7};

int pin_SW[ ]= {9, 10, 11 ,12};

int val;

int i ;

배열 pin_LED : 디지털입출력 핀 4, 5, 6, 7번

배열 pin_SW : 디지털입출력 핀 9,10,11,12번

스위치 입력을 받기 위한 변수

for문을 위한 변수

void  setup() {

    for(i=0;  i<4;  i++) {

         pinMode(pin_LED[i],  OUTPUT);

         pinMode(pin_SW[i],  INPUT);

     }

}

핀 4, 5, 6, 7번을 출력모드 지정

핀 9, 10, 11, 12번을 입력모드 지정

void loop() {

    for(i=0; i<4; i++) {

         val=digitalRead(pin_SW[i]);

         if(val==1) {

            digitalWrite(pin_LED[i], HIGH);

          }

         else {

             digitalWrite(pin_LED[i], LOW);

         }

   }

}

① sw1(D9)가 눌려지면 LED1(D4)HIGH출력

    나머지 LED2, LED3, LED4LOW출력

sw2(D10)가 눌려지면 LED2(D5)HIGH출력

     나머지 LED1, LED3, LED4LOW출력

sw3(D11)가 눌려지면 LED3(D6)HIGH출력

     나머지 LED1, LED2, LED4LOW출력

sw4(D12)가 눌려지면 LED4(D7)HIGH출력

    나머지 LED1, LED2, LED3LOW출력



5. 4개의 기능스위치에 의한 LED제어

디지털입출력 핀 8개에 4개씩 스위치와 LED를 연결하고, -스위치가 눌려지면 각 스위치에 다음과 같이 지정된 -LED 동작이 되도록 제어




if-else문 사용

버튼 스위치가 연결되어 있는 배열 pin_SW[0]에서부터 순차적으로 스위치가 눌려져 입력이 발생하였는지 검사

눌려졌으면 해당하는 기능 수행




스케치



intpin_LED[]= {4, 5, 6, 7};

intpin_SW[]= {9, 10, 11 ,12};

intval;

inti;

배열 pin_LED : 디지털입출력 핀 4, 5, 6, 7번

배열 pin_SW : 디지털입출력 핀 9,10,11,12번

스위치 입력을 받기 위한 변수

for문을 위한 변수

void setup() {

    for(i=0; i<4; i++) {

         pinMode(pin_LED[i], OUTPUT);

         pinMode(pin_SW[i], INPUT);

     }

}

핀 4, 5, 6, 7번을 출력모드 지정

핀 9, 10, 11, 12번을 입력모드 지정

void loop() {

loop()의 시작

    if(digitalRead(pin_SW[0])==1){

       for(i=0; i<4; i++) {

            digitalWrite(pin_LED[i], HIGH);

       }

    }

sw1(D9)가 눌려지면

4개의 LED가 동시에 on

    else if(digitalRead(pin_SW[1])==1){

         for(i=0; i<4; i++) {

              digitalWrite(pin_LED[i], HIGH);

         }

         delay(1000);

         for(i=0; i<4; i++) {

              digitalWrite(pin_LED[i], HIGH);

         }

         delay(1000);

}

sw2(D10)가 눌려지면

4개의 LED가 동시에 on/off

    else if(digitalRead(pin_SW[2])==1){

         for(i=0; i<4; i++) {

              digitalWrite(pin_LED[i], HIGH);

              delay(1000);

         }

      }

sw3(D11)가 눌려지면

4개의 LED가 오른쪽에서 왼쪽으로

순차적으로 on

     else if(digitalRead(pin_SW[3])==1){

          for(i=0; i<4; i++) {

              digitalWrite(pin_LED[3-i], HIGH);

              delay(1000);

           }

      }

sw4(D12)가 눌려지면

4개의 LED가 왼쪽에서 오른쪽으로

순차적으로 on

     else {

          for(i=0; i<4; i++) {

               digitalWrite(pin_LED[i], LOW);

          }

     }

스위치가 눌려지지 않으면 모든 LED off

}

loop()의 끝

5-1. switch-case문을 이용한 디지털 제어

if-else문 대신 case문 사용

○ digitalRead()와 bitWrite()함수를 이용하여, switch( )를 위한 case 번호 생성

○ bitWrite(select, i, val)

변수 select의 i번째의 비트에 val의 값 "1"을 설정하는 함수

bitWrite(select, 3, "1") 실행 예(변수 select의 초기 값 “0”),





○ 스위치 배열 pin_SW[]= {SW0, SW1, SW2, SW3 }이면, 선택되는 select값




스케치


intpin_LED[]= {4, 5, 6, 7};

intpin_SW[]= {9, 10, 11 ,12};

inti, j, sw=0;

boolean select, val;

배열 pin_LED: 디지털입출력 4, 5, 6, 7번

배열 pin_SW: 디지털입출력 9,10,11,12번

void setup() {

    for(i=0; i<4; i++) {

        pinMode(pin_LED[i], OUTPUT);

        pinMode(pin_SW[i], INPUT);

    }

}

setup문

핀 4, 5, 6, 7번을 출력모드 지정

핀 9, 10, 11, 12번을 입력모드 지정

void loop() {

loop( ) 시작

    for(i=0; i<4; i++) {

        val=digitalRead(pin_SW[i]);

         bitWrite(select, i, val);

     }

switch( )를 위한 case 번호 생성

    switch(select) {

switch(sw) 시작

    case 1:

          for(i=0; i<4; i++) {

               digitalWrite(pin_LED[i], HIGH);

           }

     break;

sw1(D9)가 눌려지면

4개의 LED가 동시에 on

     case 2:

          for(j=0; j<4; j++) {

              for(i=0; i<4; i++) {

                  digitalWrite(pin_LED[i], HIGH);

              }

             delay(200);

             for(i=0; i<4; i++) {

                 digitalWrite(pin_LED[i], LOW);

             }

            delay(200);

        }

    break;

sw2(D10)가 눌려지면

4개의 LED가 동시에 4번 on/off

   case 4:

        for(i=0; i<4; i++) {

             digitalWrite(pin_LED[i], HIGH);

             delay(500);

         }

    break;

sw3(D11)가 눌려지면

4개의 LED가 왼쪽에서 오른쪽으로

순차적으로 on

    case 8:

         for(i=0; i<4; i++) {

              digitalWrite(pin_LED[3-i], HIGH);

              delay(500);

          }

     break;

sw4(D12)가 눌려지면

4개의 LED가 오른쪽에서 왼쪽으로

순차적으로 on

    default:

         for(i=0; i<4; i++) {

              digitalWrite(pin_LED[i], LOW);

         }

     break;

스위치가 눌려지지 않으면 모든 LED off

   }

switch(select)

}

loop( )




함수정리






'아두이노' 카테고리의 다른 글

아두이노 - 아날로그제어  (1) 2016.06.21
아두이노 - 시리얼통신  (0) 2016.06.21
아두이노 - LED깜빡이기  (0) 2016.06.21
아두이노 - 개발환경설치  (0) 2016.06.21
아두이노 란?  (0) 2016.06.21
Comments