[아두이노 기초] 전체 글 목록


전시간에 우리는 LCD창에 메시지를 출력해보았습니다. 하지만 정보를 변경하려면 코드를 직접수정해줘야 했죠. 그래서 이번시간에는 sprintf라는 것을 활용하여 변경되는 정보를 LCD창에 출력해보도록 하겠습니다.

그렇다면 sprintf는 무엇일까요?

str이 가리키고 있는 배열에 문자열을 입력하는 것이라고 생각하면 됩니다.

printf를 썻을때는 화면에 문장이 출력되었다면 sprintf는 화면대신 str배열에 문장이 출력되는 것이지요. 이때 주의할점이 있습니다. sprintf는 str배열의 끝에 NULL을 추가하기 때문에 공간의 여유가 필요합니다.

#include <stdio.h>

int sprintf ( char * str, const char * format, ... );

회로구성은 아래 자료를 확인해주세요!

2017/07/31 - [[아두이노]] - 아두이노 기초 9. LCD디스플레이 제어하기


그럼이제 코드를  수정해봅시다. 지난시간에 했던 LCD창에 메시지를 출력하는 코드입니다.

void setup()

{

Serial.begin(9600);

}

 

void loop()

{

Serial.print("$CLEAR\r\n");

Serial.print("$GO 1 4\r\n");

Serial.print("$PRINT Welcome to\r\n");

Serial.print("$GO 2 4\r\n");

Serial.print("$PRINT Sizz blog\r\n");

delay(1000);

}

Serial.print()안에 문자열을 입력하여 출력하고 있습니다. 우리는 Serial.print()를 사용하기전에 문자열에 원하는 내용을 미리 완성 시킬 것입니다. 

예를들어 sprintf(str,"$PRINT Welcome to %d\r\n", number);  이런식으로 문장안에 숫자형 자료를 추가할수 있게 되죠.

int count=0;

char str[40];

void setup()

{


  Serial.begin(9600);


}


void loop()

{

  sprintf(str,"$PRINT COUNT : %d \r\n",count++);//str에 숫자count저장

  Serial.print("$CLEAR\r\n");

  Serial.print("$GO 1 3\r\n");

  Serial.print(str);//str문자열 자체를 출력

  Serial.print("$GO 2 3\r\n");

  Serial.print("$PRINT Sizz blog\r\n");

  delay(1000);

}

count = 0 이라 변수를 선언후 1씩증가시키며 그것을 LCD로 보여주는 코드입니다.

str[40](배열의 크기를 적절히  설정하지 않으면 count가 초기화 될수 있습니다.) 문자열에 COUNT : %d(count)를 저장한뒤 Serial.print(str)로 str문자열 전체를 출력해주고 있죠. 이처럼 sprintf를 할때 LCD 시리얼 관련 코드 ex)$PRINT 를 추가하여 사용하시면 됩니다.


[아두이노 기초] 전체 글 목록


아두이노는 Character LCD를 지원합니다. 시리얼 방식과 패러럴 방식 2가지가 있는데 패러럴 방식의 LCD모니터를 사용할 경우 데이터송신핀 4개, RS(Register Select), R/W(ReadWrite), Enable등의 제어 핀이 추가로 필요하기 때문에 번거로운 점이 있어 우리는 시리얼 방식의 LCD를 사용하도록 하겠습니다.

시리얼 LCD 디스플레이는 데이터 송시에 1개의 데이터  선만 있으면 되고 Serial.print()명령어로 쉽게 문자표시가 가능합니다. 시리얼 LCD 디스플레이 기능을 지원하기 위해서는 시리얼LCD 제품에 시리얼 통신으로 데이터를 수신해서 LCD에 대신디스플레이를 해주는 별도의 마이크로 프로세서가 필요합니다. 우리가 사용할 시리얼 LCD 디스플레이 제품은 이미 이러한 기능이 포함되어 있는 마이크로 프로세서가 장착 되어 있습니다.


1. 시리얼 LCD 디스플레이 제어하기

회로를 보시면 5v전원, gnd를 각각+,-에 연결하여 lcd의 전원을 공급하고 있습니다. 그리고 LCD왼쪽위를 보시면 Rx라는게 보입니다.

Rx는 수신부, Tx는 송신부로 데이터를 주고 받을때 사용합니다. 아두이노에는 0(Rx),1(Tx)번핀이 바로 그것이죠. 그렇다면 아두이노와 lcd가 서로 데이터를 주고받으려면 어떻게 해야할까요? 아두이노에서는 송신을하고 LCD에서는 수신을 해야 합니다. 그렇기때문에 아두이노의 Tx와 LCD의 Rx가 연결되어 있는 것이죠.

코드는 매우 간단합니다.

void setup()

{

Serial.begin(9600);

}

 

void loop()

{

Serial.print("$CLEAR\r\n");

Serial.print("$GO 1 4\r\n");

Serial.print("$PRINT Welcome to\r\n");

Serial.print("$GO 2 4\r\n");

Serial.print("$PRINT Sizz blog\r\n");

delay(1000);

}

LCD디스플레이를 제어하는데에 Serial.print()함수가 사용됩니다. 이때 시리얼창에 출력할때와 다른점이 있는데 문장의 시작에 $를 붙인뒤 하고싶은 명령을 쓰는 것입니다. 그럼 시리얼프린트로 LCD제어하는 명령어를 좀더 자세히 알아 보도록 합시다.

$CLEAR : LCD디스플레이 초기화

$GO x y : LCD디스플레이에 x축 y축 위치로 커서 이동

$PRINT : print 뒤에 오는 문장을 LCD디스플레이에 출력

펌웨어 업로드 후 실행해보면 LCD에 Welcome to Sizz blog가 잘 출력되는걸 볼수 있을 겁니다.


현재는 고정된 문자열만 출력할수 있습니다. 하지만 변화하는 정보를 출력하고 싶을때는 어떻게 해야 할까요? 다음 장에서는 sprintf를 이용하여 변하는 정보를 출력하는 것에 대해 알아보도록 하겠습니다.


[아두이노 기초] 전체 글 목록

2017/07/27 - [분류 전체보기] - [아두이노 기초] 전 과정 목록

이번시간에는 아날로그 입력에 대해서 알아보겠습니다.
아날로그입력은 ADC(Analog Digital Converter)라는 기능으 이용합니다. ADC란 연속적인 신호인 아날로그 신호를 부호화된 디지털신호로 변환하는 장치로 온도,압력,음성,영상신호,전압등을 연속적인 아날로그 신호로 측정하여 그 신호를 컴퓨터로 입력하고 디지털로 변환하는 것입니다.(아날로그->디지털)

아두이노에는 ADC모듈이 자체적으로 달려있으므로 바로 이기능을 사용할수 있습니다. 오늘 배울 것은 ADC를 활용한 함수인 analogRead(pin번호)입니다.


1. 가변저항을 이용하여 LED밝기 조절하기

가변저항은 저항의 값을 임의의 저항값으로변경가능한 저항입니다. 회로구성을 보도록 하죠.

가변저항을 돌리게되면 A0(아날로그 입력핀)에서 저항값을 읽습니다. 그뒤 그저항값에 따라 D9(아날로그 출력)에서 LED로 아날로그 출력을 줘서 LED밝기를 조절하는 구조 입니다.

int sensorPin = A0; // select the input pin for the potentiometer

int led = 9; // the pin that the LED is attached to

 

void setup()

{

pinMode(led, OUTPUT);

Serial.begin(9600);

}

 

void loop()

{

int sensorValue = 0;

 

sensorValue = analogRead(sensorPin);

analogWrite(led, sensorValue);

Serial.println(sensorValue);

 

delay(10);

}

새로운 함수가 나왔습니다. analogRead(pin번호)는 pin번호에 연결된 장치의 값을 읽어 아날로그 값으로 변환후 int값으로 반환해주는 함수입니다. analogRead는 입력된 잔압을(0v~5v) 0~1023까지의 숫자로 변환해 줍니다.

전체 코드의 내용은 analogRead로 받은 가변저항의 값을 전시간에 배웠던 analogWrite함수로 출력한뒤 시리얼로 가변저항의 값을 출력해주는 것입니다. 펌웨어 업로드후 실행하여 보면 가변저항을 돌리는 것에 따라 led의 밝기가 변하는 것을 확인할 수 있습니다.

이것으로 아날로그 읽기, 쓰기에 대해 모두 알아 보았습니다. 다음시간에는 LCD모니터를 활용하는 것에대해 알아 보도록 하겠습니다.

