Coin op pooltafel herstellen met arduino

Hardware geleverd door Arduino
Berichten: 30
Geregistreerd: 25 Nov 2012, 21:05

Re: Coin op pooltafel herstellen met arduino

Berichtdoor FL3x » 24 Aug 2014, 12:37

aan de hand van de info die ik heb verkregen heb ik het zo aan het werk gekregen.

edit

de punten die jij aanhaalt heb ik er uit gegooid het progje met 2 knoppen werkt maar bij toevoeging van de 3de knop werkt totaal niks meer

Advertisement

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

Re: Coin op pooltafel herstellen met arduino

Berichtdoor FL3x » 24 Aug 2014, 13:04

misschien ook even vertellen wat de bedoeling is van de derde knop.

deze moet de motor laten stoppen met draaien zodat dan alles terug van vooraf aan kan beginnen

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

Re: Coin op pooltafel herstellen met arduino

Berichtdoor FL3x » 24 Aug 2014, 14:26

[code2=]
// 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;

// 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(led, LOW);
         buttonState1 = LOW;
         buttonState2 = LOW;



// Turn off the brakes
pinMode(brakeA, OUTPUT);
pinMode(pwmA, 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 (1850);
     digitalWrite (brakeA, HIGH);
    digitalWrite (dirA, LOW);
         //
         // en zet alles weer in de begin situatie
         //
         digitalWrite(led, LOW);
         buttonState1 = LOW;
         buttonState2 = LOW;
     }
  }
}

[/code2]

op deze manier werkt het met 2 knoppen en delay.

nu zou ik dus nog mijn delay moeten veranderen in de derde knop.

nicoverduin schreef: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?


de foutjes zijn eruit ondertussen enkel de knoppen nog hoe kan ik dit verhelpen dat eerst knop 2 en dan knop 3 word bekeken ?

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

Re: Coin op pooltafel herstellen met arduino

Berichtdoor nicoverduin » 24 Aug 2014, 14:52

Maar wat knop 1 en 3 verder moeten doen is mij niet duidelijk.

cpp code
// 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 = 5;

int buttonState1;
int buttonState2;
int buttonState3;

void setup() {
// Set the RPM of the motor
pinMode(led , OUTPUT);
pinMode(knop1 , INPUT);
pinMode(knop2 , INPUT);

// Pinfs for brake and motor
pinMode(brakeA , OUTPUT);
pinMode(pwmA , OUTPUT);

digitalWrite(led, LOW);
//
// set initial state of buttons
//
buttonState1 = LOW;
buttonState2 = LOW;
buttonState3 = LOW;

}
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 motor
//
digitalWrite(brakeA , LOW); // rem eraf
digitalWrite(dirA , HIGH); // start de motor richting
analogWrite (pwmA , 255); // maximale aansturing
delay(1850); // ff wachten
analogWrite(pwmA , 0); // lijkt me dat je eerst de motor afzet voordat de rem erop gaat
digitalWrite(brakeA , HIGH); // rem erop
digitalWrite(dirA , LOW); // richting uit (voor zover dit nodig is)
} else {
//
// kijk of de eerste knop 3 al is ingedrukt
//
if (buttonState3 != HIGH) {
//
// nee dus is dit de begin situatie dus lees de eerste knop
//
buttonState3 = digitalRead(knop3);
//
// en controleer of hij nu wel aan is
//
if (buttonState3 == HIGH) {
//
// ja dus kan de LED aan
//
digitalWrite(led, HIGH);
//
// tja en wat hij hier moet doen is mij onduidelijk
//
// en zet alles weer in de begin situatie
//
digitalWrite(led, LOW);
buttonState1 = LOW;
buttonState2 = LOW;
buttonState3 = LOW;

}
}
}
}
}
Probeer dit eens..
Laatst gewijzigd door nicoverduin op 24 Aug 2014, 15:42, in totaal 1 keer gewijzigd.
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, 15:19

de bedoeling is eigenlijk
Afbeelding knop 1 word geactiveerd

dan pas word de led aangeschakeld en knop 2 actief
Afbeelding

na het induwen van knop 2 gaat de motor werken totdat de as knop 3 induwd
Afbeelding
waarna de motor stopt en de led uitgaat en daarna alles terug van vooraf aan moet beginnen

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

Re: Coin op pooltafel herstellen met arduino

Berichtdoor nicoverduin » 24 Aug 2014, 15:25

Dan heb je nog ff een uitdaging :)
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, 15:28

Ja idd knop 1 en knop 2 is geen probleem knop 3 daarintegen krijg ik niet aan het werken

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

Re: Coin op pooltafel herstellen met arduino

Berichtdoor nicoverduin » 24 Aug 2014, 15:36

Bij dit soort vragen is het ten eerste van belang dat:
a) je weet of die schakelaar wel werkt....
b) of het een active pull-up of pull-down is...
Met andere woorden hoe weetje of de schakelaar wel werkt? gemeten?

@edit: ik heb de code ff veranderd wanneer hij bepaalde zaken weer reset.
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, 16:46

De schakelaars zijn allemaal doorgemeten met een multimeter en werken.
Overal zitten weerstanden tussen de schakelaars en de arduino ik zal even een foto uploaden van alle aansluitingen

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

Re: Coin op pooltafel herstellen met arduino

Berichtdoor nicoverduin » 24 Aug 2014, 16:57

Ja maar maak je gebruik van pull- up weerstanden naar 5V ? of pull-down naar GND? M.a.w. dat is nodig om te weten hoe je weet of de schakelaar is ingedrukt.
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 55 gasten