본문 바로가기
푸닥거리

아두이노 플랫폼을 활용한 코딩 기초(릴리패드)-7

by ┌(  ̄∇ ̄)┘™ 2022. 4. 3.
728x90

아두이노 릴리패드(RallaPad) 코딩 기초 시리즈 7번째 편입니다. 이번 주제는 아날로그 입출력으로, 3색 LED로 색을 만들고, 가변저항(포텐셔미터)으로 값을 읽어 LED 밝기를 조절합니다. 먼저 디지털과 아날로그의 차이부터 정리합니다.

 

메이크샌드박스에 오신것을 환영합니다.

3-1. RallaPad 프레임워크 실습(아래 이미지 중 해당 번호를 클릭하면 해당 페이지로 넘어갑니다)

makesandbox.cc

 

메이크샌드박스에 오신것을 환영합니다.

 

makesandbox.cc

1. 디지털 vs 아날로그

  • 디지털 — 0 또는 1(꺼짐/켜짐)만 다룸. pinMode(), digitalRead(), digitalWrite(HIGH/LOW)
  • 아날로그 — 값을 일정 구간으로 나눠 연속적인 세기를 다룸. analogRead()(입력 0~1023), analogWrite()(출력 0~255, PWM)
  • 핀 구분 — 릴리패드에서 3·5·6번은 아날로그 출력(PWM) 가능 핀, 13번은 디지털 전용 핀입니다.

2. 3색 LED — 아날로그 출력

RGB 세 색의 밝기를 analogWrite(0~255)로 조합해 다양한 색을 만듭니다.

int redPin = 9;    // 3색 LED red 핀
int greenPin = 10; // 3색 LED green 핀
int bluePin = 11;  // 3색 LED blue 핀

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop() {
  RGB_Act(0, 255, 255);     // red
  delay(1000);
  RGB_Act(255, 0, 255);     // green
  delay(1000);
  RGB_Act(255, 255, 0);     // blue
  delay(1000);
  RGB_Act(255, 255, 255);   // off (이 소자는 값이 반전됨)
  delay(1000);
}

// analogWrite로 각 색의 밝기(0~255)를 지정
void RGB_Act(int r, int g, int b) {
  analogWrite(redPin, r);
  analogWrite(greenPin, g);
  analogWrite(bluePin, b);
}

⚠️ 소자에 따라 값이 반전될 수 있습니다. 이 예제의 LED는 값이 반전되어 (0,0,0)이 흰색, (255,255,255)가 꺼짐이 됩니다. 색이 반대로 나오면 값을 뒤집어 보세요.

 

[#욜로#랄라패드] #RallaPad_FrameWork_A&O(Analog&Output,아날로그&출력)_실습_3색LED

안녕하세요! 누구나 원하는걸 만들어보는 메이크샌드박스 입니다! 오늘 소개해 드릴 내용은 저희가 이번에 ...

blog.naver.com

3. 가변저항 — 아날로그 입력

슬라이드 가변저항의 위치를 analogRead()로 읽어 시리얼 모니터에 출력합니다. 값은 0~1023 범위입니다.

int VAR = A5;   // 슬라이드 가변저항이 연결된 핀

void setup() {
  Serial.begin(9600);   // 시리얼 통신 시작
}

void loop() {
  int a = analogRead(VAR);   // 가변저항 값 읽기 (0~1023)
  Serial.print("VAR = ");
  Serial.println(a);         // 시리얼 모니터로 출력
}
 

[#욜로#랄라패드] #RallaPad_FrameWork_A&I(Analog&Input,아날로그&입력)_실습_슬라이드 가변저항

안녕하세요! 누구나 원하는걸 만들어보는 메이크샌드박스 입니다! 오늘 소개해 드릴 내용은 저희가 이번에 ...

blog.naver.com

4. 입력 → 출력 연결 — 밝기 조절 디머

입력(가변저항 0~1023)과 출력(analogWrite 0~255)의 범위가 다르므로, 4로 나눠 범위를 맞춘 뒤 LED로 보냅니다. 가변저항을 돌리면 LED 밝기가 실시간으로 바뀝니다.

int LED = 3;    // LED를 아날로그(PWM) 핀 3번에 연결
int val = A5;   // 가변저항 핀

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

void loop() {
  // analogRead(0~1023)를 4로 나눠 analogWrite 범위(0~255)로 변환
  val = analogRead(A5) / 4;
  analogWrite(LED, val);   // 가변저항 값으로 LED 밝기 조절
}

핵심 포인트: analogRead(0~1023) ÷ 4 ≈ analogWrite(0~255). 이 범위 변환(맵핑)이 아날로그 입출력을 연결하는 열쇠입니다. 더 정확하게는 map(val, 0, 1023, 0, 255) 함수를 쓸 수도 있습니다.

728x90

댓글