[아두이노 기초] 전체 글 목록

2017/07/27 - [분류 전체보기] - [아두이노 기초] 전 과정 목록

우리는 저번에 디지털입출력을 통해 아두이노가 동작을 할수 있도록 해 보았습니다. 장치를 on 하거나 off 하는일은 세밀한 정보가 필요하지 않았죠. 0이거나 1이거나 둘중하나만 있으면 충분했습니다.

하지만 이런경우는 어떨까요?

단지 led가 켜지고 꺼지는 것이 아니라 led의 밝기를 조절해야 한다면 디지털입출력을 사용해서는 쉽지않을 것입니다.

이럴때 사용해야하는 것이 바로 아날로그 입출력입니다.

그럼 입출력중에서 아날로그 출력에 대해 알아보도록 하겠습니다.

우선 알아야 할것이 아두이노 자체에서 전압을 조절하는 능력은 없습니다. 그렇기 때문에 PWM(Pulse Width Modulation) 펄스폭변조 이란 방법을 사용하는 것이죠.

PWM은 펄스폭을 조절해서 전류를 조정하는 것으로 간단한 무드등을 제어하거나 부저의 음계 제어, 스마트 폰등에서 화면의 밝기를 조정하는 것 등등 많은 곳에서 사용됩니다.


이 그림을 보시면PWM이 어떤 식으로 전류를 조정하는지 알수 있습니다.

5v출력의 on/off반복을 통해서 평균전압을 낮추는 방법입니다. 간단하게 생각해서 100번 동안 5v출력이 100번 = 5v, 100번 동안 5v출력이 50번 = 2.5v가 되는것이죠. 이과정을 빠르게 반복하므로 아날로그 출력이 가능해 지는 것입니다.


아두이노 UNO에서 PWM기능을 가진 핀은 핀번호 앞에 (~)표시가 써져있습니다.  3,5,6,9,10,11번 핀이 PWM핀입니다.

그럼이제 PWM을 이용하여 LED밝기를 조절해보도록 하겠습니다.

1. PWM을 이용한 LED의 밝기 조절

간단한 회로를 구성해 봅시다. 빨간선은 신경쓰지 않으셔도 됩니다.

회로구성후 아래의 코드를 작성하고 실행시켜 보도록 하죠.

int led = 9; // the pin that the LED is attached to

int brightness = 0; // how bright the LED is

int fadeAmount = 5; // how many points to fade the LED by

 

void setup()

{

    pinMode(led, OUTPUT);

}

 

void loop()

{

analogWrite(led, brightness);

brightness = brightness + fadeAmount;

if (brightness == 0 || brightness == 255)

{

    fadeAmount = -fadeAmount ;

}

delay(30);

}

brightness라는 변수를 정해주어 0에서 255가 될때까지는 5씩 brightness값이 증가하고 255가 되면 반대로 5씩 brightness값을 감소시켜 LED가 천천히 켜지고 천천히 꺼지는 동작을 구현 할수 있습니다.

이번에는 펄스(PWM)을 이용하여 부저를 연주해보도록 하겠습니다.

2. 펄스(PWM)으로 부저 연주하기

회로를 보시면 새로운 부품이 보일겁니다. 아날로그회로에서 증폭기 역할을 해주는 npn트랜지스터입니다. 

int speakerPin = 8;

int numTones = 10;

int tones[] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440};

// mid C C# D D# E F F# G G# A

void setup()

{

}

 

void loop()

{

    for (int i = 0; i < numTones; i++)

{

tone(speakerPin, tones[i]);

delay(500);

}

noTone(speakerPin);

delay(1000);

}

 

새로운 함수가 보입니다. tone(pin,frequency)함수입니다.

tone(pin,frequency)는 pin번호에  frequncey값에 맞는 주파수를 출력하여 소리를 내게해주는 함수입니다. 이때 tone(pin,frequency,duration)으로 시간(ms)까지 설정이 가능 합니다. 또한 tone함수는 아두이노3번핀과 11번핀에서는  사용이 불가능 하며 31~65545의 주파수를 재생 가능합니다.

소리를 끄고 싶을때는 notone()함수를 사용하시면 됩니다.

