Coin op pooltafel herstellen met arduino

Hardware geleverd door Arduino
Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Coin op pooltafel herstellen met arduino

Berichtdoor nicoverduin » 20 Apr 2014, 14:39

Code: Alles selecteren
void loop() {
  //
  // kijk of de eerste knop al is ingedrukt
  //

  if (buttonState1 != HIGH) { 
     //
     // nee dus is dit de begin situatie dus lees de eerste knop
     //
     buttonState1 = digitalRead(knop1);
     //
     // en controleer of hij nu wel aan is
     //
     if (buttonState1 == HIGH) {
         //
         // ja dus kan de LED aan
         //
         digitalWrite(led, HIGH);
     }
  } else {
     //
     // de buton was al ingedrukt geweest dus nu kijken of de tweede knop wordt ingedrukt
     //
     buttonState2 = digitalRead(knop2);
     if (buttonState2 == HIGH) {
         //
         // Ja dus nu de stappenmotor activeren
         //
         myStepper.step(200
         //
         // en zet alles weer in de begin situatie
         //
         digitalWrite(led, LOW);
         buttonState1 = LOW;
         buttonState2 = LOW;
     }
  }
}


en in de setup() dit ff toevoegen:

Code: Alles selecteren
         digitalWrite(led, LOW);
         buttonState1 = LOW;
         buttonState2 = LOW;
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Advertisement

Berichten: 30
Geregistreerd: 25 Nov 2012, 21:05

Re: Coin op pooltafel herstellen met arduino

Berichtdoor FL3x » 21 Apr 2014, 09:41

Bedank voor de code en uitleg. Dit werkt zoals ik het wou :D

Nu een ander vraagje ik wil dit alles laten werken met een 12v auto batterij,
Moet ik dan de vin pin van de motor shield verwijderen en appart van voeding voorzien of mag deze erop blijven zitten en een voeding delen ?

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Coin op pooltafel herstellen met arduino

Berichtdoor nicoverduin » 21 Apr 2014, 09:45

FL3x schreef:Bedank voor de code en uitleg. Dit werkt zoals ik het wou :D

Nu een ander vraagje ik wil dit alles laten werken met een 12v auto batterij,
Moet ik dan de vin pin van de motor shield verwijderen en appart van voeding voorzien of mag deze erop blijven zitten en een voeding delen ?
Gewoon op dezelfde pin. Ik zou er zelf wel een elco van 1000uF tussen de + en GND zetten om storingen wat tegen te gaan door de motor pulsen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 30
Geregistreerd: 25 Nov 2012, 21:05

Re: Coin op pooltafel herstellen met arduino

Berichtdoor FL3x » 24 Aug 2014, 11:10

na enkele maanden eindelijk de tijd gehad om alles te testen, maar nu blijkt de steppermotor niet de ideale oplossing te zijn, door het gewicht van de ballen draaid de stepper gewoon door. ben het nu aant proberen voor de oude dc geared motor terug te gebruiken maar dan moet ik een extra knop invoegen in het programma.

deze code werkt maar is zonder de derde knop
Code: Alles selecteren
const int pwmA = 3;

const int brakeA = 9;

const int dirA = 12;

const int knop2 = 2;
const int led =10;
const int knop1= 4;

// The amount of steps for a full revolution of your motor.
// 360 / stepAngle

int buttonState1 = 0;
int buttonState2 = 0;


void setup() {
// Set the RPM of the motor
;
pinMode(led, OUTPUT);
pinMode(knop1, INPUT);
pinMode(knop2, INPUT);
digitalWrite(knop2, LOW);
digitalWrite(led, LOW);
         buttonState1 = LOW;
         buttonState2 = LOW;



// Turn off the brakes
pinMode(brakeA, OUTPUT);
digitalWrite(dirA, OUTPUT);

}
void loop() {
  //
  // kijk of de eerste knop al is ingedrukt
  //

  if (buttonState1 != HIGH) {
     //
     // nee dus is dit de begin situatie dus lees de eerste knop
     //
     buttonState1 = digitalRead(knop1);
     //
     // en controleer of hij nu wel aan is
     //
     if (buttonState1 == HIGH) {
         //
         // ja dus kan de LED aan
         //
         digitalWrite(led, HIGH);
     }
  } else {
     //
     // de buton was al ingedrukt geweest dus nu kijken of de tweede knop wordt ingedrukt
     //
     buttonState2 = digitalRead(knop2);
     if (buttonState2 == HIGH) {
         //
         // Ja dus nu de stappenmotor activeren
         //
         digitalWrite (brakeA, LOW);
         digitalWrite (dirA, HIGH);
     analogWrite (pwmA, 255);
     delay (2000);
     digitalWrite (brakeA, HIGH);
    digitalWrite (dirA, LOW);
         //
         // en zet alles weer in de begin situatie
         //
         digitalWrite(led, LOW);
         buttonState1 = LOW;
         buttonState2 = LOW;
     }
  }
}



nu dus geprobeerd met de derde knop
Code: Alles selecteren
// Map our pins to constants to make things easier to keep track of
const int pwmA = 3;

const int brakeA = 9;

const int dirA = 12;

const int knop2 = 2;
const int led =10;
const int knop1= 4;
const int knop3=7;

// The amount of steps for a full revolution of your motor.
// 360 / stepAngle

int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;


void setup() {
// Set the RPM of the motor
;
pinMode(led, OUTPUT);
pinMode(knop1, INPUT);
pinMode(knop2, INPUT);
pinMode(knop3,INPUT);
digitalWrite(knop2, LOW);
digitalWrite(led, LOW);
         buttonState1 = LOW;
         buttonState2 = LOW;
         buttonState3 = LOW;


// Turn off the brakes
pinMode(brakeA, OUTPUT);
digitalWrite(dirA, OUTPUT);

}
void loop() {
  //
  // kijk of de eerste knop al is ingedrukt
  //

  if (buttonState1 != HIGH) {
     //
     // nee dus is dit de begin situatie dus lees de eerste knop
     //
     //buttonState1 = digitalRead(knop1);
     //
     // en controleer of hij nu wel aan is
     //
     if (knop1 == HIGH) {
         //
         // ja dus kan de LED aan
         //
         digitalWrite(led, HIGH);
     }
  } else {
     //
     // de buton was al ingedrukt geweest dus nu kijken of de tweede knop wordt ingedrukt
     //
    // buttonState2 = digitalRead(knop2);
     if (knop2 == HIGH) {
         //
         // Ja dus nu de stappenmotor activeren
         
         digitalWrite (brakeA, LOW);
         digitalWrite (dirA, HIGH);
     analogWrite (pwmA, 255);}
     //buttonState3 =digitalRead(knop3);
     if (knop3 == HIGH){
     digitalWrite (brakeA, HIGH);
    digitalWrite (dirA, LOW);
         //
         // en zet alles weer in de begin situatie
         //
         digitalWrite(led, LOW);
         buttonState1 = LOW;
         buttonState2 = LOW;
         buttonState3 = LOW;
     }
  }
}


maar dan werkt men hele opstelling niet meer

ik maak dus blijkbaar ergens een grote fout maar kom er niet uit,
er is mij ook verteld dat ik de derde knop (als deze is ingeduwd) zou moeten kunnen programeren dat deze zich reset ook al is deze ingeduwd.

ik ben dus volledig de draad kwijt en kan er even niet meer aan uit.

heeft er hier iemand tips of een oplossing ?

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Coin op pooltafel herstellen met arduino

Berichtdoor nicoverduin » 24 Aug 2014, 11:32

Zal aan mij liggen, maar waar lees jij knop1, knop2 en knop 3?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 30
Geregistreerd: 25 Nov 2012, 21:05

Re: Coin op pooltafel herstellen met arduino

Berichtdoor FL3x » 24 Aug 2014, 11:42

nicoverduin schreef:Zal aan mij liggen, maar waar lees jij knop1, knop2 en knop 3?


in het begin van de code

2 knoppen
Code: Alles selecteren
const int pwmA = 3;

const int brakeA = 9;

const int dirA = 12;

const int knop2 = 2;
const int led =10;
const int knop1= 4;



3 knoppen
Code: Alles selecteren
const int pwmA = 3;

const int brakeA = 9;

const int dirA = 12;

const int knop2 = 2;
const int led =10;
const int knop1= 4;
const int knop3=7;

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Coin op pooltafel herstellen met arduino

Berichtdoor nicoverduin » 24 Aug 2014, 11:58

En waar doe je dan de digitalRead()? Die heb je nu allemaal als commentaar gezet. Dus lees je geen knoppen......
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 30
Geregistreerd: 25 Nov 2012, 21:05

Re: Coin op pooltafel herstellen met arduino

Berichtdoor FL3x » 24 Aug 2014, 12:06

stonden idd als comentaar had dit gedaan om te testen waar de fout lag omdat deze opstelling totaal niet werkt

zo was de code orgineel

Code: Alles selecteren
const int pwmA = 3;

const int brakeA = 9;

const int dirA = 12;

const int knop2 = 2;
const int led =10;
const int knop1= 4;
const int knop3=7;

// The amount of steps for a full revolution of your motor.
// 360 / stepAngle

int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;


void setup() {
// Set the RPM of the motor
;
pinMode(led, OUTPUT);
pinMode(knop1, INPUT);
pinMode(knop2, INPUT);
pinMode(knop3,INPUT);
digitalWrite(knop2, LOW);
digitalWrite(led, LOW);
         buttonState1 = LOW;
         buttonState2 = LOW;
         buttonState3 = LOW;


// Turn off the brakes
pinMode(brakeA, OUTPUT);
digitalWrite(dirA, OUTPUT);

}
void loop() {
  //
  // kijk of de eerste knop al is ingedrukt
  //

  if (buttonState1 != HIGH) {
     //
     // nee dus is dit de begin situatie dus lees de eerste knop
     //
     buttonState1 = digitalRead(knop1);
     //
     // en controleer of hij nu wel aan is
     //
     if (knop1 == HIGH) {
         //
         // ja dus kan de LED aan
         //
         digitalWrite(led, HIGH);
     }
  } else {
     //
     // de buton was al ingedrukt geweest dus nu kijken of de tweede knop wordt ingedrukt
     //
     buttonState2 = digitalRead(knop2);
     if (knop2 == HIGH) {
         //
         // Ja dus nu de stappenmotor activeren
         
         digitalWrite (brakeA, LOW);
         digitalWrite (dirA, HIGH);
     analogWrite (pwmA, 255);}
     buttonState3 =digitalRead(knop3);
     if (knop3 == HIGH){
     digitalWrite (brakeA, HIGH);
    digitalWrite (dirA, LOW);
         //
         // en zet alles weer in de begin situatie
         //
         digitalWrite(led, LOW);
         buttonState1 = LOW;
         buttonState2 = LOW;
         buttonState3 = LOW;
     }
  }
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Coin op pooltafel herstellen met arduino

Berichtdoor nicoverduin » 24 Aug 2014, 12:21

eerst ff in leesbaar formaat:
cpp code
const int pwmA = 3;

const int brakeA = 9;

const int dirA = 12;

const int knop2 = 2;
const int led = 10;
const int knop1 = 4;
const int knop3 = 7;

// The amount of steps for a full revolution of your motor.
// 360 / stepAngle

int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;

void setup() {
// Set the RPM of the motor
;
pinMode(led, OUTPUT);
pinMode(knop1, INPUT);
pinMode(knop2, INPUT);
pinMode(knop3, INPUT);
digitalWrite(knop2, LOW);
digitalWrite(led, LOW);
buttonState1 = LOW;
buttonState2 = LOW;
buttonState3 = LOW;

// Turn off the brakes
pinMode(brakeA, OUTPUT);
digitalWrite(dirA, OUTPUT);

}
void loop() {
//
// kijk of de eerste knop al is ingedrukt
//

if (buttonState1 != HIGH) {
//
// nee dus is dit de begin situatie dus lees de eerste knop
//
buttonState1 = digitalRead(knop1);
//
// en controleer of hij nu wel aan is
//
if (knop1 == HIGH) {
//
// ja dus kan de LED aan
//
digitalWrite(led, HIGH);
}
} else {
//
// de buton was al ingedrukt geweest dus nu kijken of de tweede knop wordt ingedrukt
//
buttonState2 = digitalRead(knop2);
if (knop2 == HIGH) {
//
// Ja dus nu de stappenmotor activeren

digitalWrite(brakeA, LOW);
digitalWrite(dirA, HIGH);
analogWrite(pwmA, 255);
}
buttonState3 = digitalRead(knop3);
if (knop3 == HIGH) {
digitalWrite(brakeA, HIGH);
digitalWrite(dirA, LOW);
//
// en zet alles weer in de begin situatie
//
digitalWrite(led, LOW);
buttonState1 = LOW;
buttonState2 = LOW;
buttonState3 = LOW;
}
}
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Coin op pooltafel herstellen met arduino

Berichtdoor nicoverduin » 24 Aug 2014, 12:25

Waarom doe je een digitalWrite(knop2, LOW); op een INPUT in de setup()?
Dit vind ik ook een knappe : digitalWrite(dirA, OUTPUT);
pmwA is niet gedefinieerd als OUTPUT?

En volgens de code in de loop() kan ik zowel knop2 als knop3 tegelijk verwerken?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

VorigeVolgende

Terug naar Arduino hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 31 gasten