花了几天时间做出来的电磁炮。三种模式:模式一,调距离射靶。模式二,调角度,距离射靶。模式三,全自动射靶(利用激光测距来瞄靶) #################################程序########################### //遥控 #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); |
基于arduino制作的19年电子设计大赛H题电磁炮
最新推荐文章于 2023-03-04 10:05:30 发布