소스코드 설명 : tones배열의 각각의 음계에 맞는 주파수를 저장한뒤 for문을 통해서 해당음계를 하나씩 소리냄


이것을 응용하면 녹음이 가능한 간단한 연주기계를 만드는 것도 가능합니다.

녹음기능 피아노에 대한 내용한 후에 포스팅 하도록 하겠습니다. 

[아두이노 기초] 전체 글 목록


이번시간에는 시리얼통신을 사용하는 방법과 시리얼통신을 활용해 led등의 장치를 조작해보는 일을 해보도록 하겠습니다.

시리얼(RS232) 통신은 무엇인가?

rs232 통신은 주로 ibm 호환 pc에서 쓰이는 시리얼 통신 방법입니다.

예전에는 모뎀연결에 rs232통신을 많이 사용하였으며 최장 1.5m정도로 다소 짧은 통신 거리를 가지고 있습니다.

최근에 나오는 노트북들은 두께,무게를 줄이기 위해서 UART포트를 없애고 있는 추세입니다.

아두이노에서는 기본으로 제공하고 있는 usb포트를 이용해서 UART통신이 가능합니다.

빨간부분이 시리얼통신을 가능하게 해주는 칩입니다.


시리얼 통신 시작하기

1. 우노보드와 pc를 동봉되어있는 usb케이블로 연결합니다.

2. pc에 연결된 usb의 포트번호를 아두이노 ide에서 설정해 줍니다.

3. 아래의 코드를 작성해 줍니다.

void setup()

{

Serial.begin(9600);//시리얼 통신을 보드레이트 9600으로 시작

// Serial.println(“Hellow Arduino”);

}

 

void loop()

{

char read_data;

 

if (Serial.available())//시리얼통신으로 수신된 데이터가 있을때 true

{

read_data = Serial.read();//read_data에 Serial.read()함수로 한글자 불러와 저장

Serial.print(read_data);//read_data를 시리얼로 출력

}

delay(10);

}

설명 : ide의 시리얼통신 창에서 메세지를 입력하면 그메세지가 그대로 ide의 시리얼통신창에 뜨도록 하는 코드입니다.

10ms마다 반복하며 수신된 데이터가 있을때 다시 그데이터를 송신해주는 방식입니다.

4. ide의 시리얼 모니터 실행후 메세지 입력

시리얼 모니터 - 오른쪽위의 돋보기아이콘

5. 시리얼 모니터에 메세지 출력되는지 확인


시리얼 통신으로 LED제어하기

우리는 위에서 시리얼통신이 이상없이 동작하는 것을 확인하였습니다.

그럼 이번에는 시리얼로 아두이노에 명령을 입력했을때 아두이노에서 그 명령에 맞는 동작을 할수 있도록 만들어 보도록 합시다.


1. 회로구성

기본 LED제어 회로와 다른것이 없습니다.

2. 코드 작성

int led1 = 7;

int led2 = 6;

int led1_status = LOW; // LED1 상태

int led2_status = LOW; // LED2 상태

void setup()

{

pinMode(led1, OUTPUT);//핀모드 설정 출력

pinMode(led2, OUTPUT);

digitalWrite(led1, LOW);//핀의 초기값 LOW = LED OFF

digitalWrite(led2, LOW);

Serial.begin(9600);//시리얼 통신 시작

}

void loop()

{

char read_data;

if (Serial.available())

{

read_data = Serial.read();//시리얼통신으로 수신한데이터 read_data에 저장


if( read_data == '1' && led1_status == LOW)//read_data값이 1이고 led1이 off상태일때

{

digitalWrite(led1, HIGH);//led1 on

led1_status = HIGH;

Serial.println("LED1 ON");

}

else if( read_data == '1' && led1_status == HIGH )//led1이 on상태일때

{

digitalWrite(led1, LOW);//led2 on

led1_status = LOW;

Serial.println("LED1 OFF");

}

if( read_data == '2' && led2_status == LOW)

{

digitalWrite(led2, HIGH);

led2_status = HIGH;

Serial.println("LED2 ON");

}

else if( read_data == '2' && led2_status == HIGH )

{

digitalWrite(led2, LOW);

led2_status = LOW;

Serial.println("LED2 OFF");

}

}

delay(10);

}

 


