Go Down

Topic: Multi-button useless box (Read 656 times) previous topic - next topic

maikbisschop

Feb 08, 2018, 12:21 pm Last Edit: Feb 09, 2018, 06:43 pm by maikbisschop
Hallo,

Ik ben voor school een useless box aan het maken, dit werk met 2 servos. Wanneer ik mijn programma heb geĆ¼pload doen de servo's niets bij een ingangssignaal op pin 3,4,5 of 6.
Zou dit aan mijn circuit of programma liggen?



Code: [Select]
#include <Servo.h> //Servo library toegevoed

////////////////////////////////////////////////////////////////////////

// Knoppen
#define Knop1 3 //Knop1 op pin 3
#define Knop2 4 //Knop2 op pin 4
#define Knop3 5 //Knop3 op pin 5
#define Knop4 6 //Knop4 op pin 6

int Knopstaat1 = 0; //Knop1 is standaard uit
int Knopstaat2 = 0; //Knop2 is standaard uit
int Knopstaat3 = 0; //Knop3 is standaard uit
int Knopstaat4 = 0; //Knop4 is standaard uit

// Servo's

Servo DraaiServo; //Servo DraaiServo toegevoegd
Servo ArmServo;   //Servo ArmSermvo toegevoegd

int Positie1 = 60; //Begin positie Draaiservo is 60
int Positie2 = 0; //Begin positie Armservo is 0

////////////////////////////////////////////////////////////////////////

void setup() {

// Knoppen

pinMode(Knop1, INPUT); //Knop1 is een input
pinMode(Knop2, INPUT); //Knop2 is een input
pinMode(Knop3, INPUT); //Knop3 is een input
pinMode(Knop4, INPUT); //Knop4 is een input

// Servo's

DraaiServo.attach(9); //Servo DraaiServo toegewezen aan pin 9
ArmServo.attach(10);  //Servo Armservo toegewezen aan pin 10
DraaiServo.write(60); //Positie DraaiServo bij start op 60
ArmServo.write(0);    //Positie ArmServo bij start op 0

}

////////////////////////////////////////////////////////////////////////

void loop() {
 
Knopstaat1 = digitalRead(Knop1); //Knopstaat1 is digitaal
Knopstaat2 = digitalRead(Knop2); //Knopstaat2 is digitaal
Knopstaat3 = digitalRead(Knop3); //Knopstaat3 is digitaal
Knopstaat4 = digitalRead(Knop4); //Knopstaat4 is digitaal

/////////////////////

 {  
   if  (Knopstaat1 == HIGH){ //Wanneer Knopstaat1 hoog is
   void KnopPos1();               //Void Knop1 aanroepen
   }
 }
{
/////////////////////
 
   if  (Knopstaat2 == HIGH){ //Wanneer Knopstaat2 hoog is
   void KnopPos2();               //Void Knop2 aanroepen
   }
 }
{

/////////////////////

   if  (Knopstaat3 == HIGH){ //Wanneer Knopstaat3 hoog is
   void KnopPos3();               //Void Knop3 aanroepen
   }
 }
{
/////////////////////
 
   if  (Knopstaat4 == HIGH){ //Wanneer Knopstaat4 hoog is
   void KnopPos4();               //Void Knop4 aanroepen
   }
 }
}

////////////////////////////////////////////////////////////////////////

    void KnopPos1 (){

    Positie1 = Positie1 - 36;   //Startpositie - 36 graden
    DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
    delay(1);                 //Wachten 100ms    
    Positie2 = Positie2 + 60;   //Startpositie + 60 graden
    ArmServo.write(Positie2);   //Schrijf positie naar Armservo
    delay(1);                 //Wachten 100ms
    Positie1 = Positie1 + 36;   //Eindpositie + 36 graden
    DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
    Positie2 = Positie2 - 60;  //Eindpositie - 60 graden
    ArmServo.write(Positie2);   //Schrijf positie naar ArmServo
 }

/////////////////////
    void KnopPos2 (){

    Positie1 = Positie1 - 12;   //Startpositie - 12 graden
    DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
    delay(100);                 //Wachten 100ms    
    Positie2 = Positie2 + 60;   //Startpositie + 60 graden
    ArmServo.write(Positie2);   //Schrijf positie naar Armservo
    delay(100);                 //Wachten 100ms
    Positie1 = Positie1 + 12;   //Eindpositie + 12 graden
    DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
    Positie2 = Positie2 - 60;   //Eindpositie - 60 graden
    ArmServo.write(Positie2);   //Schrijf positie naar ArmServo
 }
 
