Spider – creepy crawly – deel 2

De zes ontbrekende servo motoren zijn besteld (zie deel een) en inmiddels binnen. Tussendoor de twee ontbrekende ‘pootdelen’ geprint. De spin ligt klaar!

Het aansturen van de servo’s met behulp van de PCA9685 bordje is toch lastiger dan gedacht. Eerst maar een testomgeving gemaakt om de poten, per pootdeel, af te stellen. Stapje voor stapje dus.

Een Arduino testprogramma!

Schema van de testschakeling

Voor het testen wil ik drie servo’s aansluiten op een Arduino Nano: D9 t/m D11 kunnen een pulsbreedtemodulatie of Pulse With Modulation (PWM) signaal uitsturen. Met switch1 en switch2 kan je de aan te sturen servo selecteren: omhoog of omlaag. Alle 12 servo’s zijn te selecteren; voorlopig dus eerst maar testen met 3 motoren. Hieronder de code voor de motor-selectie.

/*
  Button

  Keuzeselectie met twee knoppen: knop1 op D2, knop2 op D3
  +5V
  |
  |
  switch
  |
  -Arduino pin D2/D3
  |
  |
  R1 - 10K
  |
  |
  gnd


*/

// constants won't change. They're used here to set pin numbers:
const int buttonPin_up = 2;     // the number of the pushbutton pin
const int buttonPin_down = 3;   // the number of the pushbutton pin
// const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState_up = 0;         // variable for reading the pushbutton status
int buttonState_down = 0;       // variable for reading the pushbutton status
int servoNr = 0;

void setup() {
  // initialize the pushbutton pins as an input:
  pinMode(buttonPin_up, INPUT);
  pinMode(buttonPin_down, INPUT);
  int servoNr = 0;
}

void loop() {
  // read the state of the pushbutton value:
  buttonState_up = digitalRead(buttonPin_up);
  buttonState_down = digitalRead(buttonPin_down);
  
  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState_up == HIGH) {
    // selector omhoog
    servoNr = servoNr +1;
  }
  if (buttonState_down == HIGH) {
    // selector omlaag
    servoNr = servoNr -1;
  }
  if (servoNr < 0) {
    servoNr = 12;
  }
  if (servoNr > 12) {
    servoNr = 0;
  }
}

Deze code moet nog even gecombineerd worden met de code die de servo’s bedient.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.