설명 : 시리얼로 메세지를 받아 1일때는 led1에대한 동작을 하고 2일때는 led2에대한 동작을 하도록 하였고 동작정보를 시리얼로 출력하도록 하였다.

이때 led현재상태를 저장하는 변수(led1_status, led2_status)를 만들어 off상태일때는 on하고 on상태일때는 off하도록 설정 하였다.

코드를 업로드 한뒤 시리얼모니터에 1 또는 2를 입력하면 아두이노에 연결된 led가 동작할 것이다.

또한 위와 같이 시리얼로 아두이노가 어떤 동작을 하였는지 출력되는 것을 볼수 있다.


시리얼 통신 복습하기

1. LED를 전 후 좌 우 4방향에 배치 한뒤 숫자키패드의 화살표 키를 이용하여 4개의 LED를 제어하기

위의 코드의 if문만 조금 수정하면 쉽게 성공하실수 있을 것입니다.


오늘은 시리얼 통신에 대해 알아보았습니다. pc와 아두이노 간의 통신이 생각보다 정말 간단하죠.

다음시간에는 아날로그 입출력에 대해 공부해보도록 하겠습니다.


[아두이노 기초] 전체 글 목록

우리는 디지털 입출력방법에 대해 배웠으므로 이번시간에는 부저를 사용하여 소리를 내어보도록 하겠습니다.

그렇다면 부저는 무엇일까요?

부저는 TV, 세탁기, 에어컨 등에서 Alarm음으로 사용되기도 하고 도난 경보기, 디지털 도어 록등에서 사용되는 작은 스피커라고 생각하면 됩니다.


디지털 출력으로 부저 울리기

1초에 한번씩 부저를 켰다 껐다 반복하도록 제작

디지털핀 8번으로 출력을 주어 부저를 동작하게하는 구조입니다.

int buzzer = 8;

void setup()

{

pinMode(buzzer, OUTPUT);

}

 

void loop()

{

digitalWrite(buzzer, HIGH); // Buzzer on

delay(1000);

digitalWrite(buzzer, LOW); // Buzzer off

delay(1000);

}

pinMode로 8번핀을 출력으로 설정하였습니다.

digitalWrite를 사용하여 부저를 on한뒤 1초뒤에 off하는것을 반복합니다.


코드를 업로드한뒤 동작을 확인하여보면 1초에 한번씩 부저가 켜졌다 꺼졌다 하는것을 볼수 있습니다.


실습예제

1. 버튼으로 디지털입력을 받아서 부저를 울리도록 구현

회로구성 - 버튼에 5v연결후 반대쪽을 입력핀으로 연결, 부저는 출력핀에 연결

int buzzer = 8;

int button =9;

void setup()

{

pinMode(buzzer, OUTPUT);

pinMode(button, INPUT);

}

 

void loop()

{

if(digitalRead(button)==HIGH)

digitalWrite(buzzer,HIGH);

else

digitalWrite(buzzer,LOW);

}

2. 버튼으로 디지털입력을 받으면 LED는 켜져있고 부저는 ON/OFF반복 구현 

회로구성 - 버튼에 5v연결후 반대쪽을 입력핀으로 연결, 부저, led는 출력핀에 연결

int led=7;

int buzzer = 8;

int button =9;

int buzzer_count=0;

int buzzer_flag=0;

void setup()

{

pinMode(led, OUTPUT);

pinMode(buzzer, OUTPUT);

pinMode(button, INPUT);

}

 

void loop()

{

if(digitalRead(button)==HIGH)

digitalWrite(led,HIGH);

else

digitalWrite(led,LOW);


if(buzzer_count<200)

{

buzzer_count++;

}

else

{

buzzer_count=0;

if(buzzer_flag==0)

buzzer_flag=1;

else

buzzer_flag=0;

}

if(buzzer_flag)

digitalWrite(buzzer.HIGH);

else

digitalWrite(buzzer,LOW);

}

코드를 꼭 이해하시고 더좋은 방향을 바꾸어 보시길 바랍니다.

다음시간에는 시리얼 통신에 대해 알아보도록 하겠습니다.

[아두이노 기초] 전체 글 목록

이번시간에는 버튼을 이용하여 디지털 입력에대해 알아보도록 하겠습니다.

디지털 출력을 이용하여 LED를 제어할때 우리는 pinMode(포트번호, OUTPUT)를 사용하였죠.