/////////////////////

    void KnopPos3 (){

    Positie1 = Positie1 + 12;   //Startpositie + 12 graden
    DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
    delay(100);                 //Wachten 100ms    
    Positie2 = Positie2 + 60;   //Startpositie + 60 graden
    ArmServo.write(Positie2);   //Schrijf positie naar Armservo
    delay(100);                 //Wachten 100ms
    Positie1 = Positie1 - 12;   //Eindpositie - 12 graden
    DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
    Positie2 = Positie2 - 60;   //Eindpositie - 60 graden
    ArmServo.write(Positie2);   //Schrijf positie naar ArmServo
 }
 
/////////////////////

  void KnopPos4 (){

    Positie1 = Positie1 - 30;   //Startpositie + 36 graden
    DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
    delay(100);                 //Wachten 100ms    
    Positie2 = Positie2 + 60;   //Startpositie + 60 graden
    ArmServo.write(Positie2);   //Schrijf positie naar Armservo
    delay(100);                 //Wachten 100ms
    Positie1 = Positie1 + 30;   //Eindpositie - 36 graden
    DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
    Positie2 = Positie2 - 60;   //Eindpositie - 60 graden
    ArmServo.write(Positie2);   //Schrijf positie naar ArmServo
    
 }
 
///////////////////////////////////////////////////////////////

//Maik Bisschop
//Roc Friese Poort
//08-02-2018
//Useless Box


Met vriendelijk groet,
Maik Bisschop


MAS3

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

sterretje

Een table is niet de juiste manier om je programma te laten zien ;) Gebruik code tags zodat het eruit ziet als hieronder. Stukken makkelijker voor ons om het te copieren.
Code: [Select]

#include <Servo.h> //Servo library toegevoed

////////////////////////////////////////////////////////////////////////

// Knoppen
#define Knop1 3 //Knop1 op pin 3
#define Knop2 4 //Knop2 op pin 4
#define Knop3 5 //Knop3 op pin 5
#define Knop4 6 //Knop4 op pin 6

int Knopstaat1 = 0; //Knop1 is standaard uit
int Knopstaat2 = 0; //Knop2 is standaard uit
int Knopstaat3 = 0; //Knop3 is standaard uit
int Knopstaat4 = 0; //Knop4 is standaard uit

// Servo's

Servo DraaiServo; //Servo DraaiServo toegevoegd
Servo ArmServo;   //Servo ArmSermvo toegevoegd

int Positie1 = 60; //Begin positie Draaiservo is 60
int Positie2 = 0; //Begin positie Armservo is 0

////////////////////////////////////////////////////////////////////////

void setup() {

  // Knoppen

  pinMode(Knop1, INPUT); //Knop1 is een input
  pinMode(Knop2, INPUT); //Knop2 is een input
  pinMode(Knop3, INPUT); //Knop3 is een input
  pinMode(Knop4, INPUT); //Knop4 is een input

  // Servo's

  DraaiServo.attach(9); //Servo DraaiServo toegewezen aan pin 9
  ArmServo.attach(10);  //Servo Armservo toegewezen aan pin 10
  DraaiServo.write(60); //Positie DraaiServo bij start op 60
  ArmServo.write(0);    //Positie ArmServo bij start op 0

}

////////////////////////////////////////////////////////////////////////

void loop() {

  Knopstaat1 = digitalRead(Knop1); //Knopstaat1 is digitaal
  Knopstaat2 = digitalRead(Knop2); //Knopstaat2 is digitaal
  Knopstaat3 = digitalRead(Knop3); //Knopstaat3 is digitaal
  Knopstaat4 = digitalRead(Knop4); //Knopstaat4 is digitaal

  /////////////////////

  {
    if  (Knopstaat1 == HIGH) { //Wanneer Knopstaat1 hoog is
      void KnopPos1();               //Void Knop1 aanroepen
    }
  }
  {
    /////////////////////

    if  (Knopstaat2 == HIGH) { //Wanneer Knopstaat2 hoog is
      void KnopPos2();               //Void Knop2 aanroepen
    }
  }
  {

    /////////////////////

    if  (Knopstaat3 == HIGH) { //Wanneer Knopstaat3 hoog is
      void KnopPos3();               //Void Knop3 aanroepen
    }
  }
  {
    /////////////////////

    if  (Knopstaat4 == HIGH) { //Wanneer Knopstaat4 hoog is
      void KnopPos4();               //Void Knop4 aanroepen
    }
  }
}

