青少年机器人技术等级考试实际操作试卷(四级)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);
}
}
作者:newcode 更多资源请关注纽扣编程微信公众号
从事机器人比赛、机器人等级考试、少儿scratch编程、信息学奥赛等研究学习