질문게시판 > 답변 : 안녕하세요 아두이노 질문 추가입니다

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

답변 : 안녕하세요 아두이노 질문 추가입니다

페이지 정보

작성자 master 작성일18-06-12 14:56 조회6,868회 댓글1건

본문

 

// 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 BT
static 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; } // blind
void MOTER_STOP1(){ digitalWrite(MOTER_EN1,LOW); Rain_chattering_flag=1; } //window
//
void MOTER_LEFT(){ // blind
  digitalWrite(MOTER_EN,HIGH); digitalWrite(MOTER_A,HIGH); digitalWrite(MOTER_B,LOW); cds_chattering_flag=0;
  //Serial.print("left"); Serial.print("\n");
}
//
void MOTER_LEFT1(){ //window
  digitalWrite(MOTER_EN1,HIGH); digitalWrite(MOTER_C,HIGH); digitalWrite(MOTER_D,LOW); Rain_chattering_flag=0;
  //Serial.print("left"); Serial.print("\n");
}
//
void MOTER_RIGHT(){ //blind
  digitalWrite(MOTER_EN,HIGH); digitalWrite(MOTER_A,LOW); digitalWrite(MOTER_B,HIGH); cds_chattering_flag=0;
  //Serial.print("right"); Serial.print("\n");
}
//
void MOTER_RIGHT1(){ //window
  digitalWrite(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(){ // blind
  switch(MOTER_DIR){
    case 0MOTER_STOP(); DIR_flag=0break;
    case 1if(DIR_flag!=1)flag=1if(flag){ Timer=Timer1=0flag=0; } MOTER_LEFT();  DIR_flag=1break;
    case 2if(DIR_flag!=2)flag=1if(flag){ Timer=Timer1=0flag=0; } MOTER_RIGHT(); DIR_flag=2break;
  }
}
//
void MOTER_run1(){ // window!!!
  switch(MOTER_DIR1){
    case 0MOTER_STOP1(); DIR_flag1=0break;
    case 1if(DIR_flag1!=1)flag1=1if(flag1){ Timer=Timer1=0flag1=0; } MOTER_LEFT1();  DIR_flag1=1break;
    case 2if(DIR_flag1!=2)flag1=1if(flag1){ Timer=Timer1=0flag1=0; } MOTER_RIGHT1(); DIR_flag1=2break;
  }
}
//
void BTS(){ //  BLUETOOTH // flag->BT_flag change
  if(Serial.available()>0){ state=Serial.read(); BT_flag=0; }
  //
  if(state=='0'){ MOTER_DIR=MOTER_DIR1=0;  // motor turn off
    if(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=1state=0; } } // motor turn right
  else if(state=='2'){ MOTER_DIR=2;  if(BT_flag==0)BT_flag=1state=0; }
  else if(state=='3'){ MOTER_DIR1=1if(BT_flag==0)BT_flag=1state=0; }
  else if(state=='4'){ MOTER_DIR1=2if(BT_flag==0)BT_flag=1state=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_valMOTER_flag=1; }
    else if(before_cds==cds_val){ MOTER_flag=0; }
    //
    if(MOTER_flag){
      if(cds_val)MOTER_DIR=1else MOTER_DIR=2;
    }
  }
}
//
void Rain_run(){ // Rain window
  if(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_valMOTER_flag1=1; }
    else if(before_Rain==Rain_val){ MOTER_flag1=0; }
    //
    if(MOTER_flag1){
      if(Rain_val)MOTER_DIR1=1else MOTER_DIR1=2;
    }
  }
}
//
void ISR_Timer(){
  if(++Timer>25){ Timer=0MOTER_DIR=0flag=1; } //window
  if(++Timer1>10){ Timer1=0MOTER_DIR1=0flag1=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_Timer
  MsTimer2::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();
}

 

정리된 소스로 공부해보세요

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 1

조회수 : 6,868

Wnwjdqoddl님의 댓글

Wnwjdqoddl 작성일

감사합니다!! 정말 감사합니다

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 PIC 블루투스 연결 댓글[18] 픽공부 새글 10:28
질문 PIC18F452 블루투스 연결 댓글[4] 마이컴 새글 22-08-08
질문 아두이노 코드 해석을 못하겠습니다... 댓글[2] 김가헌 새글 22-08-08
질문 아두이노 코드를 avr로 변환해 주세요 ...ㅠ 댓글[3] 옹냥냥 새글 22-08-08
질문 아두이노 녹음-스피커모듈 관련 질문있습니다 ㅠㅠ 댓글[2] 방귀뿡뿡 새글 22-08-08
질문 Serial EEPROM 실수값 저장.. 댓글[2] 첨부파일광이  22-08-07
질문 STM32 Live Expression 값들이 깜빡이는… 댓글[3] 둠둠  22-08-05
질문 아두이노 ESP32 wifi module 댓글[1] Yoon  22-08-03
질문 atmega128과 dht11, lcd를 연결했는데 0… 댓글[1] 고양이33  22-08-02
질문 ATMEGA 128 코드를 합치려고 하는데 어렵네요 댓글[2] 고양이33  22-08-02
질문 서보모터 제어에 대해 질문있습니다. 댓글[2] 첨부파일뉴비에오  22-07-30
질문 적외선 통신 알려주실분있나요 ㅠㅠ 댓글[1] hkjsj10  22-07-30
질문 아두이노 관련 궁금합니다. 댓글[1] 뱝뱝  22-07-28
질문 아두이노 우노 MCP4725 댓글[3] opqr  22-07-27
질문 레오나르도 인체감지센서 알림 안옴 면지지  22-07-24
답변 답변 : 레오나르도 인체감지센서 알림 안옴 master  22-07-25
질문 Uno에서 엔코더값 놓치는 이유가 뭘까요... 댓글[3] MAKTUB  22-07-24
질문 아두이노 압력센서 연동 질문 댓글[4] dbice  22-07-23
질문 아두이노 버튼 누르기 문의 댓글[1] 김형근  22-07-23
질문 HM10 다중페어링 댓글[1] ㅎㅋㅎㅋㅎ  22-07-22
질문 모터드라이브 선정 댓글[6] 조숩인  22-07-22
질문 ad9850 sin파 2 댓글[6] 첨부파일opqr  22-07-21
질문 ad9850 sin파 합성 댓글[7] 첨부파일opqr  22-07-20
질문 특정값이 n초이상,n번 이상 연속될경우를 감지하는 함수… 댓글[4] 우수  22-07-17
질문 delay를 millis함수로 바꾸는데 질문있습니다. 댓글[12] 첨부파일뉴비에오  22-07-16
질문 피에조 부저로 맬로디 만들기인대 코딩 까지 했는데 아두… 댓글[2] 첨부파일mingu123  22-07-15
질문 블루투스와 안드로이드 연동관련 질문입니다! ㅎㅇㅎㅇ  22-07-14
질문 아두이노간 블루투스 통신에 대해서 질문있습니다 첨부파일뉴비에오  22-07-13
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전