부품
우드락 |
아두이노 우노 |
브레드 보드 |
블루투스 모듈 |
점퍼 케이블 |
초음파 센서 X2 |
모터 X3 |
피에조 부저 |
LED X7 |
제작 과정
1. 작품 구상
구현할 기능
- 전등 ON OFF
- 창문 열기 닫기
- 로봇 청소기 ON OFF
- 보안 시스템
- 자동차 시동
2. 외관 제작
3. 아두이노, 브레드 보드, 모터 장착
* 초기에는 건전지를 이용하여 무선으로 제작하려 했지만
USB로 전력을 공급하기로 변경
장착한 모터는 로봇청소기를 움직이기 위한 모터
4. 센서 매립
5. 모터 부착
6. LED, 블루투스 모듈 연결후 배선
2층 전등 & 1층 전등 - 백색 총 2개
장식 - 초록, 주황, 파랑 총 3개
차 라이트 - 주황 2개
7. 코딩
#include <SoftwareSerial.h>
#include<Servo.h>
SoftwareSerial BTSerial(6,7);
Servo left; //창문 좌
Servo right;//창문 우
Servo cleaner; // 청소기
unsigned long previousMillis = 0;
long interval = 100;
int echo2 = 13;
int trig2 = 12;
int echo1 = 11;
int trig1 = 10;
int light2=9;
int light1=8;
int carlight=2;
int grean=A0;
int orange=A1;
int blue=A2;
int piezo=A3;
int lopen=180;
int ropen=0;
int lrclose=90;
int bs;
int ch=0;
int secumode=0;
int clch=0;
int i=1;
int a=1;
void setup() {
BTSerial.begin(9600);
left.attach(5);
right.attach(4);
cleaner.attach(3);
pinMode(carlight, OUTPUT);
pinMode(light2, OUTPUT);
pinMode(light1, OUTPUT);
pinMode(trig2, OUTPUT);
pinMode(echo2, INPUT);
pinMode(trig1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
Serial.begin(9600);
left.write(lrclose); // 창문 초기화
right.write(lrclose);// 창문 초기화
digitalWrite(A0,HIGH); //장식 LED
digitalWrite(A1,HIGH); //장식 LED
digitalWrite(A2,HIGH); //장식 LED
}
void loop() {
if(secumode==1){ // 보안모드
long currentMillis = millis();
digitalWrite(trig2, LOW);
delayMicroseconds(2);
digitalWrite(trig2, HIGH);
delayMicroseconds(10);
digitalWrite(trig2, LOW);
int duration2 = pulseIn(echo2, HIGH);
int dis2 = duration2*17/1000;
digitalWrite(trig1, LOW);
delayMicroseconds(2);
digitalWrite(trig1, HIGH);
delayMicroseconds(10);
digitalWrite(trig1, LOW);
int duration1 = pulseIn(echo1, HIGH);
int dis1 = duration1*17/1000;
Serial.print("2층");
Serial.print(dis2);
Serial.print("cm ");
Serial.print("1층");
Serial.print(dis1);
Serial.println("cm");
delay(50);
if(currentMillis - previousMillis >= interval) {
previousMillis=currentMillis;
if(ch==0){
ch=1;
}
else{
ch=0;
}
}
if((dis2<11||dis2>16)||(dis1<11||dis1>16)){
if(ch==0){
tone(piezo,1500);
}
else{
tone(piezo,500);
}
}
else{
noTone(piezo);
ch=1;
}
}
if(clch==1){ // 청소기 작동
if(a==1){
if(i==16){
a=0;
}
cleaner.write(i*10);
delay(50);
i++;
}
else{
if(i==2){
a=1;
}
cleaner.write(i*10);
delay(50);
i--;
}
}
if(BTSerial.available()){ // 블루투스
bs=BTSerial.read();
switch(bs){
case 97://a
digitalWrite(light2,HIGH);
break;
case 98://b
digitalWrite(light2,LOW);
break;
case 99://c
digitalWrite(light1,HIGH);
break;
case 100://d
digitalWrite(light1,LOW);
break;
case 101://e
digitalWrite(carlight,HIGH);
break;
case 102://f
digitalWrite(carlight,LOW);
break;
case 103://g
left.write(lopen);
right.write(ropen);
break;
case 104://h
left.write(lrclose);
right.write(lrclose);
break;
case 105://i
clch=1;
break;
case 106://j
clch=0;
break;
case 107://k
secumode=1;
break;
case 108://l
secumode=0;
break;
default:
break;
}
}
}
8. 앱 제작
앱 인벤터 사용
작품 시연
'Arduino' 카테고리의 다른 글
[자료]모형건축 전등제어 자료 (0) | 2021.05.18 |
---|