基于米思齐的电磁炮基础代码

20 篇文章 2 订阅

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主程序:
在这里插入图片描述

代码:


#include <Servo.h>

volatile int 按钮;
volatile int 充电继电器;
volatile int 发射继电器;
volatile int 充电继电器状态;
volatile int 发射继电器状态;
volatile int 舵机1角度;
volatile int 舵机2角度;
Servo servo_6;
Servo servo_7;

void 调试() {
  Serial.print(String("A4:") + String(analogRead(A4)));
  Serial.print(String("A5:") + String(analogRead(A5)));
  Serial.println(String("SW:") + String(analogRead(A3)));
}

void 舵机控制() {
  if (analogRead(A4) <= 300) {
    delay(20);
    if (analogRead(A4) <= 300) {
      舵机1角度 = 舵机1角度 - 2;
      if (舵机1角度 <= 0) {
        舵机1角度 = 0;

      }
      servo_6.write(舵机1角度);
      delay(10);

    }

  }
  if (analogRead(A4) >= 700) {
    delay(20);
    if (analogRead(A4) >= 700) {
      舵机1角度 = 舵机1角度 + 2;
      if (舵机1角度 >= 140) {
        舵机1角度 = 140;

      }
      servo_6.write(舵机1角度);
      delay(10);

    }

  }
  if (analogRead(A5) <= 300) {
    delay(20);
    if (analogRead(A5) <= 300) {
      舵机2角度 = 舵机2角度 - 2;
      if (舵机2角度 <= 0) {
        舵机2角度 = 0;

      }
      servo_7.write(舵机2角度);
      delay(10);

    }

  }
  if (analogRead(A5) >= 700) {
    delay(20);
    if (analogRead(A5) >= 700) {
      舵机2角度 = 舵机2角度 + 2;
      if (舵机2角度 >= 160) {
        舵机2角度 = 160;

      }
      servo_7.write(舵机2角度);
      delay(10);

    }

  }
}

boolean mixly_digitalRead(uint8_t pin) {
  pinMode(pin, INPUT);
  boolean _return =  digitalRead(pin);
  pinMode(pin, OUTPUT);
  return _return;
}

void 继电器控制() {
  if (mixly_digitalRead(按钮) == LOW) {
    delay(50);
    if (mixly_digitalRead(按钮) == LOW) {
      if (充电继电器状态 == 0) {
        充电继电器状态 = 1;
        pinMode(充电继电器, OUTPUT);
        digitalWrite(充电继电器,HIGH);
        发射继电器状态 = 0;
        pinMode(发射继电器, OUTPUT);
        digitalWrite(发射继电器,LOW);
        Serial.println(String("充电开,") + String("发射关"));
        while (mixly_digitalRead(按钮) == LOW) {
        }

      } else if (充电继电器状态 == 1) {
        充电继电器状态 = 2;
        pinMode(充电继电器, OUTPUT);
        digitalWrite(充电继电器,LOW);
        发射继电器状态 = HIGH;
        pinMode(发射继电器, OUTPUT);
        digitalWrite(发射继电器,HIGH);
        while (mixly_digitalRead(按钮) == LOW) {
        }
        Serial.println(String("充电关,") + String("发射开"));
      }

    } else if (充电继电器状态 == 2) {
      充电继电器状态 = 0;
      pinMode(充电继电器, OUTPUT);
      digitalWrite(充电继电器,LOW);
      发射继电器状态 = HIGH;
      pinMode(发射继电器, OUTPUT);
      digitalWrite(发射继电器,LOW);
      while (mixly_digitalRead(按钮) == LOW) {
      }
      Serial.println(String("充电关,") + String("充电关"));
    }

  }
}

void setup(){
  按钮 = 2;
  充电继电器 = 13;
  发射继电器 = 12;
  充电继电器状态 = 0;
  发射继电器状态 = 0;
  舵机1角度 = 90;
  舵机2角度 = 90;
  servo_6.attach(6);
  servo_7.attach(7);
  pinMode(按钮, INPUT);
  充电继电器状态 = 0;
  发射继电器状态 = 0;
  pinMode(充电继电器, OUTPUT);
  digitalWrite(充电继电器,LOW);
  pinMode(发射继电器, OUTPUT);
  digitalWrite(发射继电器,LOW);
  servo_6.write(舵机1角度);
  delay(0);
  servo_7.write(舵机2角度);
  delay(0);
  Serial.begin(9600);
}

void loop(){
  继电器控制();
  舵机控制();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

创客阿蛋

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

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

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

打赏作者

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

抵扣说明:

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

余额充值