BASIC4MCU | 질문게시판 | 아두이노 소스 합치기
페이지 정보
작성자 열심히하자 작성일2019-02-10 23:08 조회1,126회 댓글0건본문
여기서 아두이노 도움을 받으면서 서로 다르게 소스들을 연구해서 합치고 실행하면서 진행을 하고 있습니다.
근데 서로다르게 하다보니 서로의 소스를 하나로 합치는 노력을 해봤지만, 할때마다 제 작동이 되지 않고 있습니다.
그래서 전문가의 도움을 받아 대략적으로나마 실행이 가능한 소스코드를 보고 싶습니다.
소스코드를 비교하고 난 뒤, 저희들이 잘못된 부분을 다시 돌아보고 싶습니다.
---------------------------------------------------------------------------------------------------------
소스 1.
#include <SoftwareSerial.h>
#include <DHT.h>
int T = 2, R = 3;
int temp_sensor = 4;
int sensor = 6;
int measurePin = A0;
int ledPower = 5;
int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;
int vibration_sensor=7;
int vibration_data;
int sensorPin = A1;
const int red = 10;
const int green = 9;
const int blue = 8;
char color;
float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;
SoftwareSerial my_blue(T, R);
DHT my_sensor(temp_sensor, DHT11);
void setup(){
Serial.begin(9600);
my_blue.begin(9600);
pinMode(ledPower,OUTPUT);
pinMode(vibration_sensor,INPUT);
pinMode(sensor, INPUT);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
my_sensor.begin();
}
void loop(){
{
vibration_data=digitalRead(vibration_sensor);
Serial.print("vib : ");
Serial.println(vibration_data);
delay(250);}
{
int a = map(getdust(),8,133,10,100);
char b[4] = "";
sprintf(b,"%03d",a);
Serial.print("dust: ");
Serial.println(b);
delay(250);}
{
int readingSensor = analogRead(sensorPin);
Serial.print("rain: ");
Serial.println(readingSensor);
Serial.println();
delay(250); }
{
int temp = my_sensor.readTemperature();
int humi = my_sensor.readHumidity();
my_blue.print("temp : ");
my_blue.print(temp);
my_blue.print(" / humi : ");
my_blue.println(humi);
delay(250); }
{
while(Serial.available() ){
color = Serial.read();}
if(color == 'r'){
redFunction();
}
if(color == 'b'){
blueFunction();
}
if(color == 'g'){
greenFunction();
}
if(color == 'y'){
yellowFunction();
}
if(color == 'v'){
violetFunction();
}
if(color == 'w'){
whiteFunction();
}
if(color == 'c'){
cyanFunction();}
}
}
//
int getdust(){
digitalWrite(ledPower,LOW);
delayMicroseconds(samplingTime);
voMeasured = analogRead(measurePin);
delayMicroseconds(deltaTime);
digitalWrite(ledPower,HIGH);
delayMicroseconds(sleepTime);
calcVoltage = voMeasured * (3.3 / 1024);
dustDensity = 100 * calcVoltage - 0.1;
return(dustDensity);
}
void redFunction(){
digitalWrite(blue,LOW);
digitalWrite(green,LOW);
digitalWrite(red,HIGH);
}
void blueFunction(){
digitalWrite(blue,HIGH);
digitalWrite(green,LOW);
digitalWrite(red,LOW);
}
void greenFunction(){
digitalWrite(blue,LOW);
digitalWrite(green,HIGH);
digitalWrite(red,LOW);
}
void yellowFunction(){
digitalWrite(blue,0);
digitalWrite(green,50);
digitalWrite(red,255);
}
void violetFunction(){
digitalWrite(blue,255);
digitalWrite(green,0);
digitalWrite(red,255);
}
void whiteFunction(){
digitalWrite(blue,110);
digitalWrite(green,220);
digitalWrite(red,255);
}
void cyanFunction(){
digitalWrite(blue,255);
digitalWrite(green,255);
digitalWrite(red,0);
}
----------------------------------------
소스 2
#include <Servo.h>
int flame=0;
int buzzer=13;
//
int vibration_sensor=7;
int vibration_data;
//
int motor=5; // 서보 모터의 핀 번호
Servo servo;
//
int angle=0;
//
void setup(){
Serial.begin(9600); // 시리얼 통신,속도는 9600
//
pinMode(13,OUTPUT); // LED, 부저 출력담당
pinMode(3,INPUT); // 인체감지센서 입력담당
//
pinMode(buzzer, OUTPUT);
//
pinMode(vibration_sensor,INPUT);//아두이노의 6번핀을 입력으로 설정합니다.
//
servo.attach(motor); // 모터 시작
pinMode(motor,OUTPUT); // 모터 출력
servo.write(angle);
}
//
void loop(){
vibration_data=digitalRead(vibration_sensor);//vivration_data값에 현재 진동센서의 값을 입력합니다.
Serial.println(vibration_data);//센서값을 출력하여 줍니다
//
int value = digitalRead(3);
Serial.println(value);
if(value == HIGH) digitalWrite(2,HIGH); // 인체 감지되면 2번에 전류를 흘려라
else {
digitalWrite(2,LOW); // 인체감지가 안되면 전류를 끊어라
delay(1000);
}
//
int Val=analogRead(A2); // 사운드센서 소음 측정
if(Val>40){
Serial.println(Val);
delay(100);
}
//
int sensor=analogRead(A0); // 조도센서의 데이터 받아오기
if(sensor>1000){// 주위가 어둡다면
while(angle<180){ servo.write(++angle); delay(10); } // 서보 모터의 각도를 180도로
}
else{// 주위가 밝다면
while(angle>0){ servo.write(--angle); delay(10); } // 서보 모터의 각도를 180도로
}
//
flame = analogRead(A1);
Serial.print("Flame=");
Serial.println(flame); // 시리얼통신 화면에 변수에 저장된 값을 출력
delay(100);
if (flame>0){
Serial.println(" Flame is around you ");
tone(buzzer, 1000, 50);
delay(50);
tone(buzzer, 200, 50);
delay(50);
}
else{
noTone(buzzer);
delay(100);
}
}
-------------------------------------------------------
디지털이든 아날로그든 겹치는 부분은 바꿔주셔도 됩니다.
단지 합쳐지는 모습을 보고 저희가 합친 코드랑 비교해보고 싶습니다.
부탁드리겠습니다.
댓글 0
조회수 1,126등록된 댓글이 없습니다.