How to combine arduino sketches?



  • Help me! I want to combine these 2 arduino sketches:
    First sketch:
    /* Loop Met Sonar
    *

    • Laat de Simple Walker II vooruit lopen. Als de Simple Walker
    • een obstakel tegenkomt dan gaat hij een stukje achteruit.
    • Gemaakt: November 2016
    • Door Simon Pauw, ZB45
    • www.SimpleWalker.com
      */

    /* Link de Servo- en Sonar (NewPing)-libraries.*/
    #include <Servo.h>
    #include <NewPing.h>

    /* Defnieer voorste servo */
    #define VOOR_SERVO_NEUTRALE_STAND 90
    #define VOOR_SERVO_PIN 9

    /* Defnieer achterste servo */
    #define ACHTER_SERVO_NEUTRALE_STAND 90
    #define ACHTER_SERVO_PIN 8

    /* Definieer de maximale uitslag van de servo's
    voor de loopbeweging. */
    #define MAX_SERVOUITSLAG 25

    /* Pauze tussen servostanen in milliseconde */
    #define PAUZE 100

    /* Maak servo-objecten aan */
    Servo voorServo, achterServo;

    /* Stel de sonar in. TRIG = 10, ECHO = 10, Maximale afstand = 200 */
    NewPing sonar(10, 16, 200);

    /* Setup: wordt uitgevoerd bij het opstarten van de Simple Walker. */
    void setup() {
    // Initialiseer de servo's.
    voorServo.attach(VOOR_SERVO_PIN);
    achterServo.attach(ACHTER_SERVO_PIN);

    // Zet de servo's in de neutrale positie (in het midden).
    voorServo.write(VOOR_SERVO_NEUTRALE_STAND);
    achterServo.write(ACHTER_SERVO_NEUTRALE_STAND);

    delay(1000);
    }

    /* Loop: wordt herhaald tot de Simple Walker uit wordt gezet. */
    void loop() {
    // Meet de afstand
    int afstand = meetAfstand();

    // Voor looppatroon uit.
    if (afstand > 15)
    {
    // Als de afstand groter is dan 15 cm, loop vooruit.
    voorServo.write(VOOR_SERVO_NEUTRALE_STAND + MAX_SERVOUITSLAG);
    delay(PAUZE);
    achterServo.write( ACHTER_SERVO_NEUTRALE_STAND - MAX_SERVOUITSLAG);
    delay(PAUZE);
    voorServo.write(VOOR_SERVO_NEUTRALE_STAND - MAX_SERVOUITSLAG);
    delay(PAUZE);
    achterServo.write( ACHTER_SERVO_NEUTRALE_STAND + MAX_SERVOUITSLAG);
    delay(PAUZE);
    } else //afstand kleiner dan 15
    {
    // Als de afstand kleiner of gelijk is aan 15 cm, loop achteruit.
    voorServo.write(VOOR_SERVO_NEUTRALE_STAND - MAX_SERVOUITSLAG);
    delay(PAUZE);
    achterServo.write(ACHTER_SERVO_NEUTRALE_STAND - MAX_SERVOUITSLAG);
    delay(PAUZE);
    voorServo.write(VOOR_SERVO_NEUTRALE_STAND + MAX_SERVOUITSLAG);
    delay(PAUZE);
    achterServo.write(ACHTER_SERVO_NEUTRALE_STAND + MAX_SERVOUITSLAG);
    delay(PAUZE);
    }

    }

    /* Deze functie meet de afstand. */
    int meetAfstand() {
    // Meet de afstand
    int waarde = sonar.ping_cm();

    // Als er bij het meten iets misgaat is de meetwaarde 0
    // In dit geval gaan we ervan uit dat de afstand 200cm is.
    if (waarde == 0) waarde = 200;
    return waarde;
    }

    Second sketch:
    /* Draaien

    Laat de Simple Walker II naar rechts draaien.

    Gemaakt: November 2016
    Door Simon Pauw, ZB45
    www.SimpleWalker.com
    */

    /* Link de Servo-library.*/
    #include <Servo.h>

    /* Defnieer voorste servo */
    #define VOOR_SERVO_NEUTRALE_STAND 90
    #define VOOR_SERVO_PIN 9

    /* Defnieer achterste servo */
    #define ACHTER_SERVO_NEUTRALE_STAND 90
    #define ACHTER_SERVO_PIN 8

    /* Definieer de maximale uitslag van de servo's
    voor de loopbeweging. */
    #define MAX_SERVOUITSLAG 25

    /* Definieer de draaihoek (hoe hoger dit getal, hoe

    • scherper de bocht).
      */
      #define DRAAIHOEK 50

    /* Maak servo-objecten aan */
    Servo voorServo, achterServo;

    /* Setup: wordt uitgevoerd bij het opstarten van de Simple Walker. */
    void setup() {
    // Initialiseer de servo's.
    voorServo.attach(VOOR_SERVO_PIN);
    achterServo.attach(ACHTER_SERVO_PIN);

    // Zet de servo's in de neutrale positie (in het midden).
    voorServo.write(VOOR_SERVO_NEUTRALE_STAND);
    achterServo.write(ACHTER_SERVO_NEUTRALE_STAND);

    delay(1000);
    }

    /* Loop: wordt herhaald tot de Simple Walker uit wordt gezet. */
    void loop() {

    // Voor looppatroon uit.

    // Stap 1: /-/:
    voorServo.write(VOOR_SERVO_NEUTRALE_STAND + MAX_SERVOUITSLAG + DRAAIHOEK);
    delay(100);

    // Stap 2: -/:
    achterServo.write( ACHTER_SERVO_NEUTRALE_STAND - MAX_SERVOUITSLAG);
    delay(100);

    // Stap 3: -|:
    voorServo.write(VOOR_SERVO_NEUTRALE_STAND - MAX_SERVOUITSLAG + DRAAIHOEK);
    delay(100);

    // Stap 4: /-|:
    achterServo.write( ACHTER_SERVO_NEUTRALE_STAND + MAX_SERVOUITSLAG);
    delay(100);

    }



Suggested Topics

  • 196
  • 8
  • 9
  • 4
  • 2
  • 10

0
Online

11.4k
Users

11.1k
Topics

112.7k
Posts