基于arduino制作的19年电子设计大赛H题电磁炮

花了几天时间做出来的电磁炮。三种模式:模式一,调距离射靶。模式二,调角度,距离射靶。模式三,全自动射靶(利用激光测距来瞄靶)
#################################程序###########################

//遥控
#include <IRremote.h>
//LCD1602
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);//0x27   0x3F
//舵机
#include <Servo.h>
Servo myservo;
Servo myservo2;
const int irReceiverPin =7;//遥控引脚
const int relayPin =3;//继电器引脚
int tu=0;//模式
int JL=0;//距离
int JL2=0;//模式2距离
unsigned int JL3;//模式3距离
int jiaodu=0;//角度
int jiaodu2=0;//模式2角度
int jiaodu3=0;//模式三角度
int zh=0;//模式2切换
int pin =4;//激光
int jishi;
int jiaodu4=0;
int JL4=0;
int jiaodu5=0;
unsigned long duration;//模式三激光探测距离

IRrecv irrecv(irReceiverPin); //Creates a variable of type IRrecv
decode_results results;
void setup() {
  // put your setup code here, to run once:
    pinMode(relayPin, OUTPUT);//使能继电器
    Serial.begin(9600);//波特率
    myservo2.attach(8);    myservo.attach(9);//舵机使能
    irrecv.enableIRIn(); //遥控
    lcd.init(); //LCD1602
    lcd.backlight();
     pinMode(pin, INPUT);
}
void loop() {
          myservo.write(60);
          while(1){
            //遥控串口
            if (irrecv.decode(&results)) //if the ir receiver module receiver data
                { 
                     /*
                       Serial.print("irCode: "); //print"irCode: " 
                       Serial.print(results.value, HEX); //print the value in hexdecimal 
                       Serial.print(", bits: "); //print" , bits: " 
                       Serial.print(JL);
                       Serial.print("   ");
                       Serial.print(tu);
                       Serial.print("   ");
                       Serial.println(results.bits); //print the bits
                       */
                        irrecv.resume(); // Receive the next value 
            } 
//  delay(20);
   if(tu==0){
              myservo.write(0);myservo2.write(90);
              lcd.setCursor(0, 0);
              lcd.print("Electromagnetic");
              lcd.setCursor(0, 1);
              lcd.print("Gun             ");
        }else if(tu==1){
              lcd.setCursor(0, 0);
              lcd.print("Model: 1 ");
              lcd.setCursor(0, 1);
              lcd.print(" Distance");
              lcd.setCursor(9, 1);
              lcd.print(JL);
              lcd.setCursor(12, 1);
              lcd.print("cm");
          }else if(tu==2){
              lcd.setCursor(0, 0);
              lcd.print("Model: 2 ");
              lcd.setCursor(0, 1);
              lcd.print("JL:");
              lcd.setCursor(4, 1);
              lcd.print(JL2);
              lcd.setCursor(8, 1);
              lcd.print("JD:");
              lcd.setCursor(12, 1);
              lcd.print(jiaodu2);
          }
          switch(results.value){
            case 0xFFA25D://CH-
                      tu=1;
              results.value=0xFFFFFF;   
                      break;
            case 0xFF629D://CH  
            if(tu==1){
              jiaodu=(JL/10)-5;
                      myservo.write(jiaodu);
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

枫麟胤

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

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

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

打赏作者

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

抵扣说明:

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

余额充值