absite

stepper

Sep 20th, 2018
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  3.  
  4. //Definizione dei PIN
  5. const int pinDir = 2;
  6. const int pinStep = 3;
  7. int giri = 1; //giri * minuto
  8. int vel1 = A5;
  9. int vel2 = A4;
  10. int vel3 = A3;
  11. int vel = 1;
  12. int value = 0;
  13.  
  14. void setup() {
  15. //inizializzo i PIN come OUTPUT
  16. pinMode(pinStep, OUTPUT);
  17. pinMode(pinDir, OUTPUT);
  18. lcd.begin(16, 2);
  19. lcd.print("giri/min:");
  20. lcd.setCursor(0, 1);
  21. lcd.print("velocita:");
  22.  
  23. Serial.begin(9600);
  24. }
  25.  
  26. void loop() {
  27.  
  28. int sensorValue = analogRead(A0);
  29. if(sensorValue == 0){
  30. vel = vel + 1;
  31. delay (500);
  32. }
  33. if(sensorValue == 504){
  34. vel = vel - 1;
  35. delay (500);
  36. }
  37.  
  38. if(vel == 1){
  39. analogWrite(vel1, 255);
  40. analogWrite(vel2, 255);
  41. analogWrite(vel3, 255);
  42. }
  43. if(vel == 2){
  44. analogWrite(vel1, 0);
  45. analogWrite(vel2, 255);
  46. analogWrite(vel3, 255);
  47. }
  48. if(vel == 3){
  49. analogWrite(vel1, 0);
  50. analogWrite(vel2, 0);
  51. analogWrite(vel3, 255);
  52. }
  53. if(vel == 4){
  54. analogWrite(vel1, 0);
  55. analogWrite(vel2, 0);
  56. analogWrite(vel3, 0);
  57. }
  58. if(vel >= 5){
  59. vel = 1;
  60. }
  61. if(vel <= 0){
  62. vel = 1;
  63. }
  64.  
  65.  
  66.  
  67. long velocita = 600000 / giri; //Si tratta di microsecondi tra un impulso e l'altro sul pin STEP
  68.  
  69.  
  70. if (sensorValue == 143){
  71. giri = giri + 1;
  72. delay (500);
  73. }
  74.  
  75. if (sensorValue == 331){
  76. giri = giri - 1;
  77. delay (500);
  78. }
  79.  
  80.  
  81. //definiamo la direzione del motore
  82. if (giri < 0){
  83. digitalWrite(pinDir, LOW);
  84. }
  85. else{
  86. digitalWrite(pinDir, HIGH);
  87. }
  88. lcd.setCursor(9, 0);
  89. lcd.print(giri);
  90. lcd.setCursor(9, 1);
  91. lcd.print(vel);
  92.  
  93. if(giri == 0){
  94. digitalWrite(pinStep, LOW);
  95. }
  96. else if (value == 1){
  97. digitalWrite(pinStep, LOW);
  98. lcd.setCursor(12, 0);
  99. lcd.print("STOP");
  100. }
  101. else{
  102. digitalWrite(pinStep, HIGH);
  103. delayMicroseconds(velocita);
  104. digitalWrite(pinStep, LOW);
  105. delayMicroseconds(velocita);
  106. }
  107.  
  108. if(sensorValue == 740){
  109. value = value + 1;
  110. delay (500);
  111. }
  112.  
  113. if (value == 2){
  114. value = 0;
  115. lcd.setCursor(12, 0);
  116. lcd.print(" ");
  117. }
  118. }
Add Comment
Please, Sign In to add comment