青少年机器人技术等级考试实际操作试卷(四级)2021-03 方案参考

马达示例程序

#include <RS_Motor.h>

RS_Motor motor_left;
RS_Motor motor_right;
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:
    motor_left.run(1,-40);
    motor_left.run(2,-40);
}

红外传感器 示例代码
https://www.cnblogs.com/myeln/articles/16973642.html

#include<IRremote.h>

long ir_value;
IRrecv iRrecv(A0);
decode_results results;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  iRrecv.enableIRIn();
}

void loop() {
  // put your main code here, to run repeatedly:
  if(iRrecv.decode(&results)){
    ir_value=results.value;
    Serial.println(ir_value,HEX);
    iRrecv.resume();
  }
}

超声传感器示例代码
https://www.cnblogs.com/myeln/articles/16973664.html

const int trigPin=12;
const int echoPin=13;

float getDistance(){
  digitalWrite(trigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin,LOW);
  float distance=pulseIn(echoPin,HIGH)/58.00;
  delay(10);
  return distance;
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(trigPin,OUTPUT);
  pinMode(echoPin,INPUT);
}

void loop() {
  float dis=getDistance();
  Serial.println(dis);
  delay(100);
}

流程图

完整代码

#include<IRremote.h>
#include <RS_Motor.h>

const int ledPin1=2;
const int ledPin2=3;
const int irPin=A0;
const int trigPin=12;
const int echoPin=13;
long ir_value;
IRrecv iRrecv(irPin);
decode_results results;

RS_Motor motor_left;
RS_Motor motor_right;

int startstop;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(ledPin1,OUTPUT);
  pinMode(ledPin2,OUTPUT);
  pinMode(trigPin,OUTPUT);
  pinMode(echoPin,INPUT);
  iRrecv.enableIRIn();
  startstop=0;
}

float getDistance(){
  digitalWrite(trigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin,LOW);
  float distance=pulseIn(echoPin,HIGH)/58.00;
  delay(10);
  return distance;
}


void loop() {
  // put your main code here, to run repeatedly:
  if(iRrecv.decode(&results)){
    ir_value=results.value;
    Serial.println(ir_value,HEX);

    switch(ir_value){
      case 0xFF30CF:
          startstop++;
          break;
    }
    if(startstop==3){
      startstop=0;
    }
    iRrecv.resume();
  }

  if(startstop==1){
    motor_left.run(1,0);
    motor_left.run(2,0);
    digitalWrite(ledPin1,1);
    digitalWrite(ledPin2,1);
        
  }else if(startstop==2){
    if(getDistance()<=8){
       motor_left.run(1,0);
       motor_left.run(2,0);
       digitalWrite(ledPin1,1);
       //闪烁
       digitalWrite(ledPin2,0);
       delay(300);
       digitalWrite(ledPin2,1);
       delay(300);
    }else{
      digitalWrite(ledPin1,1);
      digitalWrite(ledPin2,0);
       motor_left.run(1,-40);
       motor_left.run(2,-40);
    }
  }else{
    digitalWrite(ledPin1,0);
    digitalWrite(ledPin2,0);
    motor_left.run(1,0);
    motor_left.run(2,0);
  }
}


posted @ 2022-12-11 13:33  new-code  阅读(222)  评论(0)    收藏  举报