Segítségeteket szeretném kérni, egy egyenáramú motornak szeretném a fordulatszámát és az irányát szabályozni. Jelenleg azt szeretném elérni, hogy két nyomógomb segítségével tudjam a motor forgórészének a forgási irányát megváltoztatni és egy potméter segítségével a fordulatszámát szabályozni mindkét irányban. Készítettem egy programot, de nem úgy működik ahogyan elképzeltem:
Kód: Egész kijelölése
const int pinA = 5;
const int pinB = 6;
const int PotPin = A0;
int PotVal = 0;
int pwm = 0;
int modeval;
const int GombPIN1 = 2;
const int GombPIN2 = 3;
enum estate {Stop, Jobb, Bal};
estate State = Stop;
void setup() {
Serial.begin(9600);
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(GombPIN1, INPUT_PULLUP);
pinMode(GombPIN2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(GombPIN1), jobb, FALLING);
attachInterrupt(digitalPinToInterrupt(GombPIN2), bal, FALLING);
}
void loop() {
switch (State) {
case Stop:
analogWrite(pinA, 0);
analogWrite(pinB, 0);
if (modeval == 1) {State = Jobb;}
if (modeval == 2) {State = Bal;}
break;
case Jobb:
while (modeval == 1) {
PotVal = analogRead(PotPin);
pwm = map(PotVal, 0, 1023, 0, 255);
analogWrite(pinA, pwm);
delay(10);
break;
case Bal:
while (modeval == 2) {
PotVal = analogRead(PotPin);
pwm = map(PotVal, 0, 1023, 0, 255);
analogWrite(pinB, pwm);
delay(10);
break;
}
}
}
}
void jobb() {modeval = 1;}
void bal() {modeval = 2;}
Egyéb információ: A kapcsolásban H-hidat használok a forgásirány megváltoztatásához.
Válaszokat előre is köszönöm!