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);
}