2015년 9월 12일 토요일

아두이노 Blink


아두이노IDE에서는 많은 예제프로그램이 포함되어 있습니다.

BLINK를 해보기로 합니다.

메뉴에서

파일-->예제-->01.Basics-->Blink를 선택합니다.




선택하면 다음과 같은 소스가 새로운 창에서 보입니다.


/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
  Most Arduinos have an on-board LED you can control. On the Uno and
  Leonardo, it is attached to digital pin 13. If you're unsure what
  pin the on-board LED is connected to on your Arduino model, check
  the documentation at http://www.arduino.cc
  This example code is in the public domain.
  modified 8 May 2014
  by Scott Fitzgerald
 */

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}


C언어입니다.

미리 알아두어야 할 것만 간단히 설명하겠습니다.

주석 : 모든 프로그래밍 언어들이 주석문을 가지는데 C,C++,C#에서는 동일합니다.

기타 다른 언어들은 잘모릅니다...

위 예제이서는 주석문이 2가지가 있습니다.

1. /* ~ */ 형태

   /*
      주석내용들은 여러줄에 걸쳐
       기술 가능합니다.
        1
        2
    */
2.  // 의 형태
    //주석은 1라인으로 사용합니다.
    code...... ; //주석의 형태로 코드 뒤에도 사용가능합니다.

그래서 위의 예제에서는 /* ~ */ 와 //이외의 내용

setup 과 loop만 아두이노를 컨트롤하는 코드입니다.

setup과 loop는 아두이노에서 반드시 들어가야 하는 필수입니다.

이 둘중 하나라도 없으면 오류가 납니다.

실행을 하면

다음과 같이  13번 LED가 깜박이게 됩니다.


초록불이 꺼진 상태
초록불이 켜진상태

빨간색LED는 전원이 들어가가면 항상켜지는 녀석입니다.....



이제 위의 코드를 설명하겠습니다.

void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

위 코드를 주석문을 빼고 한줄로 바꾸면 다음과 같습니다.

void setup(){pinMode(13,OUTPUT);}

c언어에서 void는 반환값이 없다는 뜻입니다.

c언어에서 모든 처리를 함수에서 실행하는데

setup도 함수 입니다.

이 seup은 아무것도 반환하지 않는다는 말입니다.
(잘 모르겠으면 그러려니 하고 지나서 나중에 보면 알 수 있을겁니다....)

setup합수는 아두이노보드의 초기화를 하는 함수입니다.

여기서는 13번 pin을 output으로 초기화하였네요...(주석문에 그런 내용들을 기재합니다.)

pinMode도 함수입니다.(아두이노 내부함수ㅒ

OUYPUT은 아두이노에서 정의한 상수입니다. 아마 0,1,2과 같은 것들일 것입니다.

13은 디지탈핀번호입니다.


 // the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

이제 loop함수입니다.

loop함수는 setup함수에서 초기화한 후 전원이 들어있는 동안 무한 반복합니다.

  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
 digitalWrite함수는 13번 에 HIGH 또는 LOW를 설정하는 것 처럼
                                원하는 pin에  전원을 컨트롤합니다.

   delay(1000);              // wait for a second
   delay함수는 밀리세컨드 만큼 아무일도 안하는 일을 합니다.
   아두이노보드 또는 각종 센서들은 아무일도 안하는 일이 상당히 중요합니다.

즉, loop함수는 13번에 HIGH전원을 넣고 1초
                          13번에 LOW전원을 넣고 1초
만 합니다.

이제 코드를 아두이노로 업로드하여야 합니다.



오른쪽 화살표 아이콘을 누르면 코드를 컴파일하고

보드로 명령을 업로드 합니다.

그러면 즉시 실행됩니다.


p.s.

아두이노는 모든것이 오픈소스입니다.

아두이노 우노 보드 또한 오픈소스라 변종(?)보드가 상당히 많습니다.

여기 사용한 보드는 DCcduino uno입니다.

알리익스프레스로 주문한지 한달만에 받은 것입니다.

정품(오리지날제품)보다 상당히 저렴한 편이라 배송시간을 감당할 자신이 있다면

물건너 멀리 대륙제품을 써볼만 합니다.



댓글 없음:

댓글 쓰기

vsftpd FTP 서버 접속은 성공하였으나, "디렉토리 목록 조회 실패" 현상 발생시

FTP Passive 모드를 활성화 필요. 1. vsftpd 설정 변경 /etc/vsftpd/vsftpd.conf 상에 아래 내용 추가 기입 #passive modpasv_enable=YES pasv_min_port=5001 pasv...