Drumfunctie: verschil tussen versies

Uit TrompBot
Naar navigatie springen Naar zoeken springen
Regel 17: Regel 17:


<syntaxhighlight>
<syntaxhighlight>
  // beweeg.ino: Beweeg een servo tussen twee posities
  // drumstel.ino: Beweeg twee servos om op een drumstel te slaan
  #include <Servo.h>    // zeg de computer dat we de servo functies willen gebruiken, anders kan hij die niet vinden
  #include <Servo.h>    // zeg de computer dat we de servo functies willen gebruiken, anders kan hij die niet vinden


Regel 27: Regel 27:
   motorA.attach(13); // vebind servo met aansluitpen 13
   motorA.attach(13); // vebind servo met aansluitpen 13
   motorB.attach(10); // vebind servo met aansluitpen 10
   motorB.attach(10); // vebind servo met aansluitpen 10
  }
  }
   
   
  void loop()  
  void loop()  
  {
  {
   motorA.write(30);          // beweeg naar 30 graden stand
 
   motorB.write (30);        // beweeg naar 30 graden stand
  // sla op de rode trommel
   delay(1000);               // Wacht 1 seconden (1000 milliseconden)
   motorA.write(30);          // beweeg naar 30 graden stand (rood)
   motorA.write(120);         // beweeg naar 120 graden stand
  delay(200);                // Wacht 0.2 seconden zodat de motor boven de rode trommel staat
   motorB.write(120);        // beweeg naar 120 graden stand
  motorB.write (20);        // beweeg slag servo naar beneden (20 graden stand)
   delay(1000);               // Wacht 1 seconden (1000 milliseconden)
  delay(100);                // Wacht 0.1 seconden tot de arm naar beneden is
   motorB.write (10);        // beweeg slag servo naar om hoog (10 graden stand)
  delay(100);                // Wacht 0.1 seconden tot de arm weer naar boven is
 
  // sla op de groene trommel
  motorA.write(90);          // beweeg naar 90 graden stand (groen)
  delay(200);                // Wacht 0.2 seconden zodat de motor boven de rode trommel staat
  motorB.write (20);        // beweeg slag servo naar beneden (20 graden stand)
   delay(100);               // Wacht 0.1 seconden tot de arm naar beneden is
  motorB.write (10);        // beweeg slag servo naar om hoog (10 graden stand)
  delay(100);                // Wacht 0.1 seconden tot de arm weer naar boven is
 
  // sla op de paarse trommel
   motorA.write(120);         // beweeg naar 120 graden stand (paars)
  delay(200);                // Wacht 0.2 seconden zodat de motor boven de rode trommel staat
   motorB.write (20);        // beweeg slag servo naar beneden (20 graden stand)
   delay(100);               // Wacht 0.1 seconden tot de arm naar beneden is
  motorB.write (10);        // beweeg slag servo naar om hoog (10 graden stand)
  delay(100);                // Wacht 0.1 seconden tot de arm weer naar boven is
  }
  }
</syntaxhighlight>
</syntaxhighlight>

Versie van 23 feb 2014 13:12

Dit is een voorbeeld van een programma voor een drumstel met 3 trommels en twee servos. Je kan het aanpassen naar meer of minder trommels en je kan makkelijk de posities van de trommels en het ritme aanpassen. Dat komt omdat het programma gebruik maakt van functies. Met een functie kan je een stuk van je programma meerdere keren gebruiken. Als je dan iets moet veranderen dan hoeft dat alleen in de functie en niet op alle verschillende plekken in het programma. Dus: als de positie van je servos niet helemaal goed is, hoef je maar 1 getal in de functie te veranderen. Of: als je het ritme wilt aanpassen hoef je alleen de volgorde van het aanroepen van de functies te veranderen, en niet de wat er in de functie geschreven is.

Het Drumstel

Dit is het drumstel wat we gaan gebruiken.

  • 3 Trommels (rood, groen en paars)
  • 1 Servo om de arm boven de verschillende trommels te bewegen (motor A)
  • 1 Servo voor de arm naar beneden te bewegen (motor B)

Trommel-3.png

Het programma

 // drumstel.ino: Beweeg twee servos om op een drumstel te slaan
 #include <Servo.h>    // zeg de computer dat we de servo functies willen gebruiken, anders kan hij die niet vinden

 Servo motorA;  // definieer een servo met de naam motorA 
 Servo motorB;  // definieer een servo met de naam motorB 
 
 void setup() 
 {                
   motorA.attach(13); // vebind servo met aansluitpen 13
   motorB.attach(10); // vebind servo met aansluitpen 10
 }
 
 void loop() 
 {

   // sla op de rode trommel
   motorA.write(30);          // beweeg naar 30 graden stand (rood)
   delay(200);                // Wacht 0.2 seconden zodat de motor boven de rode trommel staat
   motorB.write (20);         // beweeg slag servo naar beneden (20 graden stand)
   delay(100);                // Wacht 0.1 seconden tot de arm naar beneden is
   motorB.write (10);         // beweeg slag servo naar om hoog (10 graden stand)
   delay(100);                // Wacht 0.1 seconden tot de arm weer naar boven is

   // sla op de groene trommel
   motorA.write(90);          // beweeg naar 90 graden stand (groen)
   delay(200);                // Wacht 0.2 seconden zodat de motor boven de rode trommel staat
   motorB.write (20);         // beweeg slag servo naar beneden (20 graden stand)
   delay(100);                // Wacht 0.1 seconden tot de arm naar beneden is
   motorB.write (10);         // beweeg slag servo naar om hoog (10 graden stand)
   delay(100);                // Wacht 0.1 seconden tot de arm weer naar boven is

   // sla op de paarse trommel
   motorA.write(120);          // beweeg naar 120 graden stand (paars)
   delay(200);                // Wacht 0.2 seconden zodat de motor boven de rode trommel staat
   motorB.write (20);         // beweeg slag servo naar beneden (20 graden stand)
   delay(100);                // Wacht 0.1 seconden tot de arm naar beneden is
   motorB.write (10);         // beweeg slag servo naar om hoog (10 graden stand)
   delay(100);                // Wacht 0.1 seconden tot de arm weer naar boven is
 }