컴퓨터

[arduino] 기초 (LED, 버튼, 3색 LED, 가변저항)

dolhim 2023. 7. 26. 15:30

물리공작소 LAB 유튜브 동영상을 참고하여 https://wokwi.com/ 시뮬레이터로 진행했습니다.

 

Wokwi - Online ESP32, STM32, Arduino Simulator

PowerVotes: You decide. We Do.

wokwi.com

 

LED

다리가 짝짝이다. 긴 쪽이 + (power)이고, 짧은 쪽이 - (ground, 접지)로 알맞는 곳에 연결해야한다.

analogWrite(11, 30);

코드로 불을 켤 수 있다. 파라미터는 핀 번호랑 전압이다. 전압에 따라 밝기가 달라진다. 0(0v)~255(5v)까지 입력이 가능하다.

https://www.arduino.cc/reference/ko/language/functions/analog-io/analogwrite/ 

불이 켜지지 않을 경우, +,-를 잘못 연결하지 않았는지 확인한다! 

 

PUSH BUTTON

버튼의 동작 원리: 평소에는 5v('1'값)을 유지하다가 버튼이 눌리면 0v('0'값)로 바뀐다.

0v를 전달하기위해 한쪽을 그라운드로 연결한 것이다.

setup에 아래와 같이 입력하고

pinMode(10, 2); // 10번 핀에서 신호를 입력 받기위해 설정

https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/

loop에 아래와 같이 입력한다.

  int pin10 = digitalRead(10); // 10번 핀의 신호를 입력 받음
  if (pin10 == 0) {
    analogWrite(11, 20); // 버튼을 누르면 불을 켜고
  } else {
    analogWrite(11, 0); // 버튼을 안누르면 불을 끈다
  }  
제대로 작동하지 않는 경우 핀이 제대로 연결되었는지 확인한다! 접촉 불량일 수도 있고, 한 쪽 핀 2개 중, 한 개는 10번에 나머지 한개는 GND에 연결한다. 

 

3색 LED

다리가 4개가 있는데, 긴 것 하나, 나머지 동일한 길이가 3개이다. 3개가 P(+)라서 9,10,11에 연결해주고 나머지 1개는 GND에 연결한다.

핀 순서대로 9-빨강, GND-제일 긴 거, 10-초록, 11-파랑색이다.

핀 마다 값을 다르게 주면 다양한 색을 표현할 수 있다.

  analogWrite(9, 100);
  analogWrite(10, 100);
  analogWrite(11, 100);
시뮬레이터로 사용하고 있는 wokwi에는 3색 LED의 공통 핀이 anode(양극)으로 되어있어서[참고], cathode(음극)으로 바꿔줘야 불이 켜진다.

 

가변저항(포텐셔미터)

노브를 돌려서 저항을 바꿀 수 있다. GND핀은 GND에 연결하고, VCC 핀으로 전압을 추출해서 SIG 핀으로 저항을 측정하는 구조이다.

아두이노는 0v에서 5v까지의 전압을 총 1024단계로 읽을 수 있다. 이것을 아날로그 입력이라고 한다.

숫자로 표현하면 0v는 0이고 5v는 1023이다. 2.5v는 대략 512이다.

  int pinA1 = analogRead(A1);
  analogWrite(11, pinA1);

이렇게 포텐셔미터 값을 그대로 LED에 넣으면 0~1023까지 들어올 수 있기 때문에

0~ 255까지 표현 가능한 LED 색이 변하는걸 눈으로 확인하기 어렵다.

그래서 map이라는 함수로 범위를 바꾼다.

  int pinA1 = analogRead(A1);
  int value = map(pinA1, 0, 1023, 0, 255);
  analogWrite(11, value);

 

'컴퓨터' 카테고리의 다른 글

[arduino] 기초 (블루투스 모듈 HC-06, AT 명령어 안될 때)  (0) 2023.08.13
[arduino] 기초 (서보모터)  (0) 2023.07.26
HTTP 파헤치기 1  (0) 2018.08.25
HTTP 파헤치기 0  (0) 2018.08.25
Devexpress ASP.NET GridView BatchMode  (0) 2017.08.30