arduino舵机摆锤

arduino程序功能:

arduino代码:

#include <Servo.h>
#define hongwai_pin 4
#define servo_pin 5
#define beep_pin 6
#define servo_z_rag 20
#define servo_f_rag 65
//#define beep_d 500
#define servo_speed 10

int servo_z_s=0;

class Hongwai{
  public:
    bool last_status=true;          //红外传暗器输出高电平代表未检测到障碍物
    bool now_status=true;
    void hongwai_init();
    bool hongwai_jiance();
};

void Hongwai::hongwai_init(){
  pinMode(hongwai_pin,INPUT);
};

//障碍物检测函数,如果出现障碍物则返回1,未出现障碍物返回0
bool Hongwai::hongwai_jiance(){
  if(digitalRead(hongwai_pin)==false)
    {
      delay(5);
      if(digitalRead(hongwai_pin)==false)
      {
        if(last_status==true)
        {
          last_status=false;
          Serial.println("zhangaiwu chuxian");
          return true;
        }
      }
    }
    if(digitalRead(hongwai_pin)==true)
    {
      delay(5);
      if(digitalRead(hongwai_pin)==true)
      {
        if(last_status==false)
        {
          Serial.println("zhangaiwu xiaoshi");
          last_status=true;
        }
      }
    }
    return false;
};

Hongwai hongwai;

class Beep_s{
  public:
    int beep_d;
    void beep_init();
    void di(int beep_d){
        digitalWrite(beep_pin,HIGH);
        delay(beep_d);
        digitalWrite(beep_pin,LOW);
      };
    void didi();
};

void Beep_s::beep_init(){
  pinMode(beep_pin,OUTPUT);
  digitalWrite(beep_pin,LOW);
};



void Beep_s::didi(){
  digitalWrite(beep_pin,HIGH);
  delay(beep_d);
  digitalWrite(beep_pin,HIGH);
  delay(beep_d);
  digitalWrite(beep_pin,LOW);
};

Beep_s beep;

Servo myservo;

//舵机正常运转
void servo_init(){
  pinMode(servo_pin,OUTPUT);
  myservo.attach(servo_pin);
  myservo.write(90);
};
//舵机正常运转
void servo_zy(){
  for(int i=90;i<=90+servo_z_rag;i++)
    {
      myservo.write(i);
      delay(servo_speed);
      if(hongwai.hongwai_jiance())
        servo_z_s=1;
    }
   for(int i=90+servo_z_rag;i>=90-servo_z_rag;i--)
   {
      myservo.write(i);
      delay(servo_speed);
      if(hongwai.hongwai_jiance())
        servo_z_s=1;
   }
   for(int i=90-servo_z_rag;i<=90;i++)
   {
      myservo.write(i);
      delay(servo_speed);
      if(hongwai.hongwai_jiance())
        servo_z_s=1;
   }
   
};
//舵机65度运转
void servo_fy(){
  for(int i=90;i<=90+servo_f_rag;i++)
    {
      myservo.write(i);
      delay(servo_speed);
    }
    beep.di(500);
   for(int i=90+servo_f_rag;i>=90-servo_f_rag;i--)
   {
      myservo.write(i);
      delay(servo_speed);
   }
   beep.di(500);
   for(int i=90-servo_f_rag;i<=90;i++)
   {
      myservo.write(i);
      delay(servo_speed);
   }
   beep.di(1000);
   delay(4600);
   beep.di(100);
   delay(200);
   beep.di(100);
   servo_z_s=0;
};




void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  servo_init();
  hongwai.hongwai_init();
  beep.beep_init();
  Serial.println("Init successful!");

}

void loop() {
  // put your main code here, to run repeatedly:
  if(servo_z_s==1)
      servo_fy();
  servo_zy();  
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen953

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值