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:
/* DraaienLaat 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);}