코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-08-14 10:52:57
바그래프 (Bar Graph)LED 의 구조는 간단합니다
여러 실습에서 사용했던 LED 1개를 10개 혹은 20개 씩 연결하고 하나의 바 형태나 링 형태로 생산한 것입니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지 보드 | 1 | 아두이노 호환보드 |
2 | 브레드보드 | 1 | 브레드보드 |
3 | 220Ω 저항 | 10 | 저항 |
4 | 점퍼 케이블 | 16 | 점퍼 케이블 |
5 | 바그래프LED | 1 | LED |
6 | 가변저항 | 1 | 10㏀ |
부품명 | 오렌지 보드 | 브레드보드 | 점퍼케이블 | 가변저항 | 220Ω 저항 |
파트 | x1 | x1 | x16 | x1 | x10 |
부품명 | 바그래프 |
파트 | x1 |
*보다 정확한 표기를 위하여 LED 이미지를 사용하였습니다.
바그래프의 정확한 양극, 음극 구분 방법은 해당 제조사의 데이터시트(Datasheet)를 참고해주세요.
바그래프 바닥면에 쓰여있는 제품명 뒤집었을때 기준으로 위쪽 핀을 + , 아래쪽 핀을 - 에 연결해주시면 됩니다.
측면 코드가 쓰여있는 쪽이 +, 반대쪽이 - 입니다.
아래의 코드를 아두이노에 업로드 합니다.
/*
출처: www.arduino.cc
한글주석: www.kocoafab.cc
LED bar graph
created 4 Sep 2010
by Tom Igoe
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/BarGraph
*/
const int analogPin = A0; // 가변저항을 아나로그 0번핀에 연결합니다.
const int ledCount = 10; // 바 그래프에 내장된 LED의 갯수를 값을 지정해줍니다.
int ledPins[] = {
2, 3, 4, 5, 6, 7,8,9,10,11 }; // LED 여러개를 ledPins[]이라는 그룹으로 묶어줍니다.
void setup() {
for (int thisLed = 0; thisLed < ledCount; thisLed++) { //배열된 LED핀을 출력으로 설정합니다.
pinMode(ledPins[thisLed], OUTPUT);
}
Serial.begin(9600);
}
void loop() {
// 가변저항의 센서값을 읽습니다.
int sensorReading = analogRead(analogPin);
// 센서값을 LED갯수로 맵핑합니다.
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
// 배열된 LED에 아래의 조건을 반복합니다.
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
// 배열된 LED가 ledLevel보다 작다면,
// 할당된 값의 LED를 켭니다.
if (thisLed < ledLevel) {
digitalWrite(ledPins[thisLed], HIGH);
}
// 그렇지 않으면 LED를 끕니다.
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
int sensorValue = analogRead(A0);
// 센서값을 읽고 시리얼 모니터상에 출력합니다.
Serial.println(sensorValue);
delay(1);
}
1.스케치 설명
const int analogPin = A0; // 가변저항을 아나로그 0번핀에 연결합니다.
const int ledCount = 10; // 바 그래프에 내장된 LED의 갯수를 값을 지정해줍니다.
int ledPins[] = {
2, 3, 4, 5, 6, 7,8,9,10,11 }; // LED 여러개를 ledPins[]이라는 그룹으로 묶어줍니다.
ledCount 를 선언하여 LED의 갯수를 지정해주고,
배열을 통해 10개의 LED의 핀번호를 설정하였습니다.
void setup() { for (int thisLed = 0; thisLed < ledCount; thisLed++) { //배열된 LED핀을 출력으로 설정합니다. pinMode(ledPins[thisLed], OUTPUT); } Serial.begin(9600); }
for구문을 이용하여 thisLed이 ledcount보다 작으면 증가 시키고
이를 출력으로 설정합니다.
가변저항의 센서값을 모니터 하기 위해 시리얼 통신을 준비합니다.
void loop() { // 가변저항의 센서값을 읽습니다. int sensorReading = analogRead(analogPin); // 센서값을 LED갯수로 맵핑합니다. int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
가변저항의 센서값을 읽고 그 값을
LED의 갯수로 다시 설정하여
센서값에 따라 LEDcount가 영향을 받습니다.
// 배열된 LED에 아래의 조건을 반복합니다.
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
// 배열된 LED가 ledLevel보다 작다면,
// 할당된 값의 LED를 켭니다.
if (thisLed < ledLevel) {
digitalWrite(ledPins[thisLed], HIGH);
}
// 그렇지 않으면 LED를 끕니다.
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
int sensorValue = analogRead(A0);
// 센서값을 읽고 시리얼 모니터상에 출력합니다.
Serial.println(sensorValue);
delay(1);
}
for구문을 이용하여 thisLed가 ledcount보다 작으면 thisLed증가 시키고,
만약 thisLed가 ledLevel(센서값)보다 작으면 해당 값만큼 LED를 켜고
그렇지 않으면 끕니다.
읽어 온 센서값을 시리얼 모니터 상에 출력하고
출력 대기 시간은 1밀리초 동안 대기합니다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!