RedCrow + GreenBean

Feed Rss

ICbanQ] 31기 블루이노2 기본 활용기 #기본예제

11.30.2015, arduino, 취미, 취미, by .

지난 시간에 이어 기본 예제를 진행해보았습니다.
사실 메뉴얼에 잘 나와 있으니 그냥 소스(직접입력하였습니다.)와 사진 정도 입니다.

기본 예제는 총 9가지 입니다.
간단하면서도 기본적인 내용을 거의 다 담고 있습니다.

▶ 프로젝트1
목표 : Digital Out 이해
내용 : LED 켜기

voidsetup()
{
pinMode(2, OUTPUT);
}

voidloop()
{
digitalWrite(2,HIGH);
delay(1000);
digitalWrite(2,LOW);
delay(1000);
}

설정
2번핀을 output으로 설정한다.

반복
2번핀을 HIGH로 한다.(LED ON)
1초 쉰다.(LED ON 상태)
2번핀을 LOW로 한다.(LED OFF)
1초 쉰다.(LED OFF 상태)

LED와 전원 부분 연결 상태에 따라서 HIGH일때 LED가 ON이 될 수 있고 LOW일떄 LED가 ON이 될 수 있다.

▶ 프로젝트2
목표 : Digital In and DIgital Out 이해
내용 : 푸시 버튼입력으로 LED 켜기


intLED=2;
intbutton=3;
int buttonState=0;

voidsetup()
{
pinMode(LED, OUTPUT);
pinMode(button, INPUT);
}

voidloop()
{
buttonState=digitalRead(button);
if (buttonState==HIGH)
{
digitalWrite(LED,HIGH);
}
else
{
digitalWrite(LED,LOW);
}
}

설정
LED(2번핀)를 output으로 설정한다.
button(3번핀)을 input으로 설정한다.

반복
button의 상태(buttonState)를 읽어들인다.
buttonState가 HIGH이면
LED를 ON한다.
buttonState가 LOW이면
LED를 OFF한다.

버튼을 누르면 LED에 불이 들어오고 버튼을 떼면 LED에 불이 꺼진다.

▶ 프로젝트3
목표 : Analog Out (주파수) 이해
내용 : 간단한 소리 만들기


int speakerPin=2;
intbutton=3;
int buttonState=0;

voidsetup()
{
pinMode(speakerPin, OUTPUT);
pinMode(button, INPUT);
}

voidloop()
{
buttonState=digitalRead(button);
if (buttonState==HIGH)
{
tone(speakerPin, 2000, 1000);
delay(2000);
}
else
{
noTone(speakerPin);
}
}

설정
speakerPin(2번핀)를 output으로 설정한다.
button(3번핀)을 input으로 설정한다.

반복
button의 상태(buttonState)를 읽어들인다.
buttonState가 HIGH이면
speakerPin으로 2kHz의 음을 1초 동안 출력한다.
2초를 기다린다.
buttonState가 LOW이면
speakerPin으로 출력을 없앱니다.

▶ 프로젝트4
목표 : Analog Out (PWM) 이해
내용 : 푸시 버튼 입력에 의한 LED 밝기 바꾸기


intbutton=3;
intR_LED=4;
intG_LED=5;
intB_LED=6;
int buttonState=0;

voidsetup()
{
pinMode(R_LED, OUTPUT);
pinMode(G_LED, OUTPUT);
pinMode(B_LED, OUTPUT);
pinMode(button, INPUT);
}

voidloop()
{
buttonState=digitalRead(button);
if (buttonState==HIGH)
{
analogWrite(R_LED, 255);
delay(500);

analogWrite(R_LED, 123);
delay(500);

analogWrite(R_LED, 0);
delay(500);

analogWrite(G_LED, 255);
delay(500);

analogWrite(G_LED, 123);
delay(500);

analogWrite(G_LED, 0);
delay(500);

analogWrite(B_LED, 255);
delay(500);

analogWrite(B_LED, 123);
delay(500);

analogWrite(B_LED, 0);
delay(500);
}
}

