'RaspberryPi' 태그의 글 목록 :: 잡다한 프로그래밍
반응형

1. 릴레이란?

  • ON/OFF 기능을 할 수 있는 일종의 스위치
  • 낮은 전류로 높은 전류를 제어 가능
  • 아두이노에서는 5V를 사용하지만 5V 이상의 전류를 제공해야 할 때 릴레이를 사용
  • 평상시는 NC와 COM단자가 연결되어 있고, SIG핀으로 전류가 흐를 시 NO와 COM단자가 연결된다.

릴레이


2. 릴레이 사용법

고 전압을 사용할 시 전원을 모두 제거하고 사용해야 하고 되도록 사용방법만 익히고 실제로 해보지 않는 걸 추천합니다.

 

만약 다음 그림과 같이 연결되어있다면 평상시에는 NC와 COM이 연결되어있기 때문에 현재 NO, COM이 연결된 아래 그림은 전구에 불이 켜지지 않을 것이다 하지만 7번 핀에 전류가 흐를 경우 NO와 COM이 연결되므로 전구에 불이 켜질 것이다. 이처럼 낮은 전류로 높은 전류를 컨트롤하기 위해 릴레이를 사용한다

릴레이 연결

반응형
반응형

1. 조도센서란?

  • 빛 감지센서
  • 저렴한 가격과 활용도를 가지고 많이 사용함
  • CDS 센서는 광에 쏘여지면 저항 값이 감소하는 광도전효과를 이용한 센서
  • CDS라고 불리는 이유는 CDS를 만드는 주 재료가 카드뮴, 황의 화합물인 황화 카드뮴이기 때문
  • 주위가 밝으면 저항이 줄어들고 주위가 어두우면 저항이 커지는 특징
  • 주위가 밝으면 CDS 저항이 줄어들어 Analog Input 핀에 높은 전압
  • 주위가 어두워 지면 CDS 저항이 커져 Analog Input 핀에 낮은 전압

조도센서 설명


2. 조도센서 실습하기

조도센서를 통한 LED ON/OFF실습에 필요한 사전준비물은 다음과 같다

사전 준비물

준비가 완료 되었다면 다음과 같이 회로를 구성한다. 조도센서는 극성이 없으므로 +, - 를 구분할 필요가 없다.

회로 구성

회로 구성이 완료 되었다면 다음과 같이 코드를 작성한다. A0으로 Analog Input을 이용하여 조도센서 값을 읽어오고, 읽어온 값이 100이상일경우 LED를 OFF하고 100보다 작을경우 LED를 ON하는 코드이다

int lightPin = A0;
int ledPin=11;
void setup()
{
	Serial.begin(9600);
	pinMode( ledPin, OUTPUT );
}
void loop()
{
	Serial.println(analogRead(lightPin)/4);
	if ( analogRead(lightPin)/4 >= 100 )
		digitalWrite(ledPin, LOW);
	else
		digitalWrite(ledPin, HIGH);
	delay(10);
}
반응형
반응형

1. 터치센서란?

터치센서는 아래 사진과 같으며 정전 용량형 터치 스위치 모듈이다. 보통 상태일 때는 Low 출력, 터치가 되었을 때는 High를 출력한다. VCC = +5V, GND = GND, SIG = 디지털 핀에 연결하여 사용하면 된다

터치센서


2. 터치센서 실습하기

터치센서와 LED를 사용하여 실습을 진행한다. 실습에 필요한 사전 준비물은 다음과 같다

사전 준비물

준비가 완료 되었다면 다음과 같이 회로를 구성한다

회로구성

회로 구성이 끝났다면 다음과 같이 코드를 작성한다. 터치센서에서 읽어 들인 touch값이 Low일 때 led를 끄고 High일 때 LED를 키는 코드이다

int touch = 3; // D3
int led = 9; // D9
void setup()
{
	pinMode(touch, INPUT);
	pinMode(led, OUTPUT);
}
void loop() {
	if( digitalRead(touch) == LOW )
		digitalWrite(led, LOW);
	else
		digitalWrite(led, HIGH);
}
반응형
반응형

1. ADC란?

Analog Digital Converter로서 연속적인 신호인 아날로그 신호를 부호화된 디지털 신호로 변환하는 장치를 의미한다. A\DC는 온도, 압력, 음성, 영상신호, 전압 등을 실생활에서 연속적인 아날로그 신호를 측정하여 그 신호를 컴퓨터로 입력하고 디지털로 변환하는 것을 의미한다. 여기서 우리가 사용할 가변저항이 ADC역할을 한다.

ADC그림


2. 가변저항 실습하기

