Czarek2222

Ard: silnik sterowany

Sep 3rd, 2017
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 KB | None | 0 0
  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //wyświetlacz
  3.  
  4. int i=0; //wartosc predkosci
  5. int s=0; //0-w prawo, 1-w lewo
  6. void setup()
  7. {
  8. pinMode(11,INPUT_PULLUP); //rozruch
  9. pinMode(12,INPUT_PULLUP); //zatrz
  10. pinMode(13,INPUT_PULLUP); //awaryjny stop
  11. pinMode(9,OUTPUT);
  12. pinMode(8,OUTPUT);
  13. pinMode(10,OUTPUT);
  14. pinMode(14,INPUT_PULLUP); //strona krecenia L
  15. pinMode(15,INPUT_PULLUP); //strona krecenia R
  16. digitalWrite(8,LOW);
  17. digitalWrite(10,HIGH);
  18.  
  19. lcd.begin(16,2);
  20. lcd.setCursor(0,0); //ekran startowy
  21. lcd.print("Silnik MT64");
  22. lcd.setCursor(0,1);
  23. lcd.print("by Cezar P.");
  24. delay(2000);
  25. lcd.clear();
  26. lcd.setCursor(0,0);
  27. lcd.print("W= ");
  28. lcd.setCursor(3,0);
  29. lcd.print(i);
  30. lcd.setCursor(7,0);
  31. lcd.print("jedn.");
  32. lcd.setCursor(1,1);
  33. lcd.print("Kier.- R");
  34. }
  35.  
  36. void start() //rozruch
  37. {
  38. if(i<255) //blokada na 255
  39. {
  40. i=i+1;
  41. }
  42. else
  43. i=255; //max
  44. analogWrite(9,i);
  45. if(i==9 || i==99) //czyszczenie ekranu z pozost. zer
  46. lcd.clear();
  47. lcd.setCursor(0,0);
  48. lcd.print("W= ");
  49. lcd.setCursor(3,0);
  50. lcd.print(i);
  51. lcd.setCursor(7,0);
  52. lcd.print("jedn.");
  53.  
  54. if(s==0) //zmiana kierunku na zmiennych kierunku
  55. {
  56. lcd.setCursor(1,1);
  57. lcd.print("Kier.- R");
  58. }
  59. if (s==1)
  60. {
  61. lcd.setCursor(1,1);
  62. lcd.print("Kier.- L");
  63. }
  64. delay(50);
  65. }
  66.  
  67. void stops()
  68. {
  69. if(i>0)
  70. {
  71. i=i-1;
  72. }
  73. else
  74. i=0;
  75. analogWrite(9,i);
  76. if(i==9 || i==99) //czyszczenie ekranu z pozost. zer
  77. lcd.clear();
  78. lcd.setCursor(0,0);
  79. lcd.print("W= ");
  80. lcd.setCursor(3,0);
  81. lcd.print(i);
  82. lcd.setCursor(7,0);
  83. lcd.print("jedn.");
  84.  
  85. if(s==0)
  86. {
  87. lcd.setCursor(1,1);
  88. lcd.print("Kier.- R");
  89. }
  90. if (s==1)
  91. {
  92. lcd.setCursor(1,1);
  93. lcd.print("Kier.- L");
  94. }
  95. delay(50);
  96. }
  97.  
  98. void awaryj1()
  99. {
  100. analogWrite(9,0);
  101. i=0;
  102. }
  103. void awaryj2()
  104. {
  105. lcd.clear();
  106. lcd.setCursor(0,0);
  107. lcd.print("STOP AWARYJNY");
  108. lcd.setCursor(0,1);
  109. lcd.print("W= ");
  110. lcd.setCursor(3,1);
  111. lcd.print(i);
  112. lcd.setCursor(5,1);
  113. lcd.print("jedn.");
  114. lcd.setCursor(15,0);
  115. lcd.print("3");
  116. delay(1000);
  117. lcd.setCursor(15,0);
  118. lcd.print("2");
  119. delay(1000);
  120. lcd.setCursor(15,0);
  121. lcd.print("1");
  122. delay(1000);
  123. lcd.clear();
  124. lcd.setCursor(0,0);
  125. lcd.print("W= ");
  126. lcd.setCursor(3,0);
  127. lcd.print(i);
  128. lcd.setCursor(7,0);
  129. lcd.print("jedn.");
  130. if(s==0)
  131. {
  132. lcd.setCursor(1,1);
  133. lcd.print("Kier.- R");
  134. }
  135. if (s==1)
  136. {
  137. lcd.setCursor(1,1);
  138. lcd.print("Kier.- L");
  139. }
  140. }
  141. void loop()
  142. {
  143. skok:
  144. if(i<75) //blokada na zmiane kierunku w pracy silnika
  145. {
  146. if(digitalRead(14)==LOW)
  147. {
  148. s=1;
  149. digitalWrite(8,HIGH);
  150. digitalWrite(10,LOW);
  151. lcd.setCursor(1,1);
  152. lcd.print("Kier.- L");
  153. }
  154.  
  155. if(digitalRead(15)==LOW)
  156. {
  157. s=0;
  158. digitalWrite(8,LOW);
  159. digitalWrite(10,HIGH);
  160. lcd.setCursor(1,1);
  161. lcd.print("Kier.- R");
  162. }
  163. }
  164. if(digitalRead(11)==LOW) //start
  165. {
  166. start();
  167. }
  168.  
  169. if(digitalRead(12)==LOW) //stop
  170. {
  171. stops();
  172. }
  173.  
  174. if(digitalRead(13)==LOW) //stop
  175. {
  176. awaryj1();
  177. awaryj2();
  178. goto skok; //skocz na poczatek
  179. }
  180. }
Add Comment
Please, Sign In to add comment