설정
R/G/B_LED를 각각 output으로 설정한다.
button(3번핀)을 input으로 설정한다.

반복
button의 상태(buttonState)를 읽어들인다.
buttonState가 HIGH이면
R_LED를 최대 밝기로 한다.
0.5초 쉰다.(LED 상태 유지)
R_LED를 절반 밝기로 한다.
0.5초 쉰다.(LED 상태 유지)
R_LED를 끈다.
0.5초 쉰다.(LED 상태 유지)

G_LED를 최대 밝기로 한다.
0.5초 쉰다.(LED 상태 유지)
G_LED를 절반 밝기로 한다.
0.5초 쉰다.(LED 상태 유지)
G_LED를 끈다.
0.5초 쉰다.(LED 상태 유지)

B_LED를 최대 밝기로 한다.
0.5초 쉰다.(LED 상태 유지)
B_LED를 절반 밝기로 한다.
0.5초 쉰다.(LED 상태 유지)
B_LED를 끈다.
0.5초 쉰다.(LED 상태 유지)

버튼을 누르면 0.5초간 Red LED를 최대 밝기로 하고 0.5초간 절반 밝기 0.5초가 끈다.
그리고 계속해서 0.5초가 Green LED를 최대 밝기로 하고 0.5초간 절반 밝기 0.5초가 끈다.
그리고 계속해서 0.5초가 Blue LED를 최대 밝기로 하고 0.5초간 절반 밝기 0.5초가 끈다.
다음 버튼 입력이 있을때까지 계속해서 기다린다.

▶ 프로젝트5
목표 : Analog In and Analog Out 이해
내용 : 주변 밝기 변화에 따른 LED 제어하기


intCDS=2;
intB_LED=3;
intG_LED=4;
intY_LED=5;
intR_LED=6;
int sensorValue=0;

voidsetup()
{
pinMode(CDS, INPUT);
pinMode(B_LED, OUTPUT);
pinMode(G_LED, OUTPUT);
pinMode(Y_LED, OUTPUT);
pinMode(R_LED, OUTPUT);
}

voidloop()
{
sensorValue=analogRead(CDS);

if ( (sensorValue >= 100) && (sensorValue <200) ) { digitalWrite(B_LED,HIGH); digitalWrite(G_LED,LOW); digitalWrite(Y_LED,LOW); digitalWrite(R_LED,LOW); } else if ( (sensorValue >= 200) && (sensorValue <400) ) { digitalWrite(B_LED,LOW); digitalWrite(G_LED,HIGH); digitalWrite(Y_LED,LOW); digitalWrite(R_LED,LOW); } else if ( (sensorValue >= 400) && (sensorValue <550) ) { digitalWrite(B_LED,LOW); digitalWrite(G_LED,LOW); digitalWrite(Y_LED,HIGH); digitalWrite(R_LED,LOW); } else if ( (sensorValue >= 600) )
{
digitalWrite(B_LED,LOW);
digitalWrite(G_LED,LOW);
digitalWrite(Y_LED,LOW);
digitalWrite(R_LED,HIGH);
}
}

설정
R/G/B/Y_LED를 각각 output으로 설정한다.
CDS(2번핀)을 input으로 설정한다.

반복
아날로그 값으로 CDS를 읽어들인다.

해당 값이 100보다 크거나 같고 200보다 작으면
Blue LED On
해당 값이 200보다 크거나 같고 400보다 작으면
Green LED On
해당 값이 400보다 크거나 같고 550보다 작으면
Yellow LED On
해당값이 600보다 크거나 같으면
Red LED On

▶ 프로젝트6
목표 : Analog In and Analog Out 이해
내용 : 가변 저항으로 서보 모터 각도 제어하기


#include <Servo.h>
int Potent=3;

Servo s1;
int sensorValue=0;

void setup() {
s1.attach(2);
pinMode(Potent, INPUT);
}

void loop() {
sensorValue=analogRead(Potent);

s1.write(map(sensorValue, 0, 1023, 0, 179));
delay(200);
}