가변저항과 LED를 사용하여 Analog Input / Output 실습을 진항한다. 실습에 필요한 사전 준비물은 다음과 같다.

  • 가변저항이란 : 저항의 값이 고정되어있지 않고 회전 스위치를 이용하여 임의의 저항값으로 변경이 가능한 저항

실습 준비물

가변저항은 다음과 같이 GND, A0, 5V로 구성되어있다

가변저항 설명

준비가 끝났다면 다음과 같이 회로를 구성한다 5V GND를 가변저항과, LED에 가변저항 A0은 아두이노 A0부분에, LED의 + 부분은 9번핀에 연결한다

회로구성

회로를 구성하였다면 다음과 같이 코드를 작성한다. 이때 sensorValue를 보면 sensorPin/4를 하는데 4로 나눠주는 이유는 0~1024 까지나 오는 결과 값을 analogRead에 맞게 0~255로 바꾸기 위해 4로 나눠주는 것이다

int sensorPin = A0;
int led = 9;
void setup()
{
	pinMode(led, OUTPUT);
	Serial.begin(9600);
}
	void loop()
{
	int sensorValue = 0;
	sensorValue = analogRead(sensorPin)/4;
	analogWrite(led, sensorValue);
	Serial.println(sensorValue);
	delay(10);
}
반응형
반응형

1. PWM이란?

Pulse Width Modulation으로서 펄스폭을 조절해서 전류를 조정하는것 ex) 무드등 제어, 부저 음계 제어 등

아두이노 우노 보드에서는 다음 그림과 같이 3, 5, 6, 9, 10, 11번 핀이 PWM 출력 기능을 제공함

아두이노 PWM 핀 번호

만약 사용자가 전류를 흘리고 싶다면 analogWrite() 함수에 숫자를 넣으면 사용할 수 있고 이는 0~255 범위를 가진다. 다음 그림처럼 사용자가 0, 64, 127, 191, 255를 입력했을때 다음과 같은 펄스폭을 가지게 된다

펄스폭 예


2. PWM을 이용한 LED밝기 조절 예제

PWM이 무엇인지 알았다면 LED를 이용하여 실제 예제를 학습해보자. 다음 그림과 같이 브레드보드 1개, 아두이노 우노, LED 1개, 1K저항 1개를 사용하였다.

실험 준비

준비한 준비물의 회로를 다음과 같이 구성한다. LED와 1K저항을 연결하고 빨간선은 +를 의미 검은선은 GRN을 의미한다

회로구성

다음과 같이 회로를 구성하였다면 다음과 같이 코드를 작성한다. 다음 코드는 analogWrite를 사용해서 9번핀에 brightness만큼 전류를 흘려주고 돌때마다 brightness가 5씩 증가하고 최대인 255에 도달하였다면 - 해주는 방식으로 진행되는 코드이다

int led = 9; //9번핀을 사용한다
int brightness = 0; // 처음 LED밝기
int fadeAmount = 5; // 5씩 밝아지게 함
void setup()
{
	pinMode(led, OUTPUT);
}
void loop()
{
	analogWrite(led, brightness);
	brightness = brightness + fadeAmount;
	if (brightness == 0 || brightness == 255) {
		fadeAmount = ‐fadeAmount ;
	}
	delay(30);
}

 

반응형
반응형

1. 아두이노 3색 LED 실습

3색 LED(RGB LED 모듈)는 다음과 같이 R, G, B, 그라운드 총 4가지 핀으로 이루어져 있다.

이러한 모듈을 다음과 같이 아두이노에 연결한다

LED 연결

연결하였다면 다음과 같이 코드를 작성한다. 다음 코드는 R > G > B순서로 0.5초의 딜레이를 가지고 반복적으로 색이 변하는 코드이다. 기존 LED와 다르게 저항을 사용하지 않아도 된다.

int led1 = 8;
int led2 = 9;
int led3 = 10;
void setup()
{
	pinMode(led1, OUTPUT);
	pinMode(led2, OUTPUT);
	pinMode(led3, OUTPUT);
}
void loop()
{
	digitalWrite(led1, HIGH);
	digitalWrite(led2, LOW);
	digitalWrite(led3, LOW);
	delay(500);

	digitalWrite(led1, LOW);
	digitalWrite(led2, HIGH);
	digitalWrite(led3, LOW);
	delay(500);

	digitalWrite(led1, LOW);
	digitalWrite(led2, LOW);
	digitalWrite(led3, HIGH);
	delay(500);
}

2. 버튼 사용하여 LED 제어하기

버튼은 아래 그림과 같이 평상시에는 전류가 흐르지 않다가 사용자가 버튼을 눌렀을 시 전류가 흐르게 만든다.

