질문게시판 > 아두이노 작동 오류 질문입니다

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

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

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

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

BASIC4MCU > 질문게시판

아두이노 작동 오류 질문입니다

페이지 정보

작성자 dacapo 작성일20-11-29 17:32 조회14,267회 댓글4건

본문

 4개의 발열패드를 각각 제어하는 코드입니다

자동(발열패드에 압력을 직접 가해 작동하는 것) 은 잘 되는데

수동(블루투스로 값을 받아 작동하는 것) 은 만약 1번 발열패드를 키기 위해 'u' 값을 넣으면 4개가 다 켜지고

끄기 위해 '6' 값을 넣으면 꺼지지 않습니다 off에 cnt 값을 0으로 놓으면 꺼지긴 하나 4개가 다 꺼집니다

코드엔 이상이 없는거 같은데 왜 작동이 제대로 안되는지 모르겠습니다

 

/*  압력센서 좌 우 2개 씩 사용하여 눌린쪽 만 히터 on , 온도 제어

**************************************************************************/

#include <SoftwareSerial.h>

 

SoftwareSerial bluetooth(17,16);

 

 

#define HeaterLF  12  // 

#define HeaterLB  11  // 

#define HeaterRF  10  // 

#define HeaterRB  9  //

 

#define LED_LF  5  // 

#define LED_LB  6  // 

#define LED_RF  7  // 

#define LED_RB  8  //

 

#define LED_1  4  // 

#define LED_2  3  // 

#define LED_3  2  // 

 

 int cnt = 0;           // 수동 1 , 자동 0 선택

 int VR_map = 0;

 int pre_cnt = 700;

 int pressureLF = 0;

 int pressureLB = 0;

 int pressureRF = 0;

 int pressureRB = 0;

 

 int TEM_sLF = 0;

 int TEM_sLB = 0;

 int TEM_sRF = 0;

 int TEM_sRB = 0;

 

 int lfon = 0; int lbon = 0; int rfon = 0; int rbon = 0;

 int tem_cnt = 355 ;   // 최대  355,   중간  379,   최저 417

 int heter_pwm = 50;

 int BL_pwm = 50;

 

void setup() {

  Serial.begin(9600); 

  Serial2.begin(9600);   // 블루투스

 

  pinMode(HeaterLF, OUTPUT);  pinMode(HeaterLB, OUTPUT);    

  pinMode(HeaterRF, OUTPUT);  pinMode(HeaterRB, OUTPUT);    

  pinMode(LED_LF, OUTPUT);  pinMode(LED_LB, OUTPUT);    

  pinMode(LED_RF, OUTPUT);  pinMode(LED_RB, OUTPUT);    

  pinMode(LED_1, OUTPUT);  pinMode(LED_2, OUTPUT);    

  pinMode(LED_3, OUTPUT); 

  pinMode(A0, INPUT);pinMode(A1, INPUT); pinMode(A2, INPUT);  

  pinMode(A3, INPUT);pinMode(A4, INPUT); pinMode(A5, INPUT);

  pinMode(A6, INPUT);pinMode(A7, INPUT); pinMode(A8, INPUT);

  

 

}

String str ="";

 

