BASIC4MCU | 질문게시판 | 답변 : 안녕하세요 아두이노 질문 추가입니다
페이지 정보
작성자 master 작성일2018-06-12 14:56 조회10,910회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=1772
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-12 오후 2:59:06// by Ok-Hyun Park/*Arduino Maker With 탐탐 아두이노아두이노 자동창문+블라인드 제어 만들기17.11.30 기준으로 3년전에 제작한 아이템 입니다.도움을 많이주신 아두이노 스토리 카페에서 활동중인 배고파님 감사합니다.상업적용도로 배포를 금합니다.*/#include <MsTimer2.h>//#define PWM 180#define SW1 2 // 4.7k=10k 대체,capacitor x#define SW2 3#define SW3 4#define SW4 5// SW#define MOTER_B 6 // ic2 // 블라인드용#define MOTER_A 7 // 7#define MOTER_EN 8 // 1#define MOTER_D 9 // 10 // 창문용#define MOTER_C 10 //14#define MOTER_EN1 11 // 9//MOTER#define CDS A0 // 아래쪽이 블라인드#define Rain A1 // 윗쪽이 창문//int buttonState1=0,buttonState2=0,buttonState3=0,buttonState4=0;int cds_val,Rain_val;int state; //for BTstatic int Timer=0,Timer1=0;static int Timer_for_Sensor=0;static int MOTER_DIR=0,MOTER_DIR1=0;static int DIR_flag=0,DIR_flag1=0;static bool flag=1,flag1=1;static bool BT_flag=0;static bool MOTER_flag=0,MOTER_flag1=0;static bool cds_chattering_flag=1,cds_flag=1,before_cds=0;static bool Rain_chattering_flag=1,Rain_flag=1,before_Rain=0;//void MOTER_STOP(){ digitalWrite(MOTER_EN,LOW); cds_chattering_flag=1; } // blindvoid MOTER_STOP1(){ digitalWrite(MOTER_EN1,LOW); Rain_chattering_flag=1; } //window//void MOTER_LEFT(){ // blinddigitalWrite(MOTER_EN,HIGH); digitalWrite(MOTER_A,HIGH); digitalWrite(MOTER_B,LOW); cds_chattering_flag=0;//Serial.print("left"); Serial.print("\n");}//void MOTER_LEFT1(){ //windowdigitalWrite(MOTER_EN1,HIGH); digitalWrite(MOTER_C,HIGH); digitalWrite(MOTER_D,LOW); Rain_chattering_flag=0;//Serial.print("left"); Serial.print("\n");}//void MOTER_RIGHT(){ //blinddigitalWrite(MOTER_EN,HIGH); digitalWrite(MOTER_A,LOW); digitalWrite(MOTER_B,HIGH); cds_chattering_flag=0;//Serial.print("right"); Serial.print("\n");}//void MOTER_RIGHT1(){ //windowdigitalWrite(MOTER_EN1,HIGH); digitalWrite(MOTER_C,LOW); digitalWrite(MOTER_D,HIGH); Rain_chattering_flag=0;//Serial.print(MOTER_D); //Serial.print("right"); Serial.print("\n");}//void MOTER_run(){ // blindswitch(MOTER_DIR){case 0: MOTER_STOP(); DIR_flag=0; break;case 1: if(DIR_flag!=1)flag=1; if(flag){ Timer=Timer1=0; flag=0; } MOTER_LEFT(); DIR_flag=1; break;case 2: if(DIR_flag!=2)flag=1; if(flag){ Timer=Timer1=0; flag=0; } MOTER_RIGHT(); DIR_flag=2; break;}}//void MOTER_run1(){ // window!!!switch(MOTER_DIR1){case 0: MOTER_STOP1(); DIR_flag1=0; break;case 1: if(DIR_flag1!=1)flag1=1; if(flag1){ Timer=Timer1=0; flag1=0; } MOTER_LEFT1(); DIR_flag1=1; break;case 2: if(DIR_flag1!=2)flag1=1; if(flag1){ Timer=Timer1=0; flag1=0; } MOTER_RIGHT1(); DIR_flag1=2; break;}}//void BTS(){ // BLUETOOTH // flag->BT_flag changeif(Serial.available()>0){ state=Serial.read(); BT_flag=0; }//if(state=='0'){ MOTER_DIR=MOTER_DIR1=0; // motor turn offif(BT_flag==0){ Serial.println("BlindMotor or Window: off"); BT_flag=1; }state=0;}else if(state=='1'){ MOTER_DIR=1; if(BT_flag==0){ BT_flag=1; state=0; } } // motor turn rightelse if(state=='2'){ MOTER_DIR=2; if(BT_flag==0)BT_flag=1; state=0; }else if(state=='3'){ MOTER_DIR1=1; if(BT_flag==0)BT_flag=1; state=0; }else if(state=='4'){ MOTER_DIR1=2; if(BT_flag==0)BT_flag=1; state=0; }}//void cds_run(){if(cds_chattering_flag){cds_val=analogRead(CDS); Serial.println(cds_val); cds_val=cds_val/750; // 750 is 0 or 1 value//if (before_cds!=cds_val){ before_cds=cds_val; MOTER_flag=1; }else if(before_cds==cds_val){ MOTER_flag=0; }//if(MOTER_flag){if(cds_val)MOTER_DIR=1; else MOTER_DIR=2;}}}//void Rain_run(){ // Rain windowif(Rain_chattering_flag){Rain_val=analogRead(Rain); Rain_val=Rain_val/600; // 600 is 0 or 1 value OPEN//if (before_Rain!=Rain_val){ before_Rain=Rain_val; MOTER_flag1=1; }else if(before_Rain==Rain_val){ MOTER_flag1=0; }//if(MOTER_flag1){if(Rain_val)MOTER_DIR1=1; else MOTER_DIR1=2;}}}//void ISR_Timer(){if(++Timer>25){ Timer=0; MOTER_DIR=0; flag=1; } //windowif(++Timer1>10){ Timer1=0; MOTER_DIR1=0; flag1=1; } //blind}//void pinMode_init(){pinMode(SW1,INPUT); pinMode(SW2,INPUT); pinMode(SW3,INPUT); pinMode(SW4,INPUT);pinMode(MOTER_EN,OUTPUT); pinMode(MOTER_A,OUTPUT); pinMode(MOTER_B,OUTPUT);pinMode(MOTER_EN1,OUTPUT); pinMode(MOTER_C,OUTPUT); pinMode(MOTER_D,OUTPUT);pinMode(CDS,INPUT);pinMode(Rain,INPUT);}//void setup(){pinMode_init();Serial.begin(9600);MsTimer2::set(100,ISR_Timer); // 100ms,ISR_TimerMsTimer2::start(); // Timer start}//void key_scan(){buttonState1=digitalRead(SW1); if(!buttonState1)MOTER_DIR=1;buttonState2=digitalRead(SW2); if(!buttonState2)MOTER_DIR=2;}//void key_scan1(){buttonState3=digitalRead(SW3); if(!buttonState3)MOTER_DIR1=1;buttonState4=digitalRead(SW4); if(!buttonState4)MOTER_DIR1=2;}//void loop(){key_scan();key_scan1();BTS();MOTER_run();MOTER_run1();cds_run();Rain_run();}
정리된 소스로 공부해보세요
댓글 1
조회수 10,910Wnwjdqoddl님의 댓글
Wnwjdqoddl 작성일감사합니다!! 정말 감사합니다