버튼 구성

이러한 버튼을 사용하여 다음과 같은 회로를 구성한다

버튼, LED 회로도

회로 구성을 완료하였다면 다음과 같은 코드를 작성한다. 버튼에 연결된 핀 12, 13번에 전류가 흐른다면 LED를 ON 하는 코드이다. 이때 12, 13핀에 전류가 흐르는지 확인하기 위해 digitalRead함수를 사용했다. digitalWrite가 디지털 방식으로 전류를 ON/OFF 했다면 digitalRead는 전류가 들어오는지 여부를 확인할 때 사용한다

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);
}
반응형
반응형

1. 사전 공부

#1 저항

전자부품이 동작하는데 필요한 전류가 흐르는 것을 조절하는 역할

저항 설명

저항 읽는법:

저항 읽는법

#2 브레드보드

납떔없이 회로를 꾸밀 수 있게 하는 도구

브레드보드 이미지

위 사진처럼 브레드보드 가장 위아래는 가로로 연결되어 있고 나머지 부분은 세로로 연결되어 전기가 통한다.

따라서 다음과 같이 이용해야 한다.

브레드보드 이용방법

2. 디지털 출력(Digital Output) 실습

#1 설명

아두이노에서 출력은 디지털 입출력과 아날로그 입출력 방식으로 나눌 수 있다.

이때 아두이노에 정해진 특정 디지털 출력 핀의 전압을 HIGH, LOW로 설정하여 LED에 흐르는 전류를 제어할 수 있다.

아날로그는 파형이 디지털 0, 1처럼 정해져 있는 것이 아닌 0~100 사이의 값을 가질 수 있다고 생각하면 좋다. 그림으로 표현하면 아래와 같다.

아날로그, 디지털 차이

아두이노의 Digtal 핀은 다음과 같다.

아두이노 디지털핀

빨간 박스 부분에서 0~13번은 디지털 인풋 아웃풋으로 모두 사용할 수 있다.

 

#2 실습

500msec 간격으로 LED 1개가 동시에 ON/OFF 하는 실습 예제이다

실험에 필요한 준비물은 아두이노 UNO, LED1개 1K 저항 1개 브레드보드이다.

LED는 꺾인 쪽이 + 곧게 펴진 쪽이 -이다

1) 다음과 같이 회로를 구성한다

8번 핀을 각 LED의 + 부분에 연결된 저항과 연결하고, GND핀을 - 부분에 연결한다

 

2) 연결을 완료하였다면 다음과 같은 코드를 작성하고 업로드한다

int led1 = 8;

void setup()
{
	pinMode(led1, OUTPUT); //아웃풋 설정
}

void loop()
{
	digitalWrite(led1, HIGH); //LED켜짐
    
    delay(500); //딜레이 0.5초
    
    digitalWrite(led1, LOW); //LED꺼짐
    
    delay(500);
}
반응형
반응형

1. 시리얼 통신이란?

  • 시리얼(RS232) 통신은 주로 IBM 호환 PC에서 쓰이는 시리얼 통신 방법
  • 예전에는 주로 모뎀 연결에 RS232 통신을 사용했다
  • 최장 1.5m 정도 까지 통신 가능
  • 최근의 노트북 PC는 무게, 두께를 줄이기 위해 시리얼 포트를 제거하고 USB를 사용함
  • 아두이노 보드는 기본으로 제공하는 USB 포트를 이용하여 시리얼(RS232) 통신이 가능함

다음 사진과 같이 아두이노는 PC와 시리얼 통신을 하게 된다.

PC 아두이노간 시리얼 통신


2. 시리얼 통신 예제

아두이노 시리얼 모니터에서 1 or 2를 입력하면 13번 LED가 ON/OFF되는 프로그램 코딩

int led = 13;

void setup()
{
	pinMode(led, OUTPUT); //13번 LED를 아웃풋으로 설정
	digitalWrite(led, LOW);
	Serial.begin(9600); //보트레이트를 9600으로 설정 시리얼창과 아두이노의 설정이 같아야함
}
void loop()
{
	char read_data;
if (Serial.available())
{
	read_data = Serial.read();
	if( read_data == '1')
	{
		digitalWrite(led, HIGH); //LED ON
		Serial.println("LED ON");
	}
	else if( read_data == '2')
	{
		digitalWrite(led, LOW); //LED OFF
		Serial.println("LED OFF");
	}
		delay(10);
}
}

다음과 같이 코딩을 완료하였다면 아래와 같은 결과를 확인 할 수 있다.

결과 화면

반응형

+ Recent posts