디지털 입력은 그와 반대로 pinMode(포트번호, INPUT)입니다. 

정말 간단 합니다. 출력은 OUTPUT 입력은 INPUT

또한 출력문은 DigitalWrite(포트번호,HIGH/LOW), 입력문은 DigitalRead(포트번호)를 사용한다는 차이점이 있습니다. 자세한 내용은 아래에서 설명하도록 하겠습니다.

하지만 디지털 입력을 실습해보기 전에 전원을 차단하는 방식으로 LED를 제어해보도록 하겠습니다.


버튼을 눌렀을때 LED를 킬수 있도록 회로를 구성해 보도록 합시다.

버튼 2개를 5v전원과 연결하고 각각 LED와 연결되도록 하였습니다.

버튼을 통해서 눌렀을때는 회로가 연결되어 LED에 전원이 들어가고 떼면 회로도 떨어져 LED가 꺼지는 원리 입니다. 아래 그림의 S1, S2가 스위치 입니다. 참고 해주세요.


이렇게 회로를 구성한뒤 스위치를 눌러보면 아두이노에 코딩을 하지 않아도 LED가 켜지는 것을 확인할 수 있습니다. 그럼 이제 디지털입력을 통해 LED를 제어해 보도록 합시다. 아래 회로도를 보시죠.

전과 달라진 점이 있습니다. 5v전원은 아까와 같이 스위치에 연결되어 있습니다.

그런데 노란선(D6, D12)가 보이시나요? 저 2개의 선이 디지털입력을 하기위한  선입니다.

쉽게 생각하면 이런것이죠.(스위치 누른다. -> 디지털 입력으로 신호가 들어간다. -> 아두이노가 입력신호를 받는다. -> 받은 신호에 따라 LED에 연결된 포트로 디지털 출력을 보낸다.)


회로를 다 구성하였으면 소스코드를 추가하여 봅시다.

int led1 = 7;

int led2 = 6;

int key1 = 13;

int key2 = 12;

 

void setup()

{

pinMode(led1, OUTPUT);

pinMode(led2, OUTPUT);

pinMode(key1, INPUT);

pinMode(key2, INPUT);

}

void loop()

{

if( digitalRead(key1) == HIGH )

digitalWrite(led1, HIGH);

else

digitalWrite(led1, LOW);

 

if( digitalRead(key2) == HIGH )

digitalWrite(led2, HIGH);

else

digitalWrite(led2, LOW);

 

delay(100);

}

각각 포트번호를 led1,2 key1,2라는 변수로 선언해주고 

setup()부분에서 입력인지 출력인지를 설정해주었습니다. 출력:OUTPUT 입력:INPUT

if문을 통하여 digitalRead(key1)로 읽은 신호가 HIGH인지 LOW인지 판단을 합니다. HIGH=스위치 누름

스위치가 눌렸다면 digitalWrite를 통해 LED를 켜고 떼면 신호가 LOW로 떨어지면 LED를 끕니다.


다 작성한 후 코드를 업로드하고 동작하여보면 어떻게 된것인지 더 확실히 이해하실수 있을 것입니다.

또한 위의 코드를 조금 수정하여 

디지털 입력(버튼)LED가 주기적으로 ON/OFF 반복하도록 바꾸어 보세요.

여기까지 디지털 입력 버튼으로 LED제어하기를 해보았습니다. 

다음시간에는 부저를 사용해 소리를 내보도록 합시다.


[아두이노 기초] 전체 글 목록

1. 디지털 출력이란?

아두이노에서 출력은 크게 디지털 방식과 아날로그 방식으로 나눌 수 있다.그중 디지털 출력은 마이크로 컨트롤러의 특정 핀의 전압을 HIGH 또는 LOW로 설정하는 것입니다. 


위에 보이는 부분이 디지털 입출력핀 입니다. 총 13개를 사용할수 있습니다.


2. LED 제어하기

아두이노 하드웨어 외부에 브레드보드를 이용해서 LED를 깜박이도록 해보겠습니다.

500msec(0.5) 간격으로 LED 2개가 동시에 켜졌다가 꺼졌다가를 반복하도록 설정해 봅시다.

필요한 부품은 브래드보드 1개, 아두이노 uno, led와 1k옴 저항 2개 입니다.