////////////////////////////////////////////////////////////////////////

void KnopPos1 () {

  Positie1 = Positie1 - 36;   //Startpositie - 36 graden
  DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
  delay(1);                 //Wachten 100ms
  Positie2 = Positie2 + 60;   //Startpositie + 60 graden
  ArmServo.write(Positie2);   //Schrijf positie naar Armservo
  delay(1);                 //Wachten 100ms
  Positie1 = Positie1 + 36;   //Eindpositie + 36 graden
  DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
  Positie2 = Positie2 - 60;  //Eindpositie - 60 graden
  ArmServo.write(Positie2);   //Schrijf positie naar ArmServo
}

/////////////////////
void KnopPos2 () {

  Positie1 = Positie1 - 12;   //Startpositie - 12 graden
  DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
  delay(100);                 //Wachten 100ms
  Positie2 = Positie2 + 60;   //Startpositie + 60 graden
  ArmServo.write(Positie2);   //Schrijf positie naar Armservo
  delay(100);                 //Wachten 100ms
  Positie1 = Positie1 + 12;   //Eindpositie + 12 graden
  DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
  Positie2 = Positie2 - 60;   //Eindpositie - 60 graden
  ArmServo.write(Positie2);   //Schrijf positie naar ArmServo
}

/////////////////////

void KnopPos3 () {

  Positie1 = Positie1 + 12;   //Startpositie + 12 graden
  DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
  delay(100);                 //Wachten 100ms
  Positie2 = Positie2 + 60;   //Startpositie + 60 graden
  ArmServo.write(Positie2);   //Schrijf positie naar Armservo
  delay(100);                 //Wachten 100ms
  Positie1 = Positie1 - 12;   //Eindpositie - 12 graden
  DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
  Positie2 = Positie2 - 60;   //Eindpositie - 60 graden
  ArmServo.write(Positie2);   //Schrijf positie naar ArmServo
}

/////////////////////

void KnopPos4 () {

  Positie1 = Positie1 - 30;   //Startpositie + 36 graden
  DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
  delay(100);                 //Wachten 100ms
  Positie2 = Positie2 + 60;   //Startpositie + 60 graden
  ArmServo.write(Positie2);   //Schrijf positie naar Armservo
  delay(100);                 //Wachten 100ms
  Positie1 = Positie1 + 30;   //Eindpositie - 36 graden
  DraaiServo.write(Positie1); //Schrijf positie naar DraaiServo
  Positie2 = Positie2 - 60;   //Eindpositie - 60 graden
  ArmServo.write(Positie2);   //Schrijf positie naar ArmServo

}


Vervolgens moet je eens lezen hoe je functies moet aanroepen. In ieder geval niet
Code: [Select]
      void KnopPos1();               //Void Knop1 aanroepen


En als je een vraag hebt die refereert naar een circuit is het logisch dat je het circuit ook toont. Gezien het feit dat je geen INPUT_PULLUP gebruikt in je programma is er een vraag van mijn kant of je pull-down (of pull-up) weerstanden gebruikt in je circuit?
If you understand an example, use it.
If you don't understand an example, don't use it.

Electronics engineer by trade, software engineer by profession. Trying to get back into electronics after 15 years absence.

maikbisschop

Ik werk in mijn circuit met een 5Kohm pulldown weerstand.  Servo's hebben externe 5v voeding en elke knop heeft een pulldown weerstand.
Zou je me verder ook uit willen leggen wat je precies bedoeld bij die opmerking over 'void aanroepen'?

Met vriendelijke groet,
Maik Bisschop

nicoverduin

Doe eens gek.... google eens op "arduino functies"
Met vriendelijke groet / kindest regards
Nico Verduin
www.verelec.nl
Do not PM me for personal consultancy unless you are willing to pay for it.

Go Up