[아두이노] 아두이노 버튼 선풍기 만들기2 - 블록코드 이해하기

[아두이노 버튼 선풍기 만들기 - mblock 과 arduino]

아두이노 버튼 선풍기 만들기2



아두이노 선풍기 만들기 두번째 포스팅입니다.

- 저번 포스팅에서는 팬모듈을 아두이노에 연결하고 프로그램을 업로드하여 프로펠러가 제대로 돌아가는지 테스트 해보았습니다.

- HIGH 와 LOW 신호를 입력받아 팬모듈의 방향을 바꿔 돌리며 아두이노에서 입출력이 제대로 전달되는지에 대하여 기본적인 사항을 예제로 확인해 보았습니다. 


[복습] 팬모듈을 2초간 돌렸다가 2초간 멈추는 것을 반복하게 코드를 작성해 볼까요?

밑줄에 들어갈 코드를 작성해 보세요.

  

void             ( ){

    pinMode (9,               );      

                 (8, OUTPUT);

}


void            ( ){    

                    (9,              ); 

    digitalWrite (8, LOW);

    delay (            );  

     }


아두이노 프로그램의 기본 구조는 setup()과 loop()로 이루어져 있습니다. 그리고 setup()의 pinMode에서 아두이노핀의 입출력을 설정해줍니다. 프로펠러의 돌아가는 방향 신호를 보내기 위해 위해 8,9번 핀을 OUTPUT으로 설정해 놓습니다. 아래의 void loop( )에서는 반복되는 동작을 넣어줍니다. 2초 간격으로 계속 돌아갈 것이기 때문에, 9번 핀에 HIGH 신호를 digitalWrite로 보내고 방향과 출력신호를 전달합니다. 그리고 delay 신호로 2초 단위로 멈춰줍니다. delay(1000)이 '1초 지연'이므로 2초 간격으로 돌아가게 하려면  delay(2000)으로 하면 됩니다. 


풀이) 

void setup(){

    pinMode(9,OUTPUT);      

    pinMode(8,OUTPUT);

}


void loop(){    

    digitalWrite(9,HIGH); // 9번 핀에 High 신호를 보내면 팬모터의 INB와 연결되어 있기 때문에 B방향으로 회전함

    digitalWrite(8,LOW);

    delay(2000);  // 2초 Delay

     }




이제 아두이노 코드가 어려운 분들을 위해, mBlock을 이용해 블록코드로 작성해 봅시다. 이 블록코드를 아두이노 코드로 변환하여 아두이노 보드에 업로드 할 것입니다.


mBlock의 특징을 살펴보면,


mBlock은 스크래치 2.0을 기반으로 만들어진 블록형 프로그래밍 언어입니다. 따라서 스크래치와 프로그램 공유가 가능하며, 스크래치보다 더 나은 확장 기능을 가지고 있습니다. C나 파이썬으로 컴퓨터를 제어할 수 있으며, 아두이노를 기반으로 한 프로그램 작성이 가능합니다.

 

mBlock은 구글에서 검색해서 설치하면 스크래치와 같은 화면이 뜨기 때문에, 사용하는데 낯설거나 하지는 않을 것 같습니다. 스크래치는 기본 캐릭터(스프라이트)가 '고양이'이고,  mBlock은 중국에서 만들어서 '팬더'가 기본 캐릭터(스프라이트)로 나옵니다. 사용해 보시면 아시겠지만, 나머지는 거의 같다고 보시면 됩니다. 여기에서는 스크래치에는 없는 블록코드를 아두이노 코드로 직접 변환해주는 기능이 있어서, 어린 학생들도 블록코드를 이용해서 아두이노를 활용할 수 있습니다. 블록코드의 전체적인 구조가 아두이노 프로그램을 이해하는데 많은 도움을 줄 수 있어서 mBlock을 활용하도록 하겠습니다.



1) mBlock 블록코드 이해하기


 


위와 같은 블럭코드가 의미하는 것은,


void setup()   

    pinMode(9,OUTPUT);  // 8,9번 핀을 출력핀으로 설정

    pinMode(8,OUTPUT);

}


void loop(){    

    digitalWrite(9,HIGH); // 9번 핀에 High 신호를 보내면 팬모터의 INB와 연결되어 있기 때문에 B방향으로 회전함

    digitalWrite(8,LOW); 

}


과 같습니다. 


'디지털 9번 핀에 켜짐 보내기' 라는 블록 코드는 pinMode(9,OUTPUT); 과 digitalWrite(9,HIGH); 를 한번에 표현한 것과 같습니다. 그리고 '무한 반복하기는 void loop()와 같은 의미입니다. 따라서 위의 코드를 mblock에서 아두이노로 업로드 하면 프로펠러 선풍기가 한방향으로 계속 돌아가게 됩니다.



2) 아래 mBlock 명령어 블록을 보고 아두이노 코드의 빈칸을 채워 보시기 바랍니다.



void setup(){

    pinMode(9,            );      

                (8,OUTPUT);

}


void loop(){    

                   (9,              

    digitalWrite(8,              );

                              


    digitalWrite(9,LOW); 

                   (8,          );

    delay(1000);    

 }




풀이)

void setup(){

    pinMode(9,OUTPUT);      

    pinMode(8,OUTPUT);

}


void loop(){    

    digitalWrite(9,HIGH); // 9번 핀에 High 신호를 보내면 팬모터의 INB와 연결되어 있기 때문에 B방향으로 회전함

    digitalWrite(8,LOW);

    delay(1000);  // 1초 Delay 후


    digitalWrite(9,LOW); 

    digitalWrite(8,HIGH); // 8번 핀에 High 신호를 보내면 팬모터의 INA 연결되어 있기 때문에 A방향으로 회전함

    delay(1000);    

 }



'1초 기다리기'는  delay(1000);  입니다. 따라서 선풍기(프로펠러)가 1초 간격으로 방향을 바꾸며 회전을 하는 동작입니다. 아두이노의 setup()에서 핀모드를 설정하는데 mBlock에서는 '디지털 9번핀에'라는 명령어에 이미 setup이 설정되어 들어갑니다. '켜짐'보내기라고 하는 것은 'digitalWrite'와 'HIGH'로 정의되어 사용됩니다. 무한반복하기 블록은 계속되는 동작을 나타내는 것으로 아두이노의 loop()와 같은 의미를 가진 블록입니다. 


- mBlock코드와 아두이노 코드를 비교해 보았습니다 -



이 글을 공유하기

댓글

Designed by JB FACTORY