BASIC4MCU | 질문게시판 | 답변 : 아두이노 rc카 조종
페이지 정보
작성자 master 작성일2018-08-21 10:27 조회3,907회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=5293
본문
digitalWrite(Right_motor_back,HIGH); analogWrite(Right_motor_back,control); analogWrite(Right_motor_back,200);처음엔 digitalWrite로 동작되는데
한 번 analogWrite를 사용하고나면
그 후부터는 digitalWrite가 동작하지 않습니다.
그래서 digitalWrite와 analogWrite를 마구 섞어서 사용했나보군요
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-08-21 오전 10:31:04// by Ok-Hyun Park//#include <boarddefs.h>#include <IRremote.h>#include <IRremoteInt.h>#include <ir_Lego_PF_BitStreamEncoder.h>//=====================================//차량 속도 제어#define level1 0x08 //속도 제어 레벨1#define level2 0x09 //속도 제어 레벨2#define level3 0x0A //속도 제어 레벨3#define level4 0x0B //속도 제어 레벨4#define level5 0x0C //속도 제어 레벨5#define level6 0x0D //속도 제어 레벨6#define level7 0x0E //속도 제어 레벨7#define level8 0x0F //속도 제어 레벨8//==============================#define c_fwd 0x10#define c_back 0x11#define c_left 0x12#define c_right 0x13#define c_stop 0x14#define c_sleft 0x15#define c_sright 0x16//==============================int RECV_PIN=2;IRrecv irrecv(RECV_PIN);decode_results results;//unsigned long last=millis();#define run_car 0x00FF18E7 //버튼2#define back_car 0x00FF4AB5 //버튼8#define left_car 0x00FF10EF //버튼4#define right_car 0x00FF5AA5 //버튼6#define stop_car 0x00FF38C7 //버튼5#define left_turn 0x00ff30CF //버튼1#define right_turn 0x00FF7A85 //버튼3//int Left_motor_back = 9; // PIN 9(PWM)int Left_motor_go = 5; // PIN 5(PWM)int Right_motor_go = 6; // PIN 6(PWM)int Right_motor_back=10; // PIN 10(PWM)int Right_motor_en = 8;int Left_motor_en = 7;//int control = 0; // PWM 제어량//void setup(){pinMode(Right_motor_en,OUTPUT); digitalWrite(Left_motor_en,1); // PIN 8(PWM)pinMode(Left_motor_en, OUTPUT); digitalWrite(Left_motor_en,1); // PIN 7(PWM)pinMode(13,OUTPUT);irrecv.enableIRIn();Serial.begin(9600);}//void run(){digitalWrite(Right_motor_go,HIGH); analogWrite(Right_motor_go,control); analogWrite(Right_motor_go,200);digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_back,0); //analogWrite(Right_motor_back,0);digitalWrite(Left_motor_go,HIGH); analogWrite(Left_motor_go,200); analogWrite(Left_motor_go,control-15);digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_back,0);//delay(time*100);}//void stop(){analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,0);analogWrite(Left_motor_go, 0); analogWrite(Left_motor_back, 0);//delay(time*100);}//void left(){analogWrite(Right_motor_go,200); analogWrite(Right_motor_back,0);analogWrite(Left_motor_go, 0); analogWrite(Left_motor_back, 0); //delay(time*100);}//void spin_left(){analogWrite(Right_motor_go,200); analogWrite(Right_motor_back, 0);analogWrite(Left_motor_go, 0); analogWrite(Left_motor_back,control); //delay(time*100);}//void right(){analogWrite(Right_motor_go, 0); analogWrite(Right_motor_back,0);analogWrite(Left_motor_go,200); analogWrite(Left_motor_back, 0); //delay(time*100);}//void spin_right(){analogWrite(Right_motor_go, 0); analogWrite(Right_motor_back,200);analogWrite(Left_motor_go,control); analogWrite(Left_motor_back, 0); //delay(time*100);}//void back(){analogWrite(Right_motor_go,0); analogWrite(Right_motor_back, 150);analogWrite(Left_motor_go, 0); analogWrite(Left_motor_back,control-15); //delay(time*100);}//void dump(decode_results *results){int count=results->rawlen;if(results->decode_type==UNKNOWN){ stop(); } //Serial.println("Could not decode message");/*else{if (results->decode_type==NEC ){ Serial.print("Decoded NEC: "); }else if(results->decode_type==SONY){ Serial.print("Decoded SONY: "); }else if(results->decode_type==RC5 ){ Serial.print("Decoded RC5: "); }else if(results->decode_type==RC6 ){ Serial.print("Decoded RC6: "); }Serial.print(results->value,HEX); Serial.print("("); Serial.print(results->bits,DEC); Serial.println(" bits)");}Serial.print("Raw("); Serial.print(count,DEC); Serial.print("): ");for(int i=0; i<count; i++){if((i%2)==1){ Serial.print( results->rawbuf[i]*USECPERTICK,DEC); }else { Serial.print(-(int)results->rawbuf[i]*USECPERTICK,DEC); }Serial.print(" ");}Serial.println("");*/}//void loop(){if(irrecv.decode(&results)){if(millis()-last>250){ last=millis(); // 250ms 마다digitalWrite(13,!digitalRead(13)); // LED 토글dump(&results);}if(results.value==run_car )run(); //前?//버튼2if(results.value==back_car )back(); //后退 //버튼8if(results.value==left_car )left(); //左?//버튼4if(results.value==right_car )right(); //右?//버튼6if(results.value==stop_car )stop(); //停?//버튼5if(results.value==left_turn )spin_left(); //左旋?//버튼1if(results.value==right_turn)spin_right(); //右旋?//버튼3irrecv.resume(); // Receive the next value}//while(Serial.available()){int r=Serial.read();switch(r){case c_fwd: run(); break;case c_back: back(); break;case c_left: left(); break;case c_right: right(); break;case c_stop: stop(); break;case c_sleft: spin_left(); break;case c_sright: spin_right(); break;case level1: control= 50; break;case level2: control=100; break;case level3: control=140; break;case level4: control=160; break;case level5: control=180; break;case level6: control=200; break;case level7: control=220; break;case level8: control=255; break;default: stop(); break;}}}
#define c_fwd 0x10#define c_back 0x11#define c_left 0x12#define c_right 0x13#define c_stop 0x14#define c_sleft 0x15#define c_sright 0x16시리얼용 컴맨드를 추가하세요
댓글 0
조회수 3,907등록된 댓글이 없습니다.