A. 회로구성하기

회로구성을 아래 그림과 같이 합니다.

회로를 간단히 설명하자면 디지털출력 핀 8, 9번에서 5v출력을 내어주면 저항을 거쳐 led로 들어가 불이켜지게 된후 gnd그라운드로 빠져나가게 되는것입니다. (여기서 적색 5v선은 사용하지 않습니다.)


B. 소스코드 작성하기

int led1 = 8;

int led2 = 9;

 

void setup()

{

pinMode(led1, OUTPUT);

pinMode(led2, OUTPUT);

}

 

void loop()

{

digitalWrite(led1, HIGH);

digitalWrite(led2, HIGH);

 

delay(500);

 

digitalWrite(led1, LOW);

digitalWrite(led2, LOW);

 

delay(500);

}

소스코드에 내용을 하나하나 설명하도록 하겠습니다.

int led1 =8 int led2 = 9 : led가 연결된 디지털 핀의 번호를 설정

void setup() : 반복문에 들어가기전 설정하는 부분

pinMode(led1,OUTPUT) : 해당핀의 모드를 설정합니다. (대문자 주의)

OUTPUT=출력  INPUT=입력

void loop() : 코드가 시작되고 계속해서 반복되는 부분 ex)while(1)

digitalWrite(led1,HIGH) : led1번핀에 HIGH신호를 준다. 5v출력->LED ON

delay(500) : 500ms(0.5초)동안 딜레이를 준다.

digitalWrite(led1,LOW) : led1번핀에 LOW신호를 준다 5v출력 x->LED OFF


코드를 보드에 업로드 하고 동작을 확인해 보면 2개의 LED가 0.5초 간격으로 동시에 켜지고 동시에 꺼지는 것을 확인할 수 있습니다.


C. 여러 예제 직접 시도해보기

이부분이 가장 중요한 부분입니다. 항상 자신이 직접 생각해보는 것이 중요하기 때문에 간단한 소스코드지만 이것을 조금씩 수정해보며 해결해 보시길 바랍니다.

1. 2개의 LED를 서로 번갈아가며 깜빡이게 만들기.

2. LED1은 0.5초 간격 LED2는 0.25초 간격으로 깜빡이게 만들기.

꼭 해보시길 바랍니다! 궁금한 사항이 있으면 댓글로 질문해주세요. 빠른시간안에 답변해드리겠습니다.




[아두이노 기초] 전체 글 목록

통합개발환경(IDE)란?

아두이노 개발을 쉽게 할수 있도록 도와주는 도구로써 관련 라이브러리와 컴파일과 관련된 기계어를 아두이노에 업로드 해주는 스케치 프로그램이다.


다운로드 및 설치방법

통합개발환경(IDE) 다운로드

다운로드를 눌러 사이트로 접속하면 위의 사진과 같이 보일것이다. 그럼 오른쪽에 자신의 컴퓨터에 맞는 버전을 골라 다운로드후 설치하면 된다.

윈도우10를 쓰는 경우는 윈도우 앱스토어에서 아두이노 IDE를 검색하여 설치하여도 간단히 설치할 수 있다.


IDE사용 방법

IDE를 처음 실행시키면 위의 화면이 보입니다.

그럼 차례대로 기능을 알아보도록 합시다.

 컴파일 버튼 : 작성한 코드를 컴퓨터 언어로 컴파일

 업로드 버튼 : 컴파일 후 아두이노로 코드 업로드

시리얼 모니터 : 아두이노와 시리얼 통신을 하여 상태를 읽고 씀

텍스트에디터 : 스케치를 작성하는 부분

콘솔 :  프로그램의 에러나 컴파일 상태를 나타내는 부분


IDE기본 세팅 방법

IDE를 설치 하였으니 처음 아두이노를 연결하는 방법을 알아보도록 하자.

우리는 아두이노 UNO보드를 사용할 것이므로 

툴-보드매니저-Arduino/Genuino UNO를 선택해준다.


선택을 완료했으면 아두이노와 IDE를 연결할 포트를 설정해 주자.

툴-포트-COM번호(Arduino/Genuino Uno) 


이렇게 해주면 기본 세팅이 완료된다.

다음시간에는 간단한 LED를 키고 끌수 있는 것을 직접 코딩해보도록 하자.


+ Recent posts