void loop() {

 

  if (Serial2.available())

  {

    char cmd = (char)Serial2.read();

    

    if(cmd == 'u') {

      Serial.println("1 on---------"); 

      cnt = 1;    // 수동

      LF_on();

      delay(10);         

    } else if(cmd == 'l') {

      Serial.println("2 on--------"); 

      cnt = 1;    // 수동

      LB_on();

      delay(10);        

    } else if(cmd == 'd') {

      Serial.println("3 on--------"); 

      cnt = 1;    // 수동

      RF_on();

      delay(10);        

    }else if(cmd == 'r') {

      Serial.println("4 on--------"); 

      cnt = 1;    // 수동

      RB_on();

      delay(10); 

             

    }else if(cmd == '6') {

      Serial.println("1 off--------"); 

      cnt = 1;    // 수동

      LF_off();

      delay(10);        

    }else if(cmd == '7') {

      Serial.println("2 off-------"); 

      cnt = 1;    // 수동

      LB_off();

      delay(10);        

    }else if(cmd == '8') {

      Serial.println("3 off-------"); 

      cnt = 1;    // 수동

      RF_off();

      delay(10);         

    }else if(cmd == '9') {

      Serial.println("4 off-------"); 

      cnt = 1;                                // 수동

      RB_off();

      delay(10);   

           

    }else if(cmd == 's') {

      Serial.println("auto-------"); 

      cnt = 0;                                 // 자동

      delay(10);        

    

    }else if(cmd == '1') {

      Serial.println("1 t BL_pwm = 50"); 

      cnt = 1;

      BL_pwm = 50; 

      tem_cnt = 417;

      digitalWrite(LED_1, HIGH);

      digitalWrite(LED_2, LOW);

      digitalWrite(LED_3, LOW);  

    }else if(cmd == '2') {

      Serial.println("2  BL_pwm = 130"); 

       cnt = 1;

       BL_pwm = 130; 

       tem_cnt = 380;

       digitalWrite(LED_1, HIGH);

       digitalWrite(LED_2, HIGH);

       digitalWrite(LED_3, LOW);       

    }else if(cmd == '3') {

      Serial.println("3  BL_pwm = 250"); 

       cnt = 1;

       BL_pwm = 220;  

       tem_cnt = 355;

       digitalWrite(LED_1, HIGH);

       digitalWrite(LED_2, HIGH);

       digitalWrite(LED_3, HIGH);                   

    }   

  }   

   TEM_sLF = analogRead(A1); 

   TEM_sLB = analogRead(A3);

   TEM_sRF = analogRead(A5);

   TEM_sRB = analogRead(A7);

   Serial.print("TEM_sLF  :  ");  Serial.print(TEM_sLF );

   Serial.print("  - TEM_sLB  :  ");  Serial.print(TEM_sLB );

   Serial.print("  - TEM_sRF  :  ");  Serial.print(TEM_sRF );

   Serial.print("  - TEM_sRB  :  ");  Serial.println(TEM_sRB );

   

   delay(100);

   

 if(cnt == 1){

   if ((lfon == 1)&& (TEM_sLF < tem_cnt)){

      analogWrite(HeaterLF,0);

   }else{

     analogWrite(HeaterLF,BL_pwm);

   }

   

   if ((lbon == 1)&& (TEM_sLB < tem_cnt)){

      analogWrite(HeaterLB,0);

   }else{

     analogWrite(HeaterLB,BL_pwm);

   }

   

   if ((rfon == 1)&& (TEM_sRF < tem_cnt)){

      analogWrite(HeaterRF,0);

   }else{

     analogWrite(HeaterRF,BL_pwm);

   }

   

   if ((rbon == 1)&& (TEM_sRB < tem_cnt)){

      analogWrite(HeaterRB,0);

   }else{

     analogWrite(HeaterRB,BL_pwm);

   }

 }

 if(cnt == 0){

    int vr = analogRead(A8);  

   VR_map = map(vr, 0,1023, 3,1);

   Serial.print(" VR_map :  ");  Serial.println(VR_map );

   temp_con();

   pressureLF = analogRead(A0);  

   pressureLB = analogRead(A2);  

   pressureRF = analogRead(A4);  

   pressureRB = analogRead(A6);  

   delay(100);

   Serial.print("pressureLF  :  ");  Serial.print(pressureLF );

   Serial.print("  - pressureLB  :  ");  Serial.print(pressureLB );

   Serial.print("  - pressureRF  :  ");  Serial.print(pressureRF );

   Serial.print("  - pressureRB  :  ");  Serial.println(pressureRB );

   Serial.println("*******************************************************************************");

   delay(50);

   

   if (pressureLF < pre_cnt ){     // 왼쪽 위 감지 되면 히터 작동

      digitalWrite(LED_LF,HIGH);

      if (TEM_sLF < tem_cnt){

         analogWrite(HeaterLF,0);

      }

      else{

         analogWrite(HeaterLF,heter_pwm);

         delay(100);

      }

   }else{

      digitalWrite(LED_LF,LOW);

      analogWrite(HeaterLF,0);

      delay(1000);

    }

   

    if (pressureLB < pre_cnt ){     // 왼쪽 위 감지 되면 히터 작동

      digitalWrite(LED_LB,HIGH);

      if (TEM_sLB < tem_cnt){

         analogWrite(HeaterLB,0);

       }

       else{ 

         analogWrite(HeaterLB,heter_pwm);

         delay(100);

       }

    }else{

      digitalWrite(LED_LB,LOW);

      analogWrite(HeaterLB,0);

      delay(1000);

    }

 

    if (pressureRF < pre_cnt ){     // 왼쪽 위 감지 되면 히터 작동

      digitalWrite(LED_RF,HIGH);

       if (TEM_sRF < tem_cnt){

         analogWrite(HeaterRF,0);

       }

       else{ 

         analogWrite(HeaterRF,heter_pwm);

         delay(100);

       }

    }else{

      digitalWrite(LED_RF,LOW);

      analogWrite(HeaterRF,0);

      delay(1000);

    }

 

    if (pressureRB < pre_cnt ){     // 왼쪽 위 감지 되면 히터 작동

      digitalWrite(LED_RB,HIGH);

       if (TEM_sRB < tem_cnt){

         analogWrite(HeaterRB,0);

       }

       else{ 

         analogWrite(HeaterRB,heter_pwm);

         delay(100);

       }

    }else{

      digitalWrite(LED_RB,LOW);

      analogWrite(HeaterRB,0);

      delay(1000);

    }

  }

}

 

void LF_on()

{    

    lfon = 1;

    digitalWrite(LED_LF,HIGH);

    analogWrite(HeaterLF,BL_pwm);

    delay(100);

}

 