Servo를 사용하겠다고 관련 라이브러리를 불러온다.

설정
Potent(3번핀)을 input으로 설정한다.

반복
아날로그 값으로 Pontent를 읽어들인다.

Pontent에서 0~1023사이의 값을 받아와서 0~179사이의 값으로 변환해서 서보를 동작시킨다.
0.2초 쉰다.

가변저항을 돌리면 그것에 맞추어 서보 모터의 각도가 변한다.

나는 1.5.8 Beta를 무설치 버전으로 사용을 하고 있다.
헌데 이런…
본 프로젝트인 서보모터가 컴파일 에러가 나는 것이다.

Server.h가 없다.
이런…
우선 아래의 사이틀 접속해보자.
https://gist.github.com/bowserthewizard/6776dcefd79efac13b2f
오른쪽 아래에(혹은 다른 곳이더라도…) Download ZIP를 클릭해서 해당 파일을 다운 받자.

아두이노 설치디렉토리 아래에 libraries 가 있고 그 아래 Servo가 있을 것이다.
문제는 그 안에 Servo.h가 없다. (내것만 없나?)

아까 다운 받은 Zip파일 안에서 servo.h 파일만 여기다 넣어 주고
아두이노를 다시 시작해보자.

짜잔~
이제는 컴파일 된다.

▶ 프로젝트7
목표 : Analog In and Analog Out 이해
내용 : 가변 저항으로 DC 모터 속도 제어하기



intEnable=4;
intIn1=3;
intIn2=2;
intPotent=6;

int sensorValue=0;

voidsetup()
{
pinMode(Enable, OUTPUT);
pinMode(In1, OUTPUT);
pinMode(In2, OUTPUT);
pinMode(Potent, INPUT);
}

voidloop()
{
sensorValue=analogRead(Potent);
int speed=map(sensorValue, 0, 1023, 50, 255);

analogWrite(Enable, speed);
digitalWrite(In1,HIGH);
digitalWrite(In2,LOW);
}

설정
Potent(3번핀)을 input으로 설정한다.
In1/In2/Enable을 output으로 설정한다.

반복
아날로그 값으로 Pontent를 읽어들인다.

Pontent에서 0~1023사이의 값을 받아와서 50~255사이의 값으로 변환해서 speed에 저장한다.
해당 speed로 순방향으로 DC모터를 회전시킨다.

가변저항을 돌리면 그것에 맞추어 DC 모터의 속도가 변한다.

▶ 프로젝트8
목표 : Analog In to Serial Monitor 이해
내용 : 온도 값을 PC모니터에 표시하기.



const int temperaturePin=2;

voidsetup()
{
pinMode(temperaturePin,INPUT);
Serial.begin(9600);
}

voidloop()
{
int reading=analogRead(temperaturePin);
Serial.print((3.0*reading*100.0)/1024.0);
Serial.println(“C”);
delay(1000);
}

설정
temperaturePin(2번핀)을 input으로 설정한다.
Serial을 9600속도로 시작한다.

반복
아날로그 값으로 temperaturePin을 읽어들인다.

reading값에 3.0 * 100.0 / 1024.0 을 곱해서 온도값으로 변화시켜서 Serial로 출력한다.
시리얼로 “C”를 보내다.
1초 쉰다.

1초마다 아날로그로 온도값을 읽어들여서 ℃로 변환해서 출력하고 “C”를 출력하고 개행을 한다.

▶ 프로젝트9
목표 : LCD 동작원리 이해
내용 : LCD에 문자 표시하기

#include <LiquidCrystal.h>

LiquidCrystal lcd(1,2,3,4,5,6);

voidsetup()
{
}

voidloop()
{
lcd.setCursor(0,1);
lcd.begin(16,2);
lcd.clear();
lcd.print(“Hello Blueinno!”);
delay(1000);
lcd.clear();
delay(1000);
}

LiquidCrystal을 사용하겠다고 관련 라이브러리를 불러온다.

설정

