等级考试四级学习小组 加入小组

288个成员 29个话题 创建时间:2019-02-21

2019年9月四级实操真题摇头小风扇代码示例程序

发表于11-11 825次查看

原题:

编程实操题(共1题,每题100分,共100分)
主题:摆头风扇机器人
器件:三四级等级考试套件
要求:
(1)现场搭建电动风扇结构
(2)按下按键(后手松开),马达驱动的电凤扇转起
(3)舵机控制的风扇左右摆头
(4)LED作为指示灯亮起
(5)电位器可以控制风扇速度
(6)再按下按键,电风扇停止转动,摆头同时也停止,LED灯熄灭
(7)程序编写采用CC++语言,不得使用图形化软件编写。
(8)风扇启停的运动控制程序,不得采用库的数调用
(9)考试结束,考生将代码拷贝上交

示例程序:注:更多的代码示例程序在最新版的zBlockly中自带的arduino IDE中的示例程序中。大家可以下载参考。

/*************************************************
 * 本示例程序是2019年9月四级等级考试实操真题示例程序
 * 由于四级考察内容没有按键消抖,所以本程序并没有对按键进行消抖
***************************************************/
#include<Servo.h>
Servo myservo;
const int D1=6;//电机主引脚
const int D1f=5;//电机辅助引脚
const int D2=10;//按键IO引脚
const int D3=11;//舵机IO引脚
const int D4=13;//LED引脚
const int ZMDA1=A0;//旋钮电位器引脚
int keyNum=0;//设置按键初始值为0
int pos=90;//定义舵机角度
void scanKey(){
    if(digitalRead(D2)){
      keyNum++;
    if(keyNum==2){
      keyNum=0;
    }
    }
  }
void setup() {
  pinMode(D1f,OUTPUT);//设置D1辅助管脚接电机
  pinMode(D1,OUTPUT);//设置D1主管脚电机
  pinMode(D2,INPUT);//按键输入
  pinMode(D3,OUTPUT);//舵机为输出
  pinMode(ZMDA1,INPUT);//旋钮电位器输入
  Serial.begin(9600);
  myservo.attach(D3);
  digitalWrite(D1f,LOW);
  digitalWrite(D1,LOW);
  myservo.write(pos);  
}

void loop() {
  scanKey();
  if(keyNum==1){
    analogWrite(D1f,map(analogRead(ZMDA1),0,1023,0,255));
    digitalWrite(D4,1);
    for(;pos<=170;pos+=5){
      myservo.write(pos);
      delay(20);
      scanKey(); 
      if(keyNum==0){
        break;
      }     
    }
    for(;pos>=0;pos-=5){
      myservo.write(pos);
      delay(20); 
      scanKey(); 
      if(keyNum==0){
        break;
      }
    }
    Serial.println(map(analogRead(ZMDA1),0,1023,0,255));
    Serial.println(keyNum);
  }
  else{
    digitalWrite(D1f,0);
    digitalWrite(D4,0);
    }
   }

 

1回复
发表回复
你还没有登录,请先 登录或 注册!