Advertisement
pippero

Untitled

Feb 1st, 2021
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. //https://www.makerguides.com/a4988-stepper-motor-driver-arduino-tutorial/
  2.  
  3. // Includere la libreria AccelStepper:
  4. #include <AccelStepper.h>
  5. // Definisce i collegamenti del motore passo-passo e il tipo di interfaccia del motore. Il tipo di interfaccia del motore deve essere impostato su 1 quando si utilizza un driver:
  6. #define dirPin 3
  7. #define stepPin 2
  8. #define motorInterfaceType 1
  9. #define ENA 5
  10. // Crea una nuova istanza della classe AccelStepper:
  11. AccelStepper stepper = AccelStepper ( motorInterfaceType, stepPin, dirPin ) ;
  12.  
  13. unsigned long previous = 0;
  14. unsigned long previous1 = 0;
  15. unsigned long previous2 = 0;
  16. boolean lastButtonState = HIGH;
  17. boolean buttonState;
  18. int repeat = 1;
  19. int var = 2;
  20. int old_var = 98;
  21. int segnale;
  22. unsigned long ultimo;
  23. void setup() {
  24. stepper. setMaxSpeed ( 1000 ) ;
  25. stepper.setAcceleration(200);
  26. Serial.begin(9600);
  27. pinMode (4, INPUT);
  28. pinMode (ENA, OUTPUT);
  29. //pinMode (DIR, OUTPUT);
  30. // pinMode (STEP, OUTPUT);
  31. //digitalWrite(ENA, LOW);
  32. }
  33. void loop() {
  34. scrivi();
  35. motore();
  36. pulsanti_tempo();
  37. }
  38. void scrivi() {
  39.  
  40. if (var != old_var) {
  41. Serial.println(var);
  42. old_var = var;
  43. if (var == 1 ) {
  44. Serial.println("attesa calcolo valore moneta");
  45. }
  46. if (var == 2) {
  47. Serial.println("carico moneta");
  48. }
  49. if (var == 3) {
  50. Serial.println("assenza moneta ");
  51. }
  52. }
  53. }
  54.  
  55. void pulsanti_tempo() {
  56. if (digitalRead(4) == LOW && lastButtonState == HIGH && var != 3) {
  57. lastButtonState = LOW;
  58. var = 1; // qui tempo calcolo moneta
  59. ultimo = millis();
  60. previous = millis();
  61. }
  62. if (millis() - previous > 2000 ) {
  63. lastButtonState = HIGH;// qui carico mnoneta
  64. previous = 0;
  65. var = 2;
  66. }
  67. if ( ( millis() - ultimo ) > 5000 ) {
  68. var = 3; // qui scarico mnoneta
  69. }
  70. if ( ( millis() - ultimo ) > 8000 ) {
  71. ultimo = 0;// qui tempo max scarico mnoneta
  72. ultimo = millis();
  73. //previous = millis();
  74. var = 2;
  75.  
  76. }
  77. }
  78.  
  79. void motore() {
  80. switch (var) {
  81. case 1: {
  82. stepper. setSpeed ( 0 ) ;
  83. stepper. runSpeed () ;
  84. }
  85. break;
  86. case 2: {
  87.  
  88. digitalWrite(ENA, LOW);//qui fermo il motore
  89. // Fa avanzare il motore con una velocitΓ  costante come impostato da setSpeed ​​():
  90. stepper. setSpeed ( 150 ) ;
  91. stepper. runSpeed () ;
  92. }
  93. break;
  94. case 3: {//qui deve tornare indietro di 50 passi indietro
  95. digitalWrite(ENA, LOW);
  96. // Fa andare indietro il motore
  97.  
  98. if (stepper.distanceToGo() == -150)
  99. stepper.moveTo(-stepper.currentPosition());
  100.  
  101. stepper.run();
  102. //finito di muoversi va in var =4
  103. var = 4;
  104. }
  105. break;
  106.  
  107. case 4: {
  108. ultimo = millis();
  109. //previous = millis();
  110. var = 2;
  111. }
  112. break;
  113. }
  114.  
  115.  
  116.  
  117.  
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement