CRANE spelet (31 / 34 steg)
: 31 Delaktivitetskod med switchar
Eftersom den här domänkontrollanten är bara en massa växlar, kan vi kasta bort all kod som hade att göra med den potentiameters som fanns i tummen joysticks. Detta innebär att vi inte har kontroll över hastigheten.
Här är registeransvarige i aktion:
Här är koden för att köra kranen spelet med Leap Frog-styrenheten. Detta används bara 6 push bottons för att styra stepper motor och de två DC-motorerna.
Arduino kod / / /
Hastigheter
int Delay_X = 1000; steg dröjsmål: mikrosekunder (upp förseningen = långsammare hastighet
int Speed_S = 255; spindeln fart 0-255
int Speed_C = 255; Clow hastighet 0-255
STEPPER PINS
Utgångar
int Step_X = 13.
int Dir_X = 12;
int Enable_X = 8;
Ingångar
int vänster = 16.
int höger = 17;
variabler
int val_Left = låg;
int val_Right = låg;
SPINDEL PINS
Utgångar
int Dir_A = 4;
int Speed_A = 5;
Ingångar
int upp = 14.
int ner = 15.
variabler
int val_Up = låg;
int val_Down = låg;
KLO PINS
Utgångar
int Dir_B = 7.
int Speed_B = 6;
Ingångar
int öppen = 18;
int nära = 19.
variabler
int val_Open = låg;
int val_Close = låg;
Ogiltiga inställningar () {
setup upp stepper pins
pinMode (Step_X, OUTPUT);
pinMode (Dir_X, OUTPUT);
pinMode (Enable_X, OUTPUT);
pinMode (vänster, indata);
pinMode (rätt, indata);
setup DC motor A stift - för spindel
pinMode (Dir_A, OUTPUT);
pinMode (Speed_A, OUTPUT);
pinMode (upp, ingång);
pinMode (ned, ingång);
setup DC motor B stift - för klo
pinMode (Dir_B, OUTPUT);
pinMode (Speed_B, OUTPUT);
pinMode (öppen, indata);
pinMode (nära, indata);
}
void loop() {
STEPPER LÄS OCH KONTROLL / /
val_Left = digitalRead(Left);
val_Right = digitalRead(Right);
om (val_Left == hög) {
digitalWrite(Enable_X,HIGH); aktiverar
digitalWrite (Dir_X, hög); Ange riktning
digitalWrite(Step_X,HIGH);
delayMicroseconds(2);
digitalWrite(Step_X,LOW);
delayMicroseconds(Delay_X);
}
om (val_Right == hög) {
digitalWrite(Enable_X,HIGH); aktiverar
digitalWrite (Dir_X, låg); Ange riktning (andra riktning)
digitalWrite(Step_X,HIGH);
delayMicroseconds(2);
digitalWrite(Step_X,LOW);
delayMicroseconds(Delay_X);
}
om ((val_Left == LOW) & & (val_Right == låg)) {
digitalWrite (Enable_X, låg); stepper off
}
SPINDEL LÄS OCH KONTROLL / /
val_Up = digitalRead(Up);
val_Down = digitalRead(Down);
om (val_Up == hög) {
digitalWrite (Dir_A, hög);
analogWrite (Speed_A, Speed_S);
}
om (val_Down == hög) {
digitalWrite (Dir_A, låg);
analogWrite (Speed_A, Speed_S);
}
om ((val_Up ==LOW) & & (val_Down == låg)) {
analogWrite (Speed_A, 0);
}
KLO LÄS OCH KONTROLL / /
val_Open = digitalRead(Open);
val_Close = digitalRead(Close);
om (val_Open == hög) {
digitalWrite (Dir_B, hög);
analogWrite (Speed_B, Speed_C);
}
om (val_Close == hög) {
digitalWrite (Dir_B, låg);
analogWrite (Speed_B, Speed_C);
}
om ((val_Open ==LOW) & & (val_Close == låg)) {
analogWrite (Speed_B, 0);
}
}