Mini armborst kontrolleras av joystick sköld (3 / 3 steg)
Steg 3: Koden
/**
* Mini armborst kontrolleras av joystick sköld v2.4
* av RAS IEEE UFABC - 11/07/2015
*/
#include < Servo.h >< br >< br > Servo servo_hor;
Servo servo_vert;
Servo servo_trig; < br >
#define LOG Serial.print
#define bt_change 4
#define bt_fire 2
#define led_log 13
#define servo_trig_start 90
#define servo_trig_end 0
#define analog_x 0
#define analog_y 1
#define time_shoot 700
#define time_execution 0
osignerade långa running_time = 0; < br > boolean open_fire = 0;
int status_ = 2;
int bow_pos [2] = {90, 125}; {servo_hor servo_vert}
void setup() {
pinMode (analog_x, INPUT_PULLUP); < br > pinMode (analog_y, INPUT_PULLUP);
pinMode (bt_change, ingång);
pinMode (bt_fire, ingång);
Serial.BEGIN(115200);
servo_hor.attach(6);
servo_vert.attach(5);
servo_trig.attach(3);
servo_hor.write(90);
Delay(300);
servo_vert.write(125);
Delay(300);
servo_trig.write(servo_trig_start);
Delay(300);
}
void loop() {
om (! digitalRead(bt_change)) {
(status_ > = 2)? status_ = 0: status_ ++;
digitalWrite (led_log, 1);
Delay(50);
digitalWrite (led_log, 0);
Delay(50);
digitalWrite (led_log, 1);
Delay(50);
digitalWrite (led_log, 0);
Delay(50);
}
växel (status_) {
fall 0: / / servo vågrät justering
bow_pos [0] = analogRead(analog_x);
bow_pos [0] = karta (bow_pos [0], 0, 1023, 0, 179);
bryta;
fall 1: / / servo lodrät justering
bow_pos [1] = analogRead(analog_y);
bow_pos [1] = karta (bow_pos [1], 0, 1023, 100, 150);
bryta;
standard: / / stopp
om (! digitalRead(bt_fire)) {
open_fire = sant;
Delay(150);
}
bryta;
}
om (millis() - running_time > time_execution) {
servo_hor.write(bow_pos[0]);
servo_vert.write(bow_pos[1]);
om (open_fire) {
servo_trig.write(servo_trig_end);
Delay(time_shoot);
servo_trig.write(servo_trig_start);
Delay(time_shoot);
open_fire =! open_fire;
}
running_time = millis(); < br >} < br > logg ("EixoX -> motor:");
LOG(bow_pos[0]);
LOG("\n");
LOG ("EixoY -> Servo:");
LOG(bow_pos[1]);
LOG("\n");
LOG ("knappen Ändra:");
LOG(status_);
LOG("\n");
LOG ("knappen eld:");
LOG(open_fire);
LOG("\n");
}