【Arduino16】薄膜按键控制舵机实验

硬件准备

 4*4矩阵按键:1个

9g 舵机:1个

杜邦线:11根

硬件连线

1、将舵机红线接到 5V 电源上

2、将橙线接到 3 号引脚

3、将棕线接到 GND 上

4、分别用杜邦线将4*4矩阵按键的8个接口按照顺序接到开发板的4、5、6、7、8、9、10、11接口

软件程序

#include <Servo.h>//头文件
Servo myservo;//实例化

const int servopin = 3;//舵机引脚

const int rownum = 4;//行数量
const int colnum = 4;//列数量
const int rowpins[rownum] = {4,5,6,7};
const int colpins[colnum] = {8,9,10,11};
int rowval = 0;//行变量
int colval = 0;//列变量

const char keys[rownum][colnum] = {  //键值
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
int angle = 0;//舵机角度变量

void setup(){
  Serial.begin(9600);
  myservo.attach(servopin);//舵机引脚为9

  for (rowval = 0; rowval < rownum; rowval++){
    pinMode(rowpins[rowval],INPUT);//行引脚设为输入模式
    digitalWrite(rowpins[rowval],HIGH);//行引脚输出高电平
  }

  for (colval = 0; colval < colnum; colval++){
    pinMode(colpins[colval],OUTPUT);//列引脚设为输出模式
    digitalWrite(colpins[colval],HIGH);//列引脚输出高电平
  }

}

void loop(){
  char key = getKey();//获取按键模拟值
  delay(200);   //消抖
  if (key !=0){
    Serial.print("按键值:");
    Serial.println(key);
    turn(key);//转动相应角度
    Serial.println(" ");
  }
}

char getKey(){
  char key = 0;
  for (colval = 0; colval < colnum; colval++){//变量所有列
    digitalWrite(colpins[colval],LOW);//输出低电平
    for (rowval = 0; rowval < rownum; rowval++){//遍历所有行
      if (digitalRead(rowpins[rowval]) == LOW){
        key = keys[rowval][colval];
      }

    }
    digitalWrite(colpins[colval],HIGH);//输出高电平
  }
  return key;//返回按键值
}

void turn(char key){
  switch (key){
    case '0':
      myservo.write(0);
      Serial.println("角度为0");
      break;
    case '1':
      myservo.write(20);
      Serial.println("角度为20");
      break;
    case '2':
      myservo.write(40);
      Serial.println("角度为40");
      break;
    case '3':
      myservo.write(60);
      Serial.println("角度为60");
      break;
    case '4':
      myservo.write(80);
      Serial.println("角度为80");
      break;
    case '5':
      myservo.write(100);
      Serial.println("角度为100");
      break;
    case '6':
      myservo.write(120);
      Serial.println("角度为120");
      break;
    case '7':
      myservo.write(140);
      Serial.println("角度为140");
      break;
    case '8':
      myservo.write(160);
      Serial.println("角度为160");
      break;
    case '9':
      myservo.write(180);
      Serial.println("角度为180");
      break;
    default:
      Serial.println("请按0~9");
  }
}

成品展示

【Arduino16】薄膜按键控制舵机实验

总结

通过本次实验,我成功将薄膜按键与舵机联合使用,对于二者的运用变得更加熟练。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值