Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.   listato avanzato per aMAZEing Machine
  3.  
  4.   utilizza lalibreria stepper
  5.   effettua confronti booleani per determinare se muovere
  6.   in senso orario o antiorario
  7.   ciascuno dei due motori
  8.  
  9. */
  10.  
  11. #include <Stepper.h>
  12. // Define number of steps per rotation:
  13. const int stepsPerRevolution = 513;
  14.  
  15. // Wiring:
  16. // Pin 8 to IN1 on the ULN2003 driver
  17. // Pin 9 to IN2 on the ULN2003 driver
  18. // Pin 10 to IN3 on the ULN2003 driver
  19. // Pin 11 to IN4 on the ULN2003 driver
  20.  
  21. const int  STATE = 13;
  22. int passi = 2;
  23. int tasto1, tasto2, tasto3, tasto4;
  24. boolean passiSx, passiDx;
  25.  
  26. Stepper motoreDx = Stepper(stepsPerRevolution, 1, 2, 3, 4);
  27. Stepper motoreSx = Stepper(stepsPerRevolution, 5, 6, 7, 8);
  28.  
  29. void setup() {
  30.   pinMode(A5, INPUT_PULLUP); //pins pulsanti da Sinistra a Destra
  31.   pinMode(A4, INPUT_PULLUP);
  32.   pinMode(A3, INPUT_PULLUP);
  33.   pinMode(A2, INPUT_PULLUP);
  34.   pinMode(13, INPUT);
  35.   pinMode(9, OUTPUT); // LED
  36.   pinMode(10, OUTPUT);// LED
  37.   pinMode(11, OUTPUT);// LED
  38.   pinMode(12, OUTPUT);// LED
  39.   digitalWrite(9, LOW);
  40.   digitalWrite(10, LOW);
  41.   digitalWrite(11, LOW);
  42.   digitalWrite(12, LOW);
  43.  
  44.   motoreDx.setSpeed(20);
  45.   motoreSx.setSpeed(20);
  46.  
  47.   Serial.begin(9600);
  48. }
  49.  
  50. void loop() {
  51.   tasto4 = int(analogRead(A5) / 513); // tasto premuto --> analogRead > 513 --> int(...) = 1, diversamente int(...) = 0
  52.   tasto3 =  int(analogRead(A4) / 513);
  53.   tasto2 =  int(analogRead(A3) / 513);
  54.   tasto1 =  int(analogRead(A2) / 513);
  55.   digitalWrite(12, tasto4);
  56.   digitalWrite(11, tasto3);
  57.   digitalWrite(10, tasto2);
  58.   digitalWrite(9, tasto1);
  59.  
  60.   //MOTORE SINISTRO
  61.   passiSx = tasto4 && !tasto3; // condizione verificata se viene premuto il tasto 4 e NON il tasto 3
  62.   motoreSx.step(passiSx * passi);
  63.   delay(50);
  64.   passiSx = !tasto4 && tasto3; // condizione verificata se viene premuto il tasto 3 e NON il tasto 4
  65.   motoreSx.step(-passiSx * passi);
  66.   delay(50);
  67.   //----------------------------------------------------------------------------------------------
  68.   //MOTORE DESTRO
  69.   passiDx = tasto2 && !tasto1;
  70.   motoreDx.step(passiDx * passi);
  71.   delay(50);
  72.   passiDx = !tasto2 && tasto1;
  73.   motoreDx.step(-passiDx * passi);
  74.   delay(50);
  75.   //----------------------------------------------------------------------------------------------
  76.   //CONDIZIONE DI VITTORIA O SCONFITTA
  77.   Serial.println(digitalRead(STATE));
  78.   if (digitalRead(STATE) == 0) //sensore di vittoria
  79.   {
  80.     digitalWrite (9, HIGH);
  81.     digitalWrite (10, HIGH);
  82.     digitalWrite (11, HIGH);
  83.     digitalWrite (12, HIGH);
  84.     delay(2000);
  85.     digitalWrite (9, LOW);
  86.     digitalWrite (10, LOW);
  87.     digitalWrite (11, LOW);
  88.     digitalWrite (12, LOW);
  89.   }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement