een stepper motor samenvoegen met een drukknop

ik heb een probleem, ik heb voor mijn project op school arduino gebruikt en nu wil de groep waar ik mee werk dat ik een drukknop aansluit en dat ik de motor sneller laat draaien. ik heb een steppermotor code maar die moet ik aanpassen zodat ik met een druk op de knop hem een kant op kan laten draaien en nog een druk op de knop de andere kant op of een schakelaar
ik heb nog maar 2 weken om het te maken omdat ik dan voor de opdrachtgever moet presenteren

dit is mijn sketch

int Pin0 = 10;
int Pin1 = 11;
int Pin2 = 12;
int Pin3 = 13;

int _step = 0;
boolean dir = true;// gre
void setup()
{
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
}
void loop()
{
switch(_step){
case 0:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
case 1:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
break;
case 2:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 3:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 4:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 5:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 6:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 7:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
default:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
}
if(dir){
_step++;
}else{
_step–;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delay(1);
}

ik heb wel een sketch van een drukknop maar ik wil het liefst dat ik het met een schakelaar kan maken.

dit is de sketch die ik heb gevonden voor een drukknop alleen daar gaat het over een led lampje wat het aanstuurt

int DrukknopPin = 2; // de digitale poort waarop de drukknop is aangesloten.
int LedPin = 5; // de digitale poort waarop de LED is aangesloten.

int Ledstatus = HIGH; // de huidige (start) status van de LedPin.
int uitlezing; // de huidige uitlezing van de LedPin.
int vorigestatus = LOW; // de vorige (oude) status van de LedPin.

long tijd = 0; // de laatste tijd wanneer de LedPin is geschakeld.
long terugvaltijd = 200; // de terugvaltijd, hoger instellen als de LED knippert.

void setup()
{
pinMode(DrukknopPin, INPUT);
pinMode(LedPin, OUTPUT);
}

void loop()
{
uitlezing = digitalRead(DrukknopPin);
// als de ingang van de drukknop van LAAG naar HOOG is gegaan en we hebben
// lang genoeg gewacht om de ruis te onderdrukken, schakel de LedPin en onthoud
// de tijd.
if (uitlezing == HIGH && vorigestatus == LOW && millis() - tijd > terugvaltijd) {
if (Ledstatus == HIGH) {
Ledstatus = LOW; // Ledstatus = HOOG, de LED moet uit.
} else {
Ledstatus = HIGH; // Ledstatus = LAAG, de LED moet aan.
}
tijd = millis();
}
digitalWrite(LedPin, Ledstatus); // zet LED aan of uit.
vorigestatus = uitlezing;
}

gebruik ... tags als je code vermeld, dan wordt het duidelijk leesbaar.

Versta je hoe de huidige sketch werkt? Draait de stappenmotor nu altijd in dezelfde richting en met dezelfde snelheid ?

Wat doet die "dir" in je code ? Wat doet die delay(1) in je code?

De oplossing zit eigenlijk al gedeeltelijk in je code. Probeer te verstaan wat er lijn per lijn in de code gebeurt.

Voor je 2 sketches wil samenvoegen moet je eerst goed verstaan wat er in elke sketch apart gebeurt, anders loopt het gegarandeerd fout.

Hoi Robin_Vermeer, welkom.

Inderdaad, als je code plaatst doe dat dan alsjeblieft in [code] [/code] tags. Dat maakt het veel beter leesbaar en voorkomt allerlei ongewenste efecten (zoals smilies die in code echt niet voor komen).

Het is inderdaad belangrijk dat je de code waar je mee werkt, ook goed begrijpt. Dat begrijpen kun je testen door je code aan te passen en dan te zien of de wijziging doet wat je er van verwachtte, en natuurlijk ook als je dan gaat uitzoeken waarom dat niet zo was.

Maar net zo belangrijk, is het dat je je probleem (een wat onvriendelijker woord voor vraagstuk) goed begrijpt. Dus analyseer eens wat je wil bereiken.

Wees ervan bewust hoe snel dingen verlopen in de code. En wat de vertragingstactiek die nu wordt toegepast, eigenlijk precies betekent. Zie voor een hint daarvoor onder aan elk van mijn posts. En wat ik hier vertel is eigenlijk niets anders als wat ArdLab _Gent ook al zei. Het is niet heel erg moeilijk om te maken wat je wil. Maar gezien jouw omstandigheden (schoolproject) moet je het wel zelf maken. Wij assisteren je er graag bij, maar we gaan het niet voor je doen. Dus laat vooral zien wat je allemaal bedenkt. En laat je vooral niet afleiden door dingen die helemaal niet interessant zijn. Wat maak het uit of je iets met een lampje doet, of met de aansturing van een motor (als je dat laatste verder al onder controle zegt te hebben) ? Hoe denk jij dat je de sketches kunt combineren ? Laat maar eens wat zien en wees vooral niet bang dat je daarbij vergissingen maakt. Want het ergste dat je daarmee kan gebeuren, is dat je er iets van leert. En dat is nou net de bedoeling van dit hele ding, toch ?

Je hebt nu dus twee losse programmas die in elkaar verweven moeten worden.

schrijf alles wat in de stepperloop staat in een functie en roep deze aan in de loop doe hetzelfde voor de drukknop dus alles wat in de loop daarvan staat ook in een functie zetten. (simpeler is om gewoon de ingang status van de drukknoppin te vragen en maak je niet druk om de tijd etc is hier niet belangrijk. hou het simpel dan kun je ook uitleggen wat het allemaal doet en daar score je punten mee,

dan testen of het allemaal nog steeds werkt. (

dan in de loop een timer gaan gebruiken die dus telkens een motorstap zet zet de tijd daarvan eerst maar eens op 100 millis. vervolgens kijk je of de drukknop aan is, en dan verander je de tijd van de aanroep van je stepper. zorg dat er geen delays in je programma staan want dat vertraagd de loop.

en laat maar zien wat je doet, ik zal af en toe reageren.