void LF_off()

{    

    digitalWrite(LED_LF,LOW);

    analogWrite(HeaterLF,0);

    delay(100);

}

 

void LB_on()

{

      lbon = 1;

      digitalWrite(LED_LB,HIGH);

      analogWrite(HeaterLB,BL_pwm);

      delay(100);

}

 

void LB_off()

{

      digitalWrite(LED_LB,LOW);

      analogWrite(HeaterLB,0);

      delay(1000);

}

 

void RF_on()

{

      rfon = 1;

      digitalWrite(LED_RF,HIGH);

      analogWrite(HeaterRF,BL_pwm);   //heter_pwm

      delay(100);

 }

 

void RF_off()

{    

      digitalWrite(LED_RF,LOW);

      analogWrite(HeaterRF,0);

      delay(100);

    }

 

void RB_on()

{

      rbon = 1;

      digitalWrite(LED_RB,HIGH);

      analogWrite(HeaterRB,BL_pwm);

      delay(100);

   }

 

void RB_off()

{    

      digitalWrite(LED_RB,LOW);

      analogWrite(HeaterRB,0);

      delay(100);

    }

    

void temp_con()

{

    Serial.println("11111");

   if (VR_map == 1){

     heter_pwm = 50;

     Serial.print("heter_pwm  ;  ");

     Serial.println(heter_pwm);

     digitalWrite(LED_1, HIGH);

     digitalWrite(LED_2, LOW);

     digitalWrite(LED_3, LOW);  

     delay(100);

   }

     

    if (VR_map == 2){

     heter_pwm = 130;

     Serial.print("heter_pwm  ;  ");

     Serial.println(heter_pwm);

     digitalWrite(LED_1, HIGH);

     digitalWrite(LED_2, HIGH);

     digitalWrite(LED_3, LOW);  

     delay(100);

    }

     

    if (VR_map == 3){

     heter_pwm =220;

     Serial.print("heter_pwm  ;  ");

     Serial.println(heter_pwm);

     digitalWrite(LED_1, HIGH);

     digitalWrite(LED_2, HIGH);

     digitalWrite(LED_3, HIGH);  

     delay(100);

    }

}

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

댓글 : 4

조회수 : 14,267

master님의 댓글

master 작성일

cnt = 1;                                // 수동
      cnt = 0;                                // 자동
cnt로 자동/수동 구분하고 있나요?
그렇다면 루푸문에서 수동에 관한 코드는 제거되야 합니다.
 

 if(cnt == 1){
  if ((lfon == 1)&& (TEM_sLF < tem_cnt)){      analogWrite(HeaterLF,0);  }  else{    analogWrite(HeaterLF,BL_pwm);  }
  if ((lbon == 1)&& (TEM_sLB < tem_cnt)){      analogWrite(HeaterLB,0);  }  else{    analogWrite(HeaterLB,BL_pwm);  }
  if ((rfon == 1)&& (TEM_sRF < tem_cnt)){      analogWrite(HeaterRF,0);  }  else{    analogWrite(HeaterRF,BL_pwm);  }
  if ((rbon == 1)&& (TEM_sRB < tem_cnt)){      analogWrite(HeaterRB,0);  }  else{    analogWrite(HeaterRB,BL_pwm);  }
 }

dacapo님의 댓글

dacapo 댓글의 댓글작성일

정말 감사합니다 제가 원했던대로 작동이 됩니다
궁금한 점이 왜 수동에 관한 루프문이 삭제가 되어야 하는지 잘 모르겠습니다

master님의 댓글

master 댓글의 댓글작성일

수동은 블루투스로 제어하는 것인데
루프에서 불루투스와 상관없이 계속 제어를 하면 수동이 아니고 자동인 것이죠

dacapo님의 댓글

dacapo 작성일

아 그런거였군요 정말 감사합니다 도움이 많이 되었습니다

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 아두이노 코딩 결합 댓글[1] hohoje 새글 22-08-18
질문 UART통신 스위치 사용 댓글[4] 픽공부 새글 22-08-18
질문 아두이노코딩 질문사항 댓글[1] kai5439  22-08-16
질문 해석좀 해주세요 댓글[2] bubu  22-08-14
질문 lcd 1602에 특수문자를 출력하는 방법을 알고싶습니… 댓글[3] dndktn  22-08-12
질문 stm32 wifi 파일전송 댓글[3] 하리  22-08-11
질문 회로 구성 수정 댓글[2] 첨부파일픽공부  22-08-11
질문 아두이노 와이파이통신 질문 있습니다 댓글[1] 학생  22-08-11
질문 포토다이오드와의 연결 질문합니다. 댓글[7] 첨부파일박윤모  22-08-10
질문 회로 구성 댓글[4] 픽공부  22-08-10
질문 아두이노 센서, 와이파이, 블루투스 연결 댓글[1] pattern  22-08-10
질문 PIC 블루투스 연결 댓글[19] 픽공부  22-08-09
질문 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
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전