实验:两个按键控制led灯,同时舵机连续正反方向15°旋转

超级程序猿飞 2023-04-14 17:43:32

OK,今天做了一个实验,就是舵机和按键控制led灯的实验

本来是把舵机程序放在定时中断2中的

后来发觉舵机在工作,也就是进入延时的时候

按键是不工作的

我的理解是定时中断应该是同时动作

后来把舵机放在了主函数里

按键放在了定时中断里

搞定了

现在附上代码:

#include<Servo.h>
#include<TimerOne.h>
#include<MsTimer2.h>      //调用定时器T2的库文件
#include<avr/io.h>
Servo myservo;
const int GB = 12;
const int RB = 13;
int SensorState = 0;
int ok1=1;
int ok2=1;


void duoji()
{
    sei();
    Serial.println("anjian");
  if(digitalRead(GB)==LOW)
{
  delay(1000);
  if(digitalRead(GB)==LOW)
  {
    ok1=-ok1;
    
    Serial.println("GB");
  }
}
if(digitalRead(RB)==LOW)
{
  delay(1000);
  if(digitalRead(RB)==LOW)
  {
    ok2=-ok2;
    digitalWrite(4,HIGH);
    Serial.println("RB");
  }
}
if(ok1==-1)
{
  digitalWrite(2,HIGH);
}
else
{
  digitalWrite(2,LOW);
}
if(ok2==-1)
{
  digitalWrite(4,HIGH);
}
else
{
  digitalWrite(4,LOW);
}
}




void setup() {
  // put your setup code here, to run once:
  myservo.attach(9);
  myservo.write(0);
  pinMode(GB, INPUT);
  pinMode(RB, INPUT);
  pinMode(2,OUTPUT);
  pinMode(4,OUTPUT);
  MsTimer2::set(100,duoji);   //每100ms触发中断进入一次LED1函数
  MsTimer2::start(); 
     //计时开始
Serial.begin(115200);
  delay(1000);
}

void loop() {
      myservo.write(0);
      delay(1000);
      myservo.write(15);
      delay(1000);
      myservo.write(30);
      delay(1000);
      myservo.write(45);
      delay(1000);
      myservo.write(60);
      delay(1000);
      myservo.write(75);
      delay(1000);
      myservo.write(90);
      delay(1000);
      myservo.write(75);
      delay(1000);
      myservo.write(60);
      delay(1000);
      myservo.write(45);
      delay(1000);
      myservo.write(30);
      delay(1000);
      myservo.write(15);
      delay(1000);
      myservo.write(0);

}

代码附上

接口:

舵机        arduino           按键        led         电源模块

pwm             9                                 

                    12               GB

                    13               RB

                     2                              I/O

                     4                              I/O

ok,实验结果就是舵机

正15°每次,从0-90,然后再从90-0,每15°旋转回来

按下GB和RB相应的灯点亮和关闭

...全文
339 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yumul2018 2024-06-28
  • 打赏
  • 举报
回复

想知道怎么连主板,看不懂

11

社区成员

发帖
与我相关
我的任务
社区描述
阿弥陀佛
物联网 高校 新疆·阿克苏地区
社区管理员
  • 宇宙作家
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