Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- listato avanzato per aMAZEing Machine
- utilizza lalibreria stepper
- effettua confronti booleani per determinare se muovere
- in senso orario o antiorario
- ciascuno dei due motori
- */
- #include <Stepper.h>
- // Define number of steps per rotation:
- const int stepsPerRevolution = 513;
- // Wiring:
- // Pin 8 to IN1 on the ULN2003 driver
- // Pin 9 to IN2 on the ULN2003 driver
- // Pin 10 to IN3 on the ULN2003 driver
- // Pin 11 to IN4 on the ULN2003 driver
- const int STATE = 13;
- int passi = 2;
- int tasto1, tasto2, tasto3, tasto4;
- boolean passiSx, passiDx;
- Stepper motoreDx = Stepper(stepsPerRevolution, 1, 2, 3, 4);
- Stepper motoreSx = Stepper(stepsPerRevolution, 5, 6, 7, 8);
- void setup() {
- pinMode(A5, INPUT_PULLUP); //pins pulsanti da Sinistra a Destra
- pinMode(A4, INPUT_PULLUP);
- pinMode(A3, INPUT_PULLUP);
- pinMode(A2, INPUT_PULLUP);
- pinMode(13, INPUT);
- pinMode(9, OUTPUT); // LED
- pinMode(10, OUTPUT);// LED
- pinMode(11, OUTPUT);// LED
- pinMode(12, OUTPUT);// LED
- digitalWrite(9, LOW);
- digitalWrite(10, LOW);
- digitalWrite(11, LOW);
- digitalWrite(12, LOW);
- motoreDx.setSpeed(20);
- motoreSx.setSpeed(20);
- Serial.begin(9600);
- }
- void loop() {
- tasto4 = int(analogRead(A5) / 513); // tasto premuto --> analogRead > 513 --> int(...) = 1, diversamente int(...) = 0
- tasto3 = int(analogRead(A4) / 513);
- tasto2 = int(analogRead(A3) / 513);
- tasto1 = int(analogRead(A2) / 513);
- digitalWrite(12, tasto4);
- digitalWrite(11, tasto3);
- digitalWrite(10, tasto2);
- digitalWrite(9, tasto1);
- //MOTORE SINISTRO
- passiSx = tasto4 && !tasto3; // condizione verificata se viene premuto il tasto 4 e NON il tasto 3
- motoreSx.step(passiSx * passi);
- delay(50);
- passiSx = !tasto4 && tasto3; // condizione verificata se viene premuto il tasto 3 e NON il tasto 4
- motoreSx.step(-passiSx * passi);
- delay(50);
- //----------------------------------------------------------------------------------------------
- //MOTORE DESTRO
- passiDx = tasto2 && !tasto1;
- motoreDx.step(passiDx * passi);
- delay(50);
- passiDx = !tasto2 && tasto1;
- motoreDx.step(-passiDx * passi);
- delay(50);
- //----------------------------------------------------------------------------------------------
- //CONDIZIONE DI VITTORIA O SCONFITTA
- Serial.println(digitalRead(STATE));
- if (digitalRead(STATE) == 0) //sensore di vittoria
- {
- digitalWrite (9, HIGH);
- digitalWrite (10, HIGH);
- digitalWrite (11, HIGH);
- digitalWrite (12, HIGH);
- delay(2000);
- digitalWrite (9, LOW);
- digitalWrite (10, LOW);
- digitalWrite (11, LOW);
- digitalWrite (12, LOW);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement