這是一個關于arduino紅外避障的程序- #define L_hw A0 //左紅外
- #define R_hw A1 //右紅外
- #define motor_A1 7
- #define motor_A2 8
- #define motor_A 9
- #define motor_B1 6
- #define motor_B2 5
- #define motor_B 3
- void setup() {
- pinMode(L_hw,INPUT);
- pinMode(R_hw,INPUT);
- pinMode(motor_A1,OUTPUT);
- pinMode(motor_A2,OUTPUT);
- pinMode(motor_A,OUTPUT);
- pinMode(motor_B1,OUTPUT);
- pinMode(motor_B2,OUTPUT);
- pinMode(motor_B,OUTPUT);
- Serial.begin(9600); // 初始化串口
- }
- void loop() {
- bizhang(); //紅外避障子程序
- }
- void qianjin(){
- digitalWrite(motor_A1,1);
- digitalWrite(motor_A2,0);
- analogWrite(motor_A,100); //PWM
- digitalWrite(motor_B1,1);
- digitalWrite(motor_B2,0);
- analogWrite(motor_B,100); //PWM
- }
- void houtui(){
- digitalWrite(motor_A1,0);
- digitalWrite(motor_A2,1);
- analogWrite(motor_A,100); //PWM
- digitalWrite(motor_B1,0);
- digitalWrite(motor_B2,1);
- analogWrite(motor_B,100); //PWM
- }
- void zuozhuan(){
- digitalWrite(motor_A1,0);
- digitalWrite(motor_A2,1);
- analogWrite(motor_A,100); //PWM
- digitalWrite(motor_B1,1);
- digitalWrite(motor_B2,0);
- analogWrite(motor_B,100); //PWM
- }
- void youzhuan(){
- digitalWrite(motor_A1,1);
- digitalWrite(motor_A2,0);
- analogWrite(motor_A,100); //PWM
- digitalWrite(motor_B1,0);
- digitalWrite(motor_B2,1);
- analogWrite(motor_B,100); //PWM
- }
- void bizhang(){ //避障
- if(digitalRead(L_hw)==1&&digitalRead(R_hw)==1){
- qianjin();
- }
- else if(digitalRead(L_hw)==1&&digitalRead(R_hw)==0){
- zuozhuan();
- }
- else if(digitalRead(L_hw)==0&&digitalRead(R_hw)==1){
- youzhuan();
- }
- else if(digitalRead(L_hw)==0&&digitalRead(R_hw)==0){
- houtui();
- delay(2000);
- zuozhuan();
- delay(500);
- }
- else{
- houtui();
- }
- }
復制代碼
|