반복
LCD의 커서를 0,1로 옮긴다.
LCD를 가로 16, 세로 2로 시작한다.
LCD 출력을 모두 지운다.
Hello Blueinno!를 출력한다.
1초 쉰다.
LCD 출력을 모두 지운다.
1초 쉰다.

Hello Blueinno!가 1초 단위로 깜빡이게 된다.

소스를 조금 수정 해보았다.

#include <LiquidCrystal.h>
LiquidCrystal lcd(1,2,3,4,5,6);

voidsetup()
{
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,1);
}

voidloop()
{
lcd.print(“Hello Blueinno!”);
delay(1000);
lcd.clear();
delay(1000);
}

lcd.begin으로 16*2 짜리 LCD를 시작하겠다고 알림
lcd.clear로 모두 지우고
lcd의 커서 위치를 0,1로 위치 한다.

이후로
▶ 프로젝트10
목표 : 블루투스 4.0 이해하기
내용 : 아이비콘(iBeacon)만들기

▶ 프로젝트11
목표 :블루투스 4.0 이해하기
내용 : 스마트 폰으로 LED 켜기

▶ 프로젝트12
목표 : 블루투스 4.0 이해하기
내용 : 스마트 폰으로 LED 색깔 변경하기

▶ 프로젝트13
목표 : 블루투스 4.0 이해하기
내용 : 스마트 폰으로 서보 모터 각도 제어하기

가 있다.
아이폰은 아직 잘 되지 않는 핑계를 대면서…
블루투스 부분은 은근슬쩍 넘기려 한다.
진행 하게 된다면 개별 활용기에서 진행해보도록 하겠다.

약간 메뉴얼상에서 이상한 소스 부분도 있었다.
동작을 안하는 것은 아니니… ^^;
쉽게 따라 하기 좋다.
브레드 보드와 메인 MCU도 잘 고정되어 있어서 사용하기 매우 좋았다.

LED는 많은데 그에 상응하는 저항이 그 수에 달하지 못하넹~
점퍼선도 CLCD 구성하면 5개 정도만 남는다.
정말 기초 예제 따라 하기?
물론 추가적인 다른 부품도 사서 해야 하고 블루이노의 쉴드도 구매를 해서 해야 겠지만… ^^;

다른 스타터킷과 비슷하게 운영이 가능하다.
약간 설명이 좀 부족(부족하진 않은데… 뭐지?)한것 같기도 하고…
암튼 딱! 아~ 상쾌해… 하는건 아니다.

스타터킷을 대처해도 충분할것 같다.
CLCD가 백라이트 있는 녀석인데(물론 좋긴 하다 ^^;)…
없는 녀석으로 하고 그 가격으로 다른 부품들을 좀 더 추가 할 수 있었다면 그것도 좋았을것 같다.

이로써
ICbanQ] 31기 블루이노2 기본 활용기 #기본예제 를 마쳐본다.

※ 본 제품은 아이씨뱅큐 무상체험단 31기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다.
※ 해당 제품은 http://www.icbanq.com/P005710116/B 에서 확인 가능합니다.

ICbanQ] 31기 블루이노2 스타터키트 개봉기
http://www.beanbox.co.kr/wordpress/?p=1204
http://www.icbanq.com/PBLOGER/board_View.aspx?number=971
http://cafe.naver.com/icbanq/1994

ICbanQ] 31기 블루이노2 기본 활용기 #환경설정하기(Win XP)
http://www.beanbox.co.kr/wordpress/?p=1212
http://www.icbanq.com/PBLOGER/board_View.aspx?number=1019
http://cafe.naver.com/icbanq/2058

ICbanQ] 31기 블루이노2 기본 활용기 #기본예제
http://www.beanbox.co.kr/wordpress/?p=1220
http://www.icbanq.com/PBLOGER/board_View.aspx?number=1024
http://cafe.naver.com/icbanq/2069

One Response to ICbanQ] 31기 블루이노2 기본 활용기 #기본예제

  1. Pingback: ICbanQ] 31기 블루이노2 개별 활용기 #LED 제어 | RedCrow + GreenBean

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다