Home > Technologie > Mini-Armbrust über Joystick-Schild gesteuert

Mini-Armbrust über Joystick-Schild gesteuert

0
Advertisement

Mini-Armbrust über Joystick-Schild gesteuert

In diesem Projekt haben wir eine Mini-Armbrust in 3D-Drucker von einem Joystick Schild kompatibel mit Arduino gesteuert

Schritt 1: Materialien

Mini-Armbrust über Joystick-Schild gesteuert

  1. Intel Edison
  2. Arduino Erweiterungskarten
  3. Joystick Schild v2.4
  4. 3 Servomotoren
  5. 9 Brücken
  6. Heißklebepistole
  7. Sicherheitsmatch
  8. 2 Metall Haarspangen
  9. Gummiband

Schritt 2: Stellen Sie Armbrust in 3D-Drucker

Mini-Armbrust über Joystick-Schild gesteuert

Mini-Armbrust über Joystick-Schild gesteuert

Mini-Armbrust über Joystick-Schild gesteuert

Mini-Armbrust über Joystick-Schild gesteuert

Mini-Armbrust über Joystick-Schild gesteuert

Drucken und montieren Sie die Mini-Armbrust. Der Trigger wird an Ort und Stelle mit einem 2/56 "x 1/2" Schraube gehalten und verwendet Metallhaarclips für den Bogen und Q-Tips für die Armbrustbolzen.

Das Zentrum des Haarclip wurde von nur entfernt es hin und her ein paar Mal Biegen um diese zu entfernen und dann die Clips werden einfach in die Aussparungen geschoben.

Es kann auch mit Popsicle-Sticks gebaut werden, hat viele Tutorials im Internet Lehre, dies zu tun. Sie benötigen nur einen mechanischen Auslöser, der durch Drehen des Servomotors gesteuert wird.

Befestigen Sie die Motoren, eine der x-Achse für die Steuerung, die andere die y-Achse zu steuern, und der dritte, den Abzug zu steuern.

Schritt 3: Der Code

  / ** * Mini Crossbow durch Joystick Schild v2.4 gesteuert * von RAS IEEE UFABC - 2015.11.07 * /
  #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 unsigned long Running_time = 0; boolescher 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, INPUT);  PinMode (bt_fire, INPUT);  Serial.begin (115200);  Servo_hor.attach (6);  Servo_vert.attach (5);  Servo_trig.attach (3);  Servo_hor.write (90);  Verzögerung (300);  Servo_vert.write (125);  Verzögerung (300);  Servo_trig.write (servo_trig_start);  Verzögerung (300);  aufrechtzuerhalten.
  Void Schleife () {if (! DigitalRead (bt_change)) {(status_> = 2)?  Status_ = 0: status _ ++;  DigitalWrite (led_log, 1);  Verzögerung (50);  DigitalWrite (led_log, 0);  Verzögerung (50);  DigitalWrite (led_log, 1);  Verzögerung (50);  DigitalWrite (led_log, 0);  Verzögerung (50);  } Schalter (status_) {case 0: // Servo horizontal bow_pos [0] = analogRead (analog_x) einzustellen;  Bow_pos [0] = map (bow_pos [0], 0, 1023, 0, 179);  Unterbrechung;  Fall 1: // Servo vertikal einstellen bow_pos [1] = analogRead (analog_y);  Bow_pos [1] = map (bow_pos [1], 0, 1023, 100, 150);  Unterbrechung;  Default: // angehalten if (! DigitalRead (bt_fire)) {open_fire = true;  Verzögerung (150);  } Unterbrechung;  } If (millis () - running_time> time_execution) {servo_hor.write (bow_pos [0]);  Servo_vert.write (bow_pos [1]);  If (open_fire) {servo_trig.write (servo_trig_end);  Verzögerung (time_shoot);  Servo_trig.write (servo_trig_start);  Verzögerung (time_shoot);  Open_fire =! Open_fire;  } Running_time = millis (); <br>} <br> LOG ( "EixoX -> motor:");  LOG (bow_pos [0]);  LOG ( "\ n");  LOG ( "EixoY -> Servo:");  LOG (bow_pos [1]);  LOG ( "\ n");  LOG ( "Schaltflächenänderung:");  LOG (status_);  LOG ( "\ n");  LOG ( "Button Fire:");  LOG (open_fire);  LOG ( "\ n");  aufrechtzuerhalten.
Related Reading