BASIC4MCU | 질문게시판 | 답변 : IR리모컨으로 DC모터 제어
페이지 정보
작성자 master 작성일2018-12-04 17:08 조회3,690회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6272
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-04 오후 5:13:28// by Ok-Hyun Park//IR리모컨으로 DC모터를 제어하려고 합니다.리모컨 수신은 잘 되는데 DC모터가 동작하고있을땐 리모컨 수신이 안됩니다.DC모터연결을 해제하면 리모컨수신이 다시 잘되는데 오로지 DC모터가 연결되어 동작하고있을때만 리모컨 수신이 안됩니다.답변 부탁드립니다.밑엔 사용된 소스입니다.//-----------------------------------#include#include#include#includeint RECV_PIN=A0; //define input pin on ArduinoIRrecv irrecv(RECV_PIN);decode_results results;//int ThermistorPin=A5; // Analog input pin for thermistor voltageint DIR1=3,DIR2=4,EN1=5;//void Motor_cw() { digitalWrite(DIR1,LOW); digitalWrite(DIR2,HIGH); digitalWrite(EN1,HIGH); } //시계방향 회전void Motor_stop(){ digitalWrite(DIR1,HIGH); digitalWrite(DIR2,HIGH); digitalWrite(EN1,LOW); } //정지//void setup(){Serial.begin(9600); while(!Serial); Serial.println("Speed 0 to 255");irrecv.enableIRIn(); // Start the receiverpinMode(DIR1,OUTPUT); pinMode(DIR2,OUTPUT); pinMode(EN1,OUTPUT);//analogWrite(3,1);}//int mode=0; // 수동모드//void loop(){if(irrecv.decode(&results)){if(results.value==0x00FF10EF){ mode=0; Serial.println("수동모드"); Motor_stop(); } //4번 버튼 수동모드if(results.value==0x00FF30CF){ mode=0; Serial.println("미풍"); Motor_cw(); analogWrite(EN1,120); } //1번 버튼 미풍if(results.value==0x00FF18E7){ mode=0; Serial.println("약풍"); Motor_cw(); analogWrite(EN1,175); delay(2000); Motor_stop(); } //2번 버튼 약풍if(results.value==0x00FF7A85){ mode=0; Serial.println("강풍"); Motor_cw(); analogWrite(EN1,255); } //3번 버튼 강풍if(results.value==0x00FF6897){ mode=0; Serial.println("정지"); Motor_stop(); } //0번 버튼 수동정지if(results.value==0x00FF38C7){ mode=1; Serial.println("자동모드"); Motor_stop(); } //5번 버튼 자동모드if(results.value==0x00FF5AA5){ mode=0; Serial.println("수동모드"); Motor_stop(); } //6번 버튼 자동모드끔irrecv.resume(); // Receive the next value}//if(mode==1){ // 자동모드float R=2000.0; // Fixed resistance in the voltage dividerfloat R0=5369; // R0 10kΩ at T0float T0=298.15; // T0(25 °C=298.15 K)float B=3434; // 4200int Vo=analogRead(ThermistorPin);float Rt=R*(1023.0/(float)Vo-1.0); //써미스터 저항 측정float T=1.0/(1.0/T0+(1/B)*log((Rt/R0)));float C=T-301.15;//Motor_cw();//if (C>=33)analogWrite(EN1,255);else if(C<32)analogWrite(EN1,150);else if(C<10||C>50)Motor_stop();else if(results.value==0x00FF5AA5)break; //6번 버튼 자동모드끔}}
댓글 0
조회수 3,690등록된 댓글이 없습니다.