Dussss. Wat mot ik hebbe?
const int enablePin = 3; // 3-5 digitale pinnen van arduino nanoconst int dir1 = 4;const int dir2 = 5;enum states { // constantes voor de 'states' moveLeft = 0, moveRight,};// CONSTANTES#define accelerationInterval 21 // Trein moet van ~20 naar 255 in 5000ms. 5000ms / (255-20) = 21#define driveTime 20000 // 20s rij tijd voor treinen#define speedMin 19 // minimale dutyCycle. Trein rijdt wss niet onder de 20#define speedMax 255 // maximale dutyCycle -> maximale snelheid. Mag niet boven 255 zijn.// VARIABELENunsigned long previousMillis1, previousMillis2;unsigned char dutyCycle = 0, speed;unsigned char state = moveLeft;void setup() // 1 malige setup{ pinMode(enablePin, OUTPUT); // configureer deze 3 pinnen als outputs pinMode(dir1, OUTPUT); pinMode(dir2, OUTPUT);}void loop() // eindeloze loop{ moveTrain(); // call naar deze functie, staat er onder}void moveTrain(){ switch(state) { case moveLeft: digitalWrite(dir1, LOW); digitalWrite(dir2, HIGH); if(millis() - previousMillis1 > accelerationInterval) { // als huidige tijd - vorige tijd groter is dan gewenst interval previousMillis1 = millis(); // sla huidige tijd op. if(speed < speedMax) { speed += 1; // verhoog duty cycle met 1, elke accelerationInterval als hij nog niet maximaal is } analogWrite(enablePin, speed); // zet de nieuwe duty cycle op de enable pin } if(millis() - previousMillis2 > driveTime) { previousMillis2 = millis(); speed = speedMin; // reset speed state = moveRight; // volgende state } break; // einde van 'moveLeft' case moveRight: digitalWrite(dir1, HIGH); // andere kant op digitalWrite(dir2, LOW); if(millis() - previousMillis1 > accelerationInterval) { // als huidige tijd - vorige tijd groter is dan gewenst interval previousMillis1 = millis(); // sla huidige tijd op. if(speed < speedMax) { speed += 1; // verhoog duty cycle met 1, elke accelerationInterval als hij nog niet maximaal is } analogWrite(enablePin, speed); } if(millis() - previousMillis2 > driveTime) { previousMillis2 = millis(); speed = speedMin; state = moveLeft; } break; // einde van 'moveRight' }}