/*
Forum: https://forum.arduino.cc/t/dc-motor-mit-l293d-zufallig-ansteuern/1210964/6
Wokwi: https://wokwi.com/projects/387026261224121345
*/
const int rueckwaertsPin = 8;
const int vorwaertsPin = 7;
const int schalternormalPin = 6;
const int schalterzufallPin = 5;
const int pwmsignalmotorPin = 3;
int normal;
int zufall;
long randomdrehzahl;
long randomrichtung;
void setup() {
pinMode (pwmsignalmotorPin, OUTPUT);
pinMode (vorwaertsPin, OUTPUT);
pinMode (rueckwaertsPin, OUTPUT);
pinMode (schalternormalPin, INPUT_PULLUP);
pinMode (schalterzufallPin, INPUT_PULLUP);
randomSeed(analogRead(0));
}
void loop() {
randomdrehzahl = random(60, 255);
randomrichtung = random(0, 2); // ergibt 0 oder 1 !!!!! Die 2 wird nicht erreicht!!
normal = digitalRead (schalternormalPin);
zufall = digitalRead (schalterzufallPin);
if (normal == 1)
{
setMotor(true,60);
delay(20); // Poor man's debouncing ...
}
if (zufall == 1 || !normal)
{
setMotor(randomrichtung,randomdrehzahl);
delay(2000);
}
}
void setMotor(boolean Vorwaerts, int tempo) {
if (Vorwaerts) {
digitalWrite(rueckwaertsPin, 0);
digitalWrite(vorwaertsPin, 1);
} else {
digitalWrite(rueckwaertsPin, 1);
digitalWrite(vorwaertsPin, 0);
}
analogWrite (pwmsignalmotorPin, 60);
}