릴레이
릴레이는 전기로 작동시키는 스위치를 말한다.
낮은 전압을 이용해 높은 전합을 제어하는데 많이 사용한다.
릴레이 회로
코드
// 릴레이 제어
#define fanPin A2 // 12V DC 팬 제어 릴레이 핀 번호
#define lampPin A3 // 220V AC 전등 제어 릴레이 핀 번호
void setup() {
pinMode(fanPin, OUTPUT);
pinMode(lampPin, OUTPUT);
}
void loop() {
testRelay();
}
void testRelay(){
//팬, 전등을 교대로 동작 테스트
digitalWrite(fanPin, HIGH);
digitalWrite(lampPin, LOW);
delay(1000);
digitalWrite(fanPin, LOW);
digitalWrite(lampPin, HIGH);
delay(1000);
}
서보모터
서보모터는 일반 모터와는 달리 특정 위치나 특정 수치를 입력하면 제어계측 회로에 의해 입력한 만큼만 정확하게 움직일 수 있는 모터이다. 예를 들어 모터에 90도를 입력하면 제어계측 회로를 이용해 모터를 정확하게 90도가 될 때까지만 움직이고 멈추는 것이다.
PWM
PWM(펄스 폭 변조, Pulse Width Modulation)는 펄스 변조의 일종으로 신호의 크기에 따라 펄스의 폭을 조절하는 방식으로 변조한다. 펄스 파형의 High 상태와 Low 상태 파형의 비율을 Duty Cycle이라고 부르는데, PWM은 이 듀티 사이클을 조정해서 변조하는 방식이다.
회로
코드
#include <Servo.h>
#define servoPin 5
Servo myServo; // 서보모터 제어 객체 생성
void setup() {
myServo.attach(servoPin); // 서보모터 객체를 포트에 연결
}
void loop() {
servoMove(0);
servoMove(90);
servoMove(179);
delay(1000);
}
//입력받은 각도만큼 움직이기
void servoMove(int servoPos){
myServo.attach(servoPin); // 서보모터 연결
myServo.write(servoPos); // 입력받은 각도만큼 움직이기
delay(500); // 모터가 움직임이 끝날때까지 기다리기
myServo.detach(); // 서보모터 연결 해제
}
detach()를 이용해 서보모터의 연결을 해제해야 모터가 떨리는 지터링 현상을 막을 수 있다.
블루투스
블루투스(Bluetooth)는 1994년에 에릭슨이 최초로 개발한 디지털 통신 기기를 위한 개인 근거리 무선 통신 기술이다.
2.4~2.485 GHz의 단파 UHF 전파를 이용하여 개인용 컴퓨터에 이용되는 마우스, 키보드를 비롯해, 휴대전화 및 스마트폰, 태블릿, 스피커 등에서 문자 정보 및 음성 정보를 비교적 낮은 속도로 디지털 정보를 무선 통신을 통해 주고받는 용도로 채용되고 있다.
회로
코드
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // 아두이노 기준 (RX, TX)
void setup() {
Serial.begin(57600);
while (!Serial) {
; // USB 시리얼 연결될 때까지 대기(arduino <-> PC)
}
Serial.println("Serial begin."); // Ard->PC
// set the data rate for the SoftwareSerial port
mySerial.begin(57600); // 아두이노-BT 간 시리얼 통신 시작
mySerial.println("Hello, BT?"); // Ard->BT
}
void loop() {
if (mySerial.available()) { // 시리얼 입력이 있나? (BT->Ard)
Serial.write(mySerial.read()); // BT의 입력을 읽어서 PC로 전송
}
if (Serial.available()) { // PC->Ard 입력이 있나?
mySerial.write(Serial.read()); // PC의 입력을 읽어서 BT로 전송
}
}
AT 명령어
1. 모듈 테스트
명령어 : AT
반환 값 : OK
2. 버전 확인
명령어 : AT+VERSION
반환값 : OKlinvorV1.8
3. 이름 변경
명령어 : AT+NAME이름
반환값 : OKsetname
4. BAUD rate 설정
명령어 : AT+BAUD숫자
1---------1200
2---------2400
3---------4800
4---------9600
5---------19200
6---------38400
7---------57600
8---------115200
반환값 : OK숫자
5. PIN 설정
명령어 : AT+PINxxxx
(xxxx는 네 자리 숫자)
반환 값 : OKsetPIN
스마트폰 연결
Serial Bluetooth Terminal을 설치한다.
Serial Bluetooth Terminal - Google Play 앱
블루투스 클래식 / LE와 연결된 시리얼 장치의 터미널
play.google.com
조도센서
CdS센서는 빛의 양에 따라 저항의 수치가 달라져 이로 인한 전압 차이로 조도를 구분할 수 있다.
빛을 받으면 저항값이 감소하며 빛이 없으면 저항값이 증가한다.
회로
코드
#define cdsPin A1 // 조도센서 (cds) 핀 번호
int cdsValue = 0; // 조도(cds) 값
void setup(){
Serial.begin(9600);
Serial.println("Serial start.");
}
void loop(){
cdsValue = analogRead(cdsPin); // 조도센서값 읽기
Serial.println(cdsValue);
delay(100);
}
댓글