Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.06 KB | None | 0 0
  1. #include <Servo.h>
  2. #define NBR_SERVOS 1
  3.  
  4.  
  5. int RotEn = 2;
  6. int RotClk = 4;
  7. int RotDir = 3;
  8.  
  9. int RotEn2 = 11;
  10. int RotClk2 = 10;
  11. int RotDir2 = 9;
  12.  
  13. int enabled = 0;
  14. int MinAuslenk = 0;
  15. int MaxAuslenk = 105;
  16. int DefAuslenk = 90;
  17. int Auslenk = 0;
  18. int AuslenkDir=0;
  19. int dir = 0;
  20. int windings = 0;
  21. int winding = 0;
  22. int Speed = 1;
  23. int debug = 0;
  24. int start = 0;
  25. int WireTh = 10;
  26. String content = "";
  27. String tcontent = "";
  28. char character;
  29.  
  30. void setup(){
  31. Serial.begin(9600);
  32. pinMode(RotEn,OUTPUT);
  33.  
  34. pinMode(RotClk,OUTPUT);
  35. pinMode(RotDir,OUTPUT);
  36. pinMode(RotClk2,OUTPUT);
  37. pinMode(RotDir2,OUTPUT);
  38. pinMode(RotEn2,OUTPUT);
  39.  
  40. Auslenk = DefAuslenk;
  41. digitalWrite(RotEn,1);
  42. digitalWrite(RotEn2,1);
  43.  
  44. }
  45.  
  46. void doturn(int ldir){
  47. digitalWrite(RotDir,ldir);
  48. for(int i = 1;i<200;i++){
  49. digitalWrite(RotClk,1);
  50. delayMicroseconds(100);
  51. digitalWrite(RotClk,0);
  52. delay(11-Speed);
  53. }
  54. }
  55. void dosteps(int ldir2,int steps){
  56.  
  57. digitalWrite(RotDir2,ldir2);
  58. for(int i = 1;i<steps;i++){
  59. digitalWrite(RotClk2,1);
  60. delayMicroseconds(100);
  61. digitalWrite(RotClk2,0);
  62. delay(1);
  63. }
  64. }
  65.  
  66. void loop(){
  67. while(Serial.available()>0) {
  68. character = Serial.read();
  69. if(character==0x7C){
  70. content = tcontent;
  71. tcontent = "";
  72. content.replace("|","");
  73. if(debug){
  74. Serial.println("got "+ content + " with length "+content.length()); // debug
  75. }
  76. if(content=="help"){
  77. Serial.println("winderenable enables the winder----------------------------------");
  78. Serial.println("winderdisable disables the winder--------------------------------");
  79. Serial.println("start starts the winder------------------------------------------");
  80. Serial.println("reset resets the winder------------------------------------------");
  81. Serial.println("windings<number> sets the num of windings------------------------");
  82. Serial.println("minsturn sets servos min rotation pos----------------------------");
  83. Serial.println("maxsturn sets servos max rotation pos----------------------------");
  84. Serial.println("servturn turns the servo to the entered pos----------------------");
  85. Serial.println("debug insults you and then it toggles the command debugger-------");
  86. Serial.println("speed set the speed from 1 to 10---------------------------------");
  87. Serial.println("printvars prints all variables like speed, windings and isStarted");
  88.  
  89. }
  90.  
  91.  
  92. if(content=="winderenable"){
  93. enabled = 1;
  94. Serial.println("Winder enabled");
  95. }
  96. if(content=="winderdisable"){
  97. enabled = 0;
  98. Serial.println("Winder disabled");
  99. }
  100. if(content=="start"){
  101. start = 1;
  102. Serial.print("Starting wind with ");
  103. Serial.print(windings);
  104. Serial.println(" windings");
  105. }
  106. if(content=="pause"){
  107. start = 0;
  108. Serial.print("Paused wind at ");
  109. Serial.print(winding);
  110. Serial.println(" winding");
  111. }
  112. if(content=="turnr"){
  113. digitalWrite(RotEn,0);
  114. digitalWrite(RotDir,0);
  115. for(int i = 1;i<20;i++){
  116. digitalWrite(RotClk,1);
  117. delayMicroseconds(100);
  118. digitalWrite(RotClk,0);
  119. delay(11-Speed);
  120. }
  121. digitalWrite(RotEn,1);
  122. }
  123. if(content=="turnl"){
  124. digitalWrite(RotEn,0);
  125. digitalWrite(RotDir,1);
  126. for(int i = 1;i<20;i++){
  127. digitalWrite(RotClk,1);
  128. delayMicroseconds(100);
  129. digitalWrite(RotClk,0);
  130. delay(11-Speed);
  131. }
  132. digitalWrite(RotEn,1);
  133. }
  134. if(content=="reset"){
  135. enabled = 0;
  136. start = 0;
  137. winding = 0;
  138. WireTh=0;
  139. AuslenkDir=0;
  140. Serial.println("Resetted!");
  141. }
  142. if(content.substring(0,5)=="speed"){
  143. content = content.substring(5,13);
  144. Speed = content.toInt();
  145. if(Speed>=10){Speed=10;}
  146. if(Speed<=1){Speed=1;}
  147. Serial.print("Set speed to ");
  148. Serial.println(Speed);
  149. }
  150. if(content.substring(0,8)=="windings"){
  151. content = content.substring(8,16);
  152. windings = content.toInt();
  153. Serial.println(windings);
  154. Serial.print("Set windings to ");
  155. Serial.println(windings);
  156. }
  157. if(content.substring(0,8)=="maxsturn"){
  158. content = content.substring(8,16);
  159. MaxAuslenk = content.toInt();
  160. Serial.print("Set max turn to ");
  161. Serial.println(MaxAuslenk);
  162. }
  163. if(content.substring(0,8)=="servturl"){
  164. digitalWrite(RotEn2,0);
  165. content = content.substring(8,16);
  166. int Stepps=content.toInt();
  167. dosteps(0,Stepps);
  168. digitalWrite(RotEn2,1);
  169. }
  170. if(content.substring(0,8)=="servturr"){
  171. digitalWrite(RotEn2,0);
  172. content = content.substring(8,16);
  173. int Stepps=content.toInt();
  174. dosteps(1,Stepps);
  175. digitalWrite(RotEn2,1);
  176. }
  177. if(content.substring(0,8)=="wirethic"){
  178. content = content.substring(8,16);
  179. WireTh=content.toInt();
  180. Serial.print("Set wirethickness (steps per rotation) to ");
  181. Serial.println(WireTh);
  182. }
  183. if(content=="debug"){
  184. debug != debug;
  185. Serial.println("no way nigga, what r u doing? ... its toggled.");
  186. }
  187. if(content=="printvars"){
  188. Serial.print("Windings ");
  189. Serial.println(windings);
  190. Serial.print("Winding ");
  191. Serial.println(winding);
  192. Serial.print("Start ");
  193. Serial.println(start);
  194. Serial.print("Enabled ");
  195. Serial.println(enabled);
  196. Serial.print("Speed ");
  197. Serial.println(Speed);
  198. Serial.print("MaxAuslenk ");
  199. Serial.println(MaxAuslenk);
  200.  
  201.  
  202. }
  203.  
  204. content = "";
  205. }
  206. tcontent.concat(character);
  207. }
  208.  
  209. if(enabled){
  210. digitalWrite(RotEn,!start);
  211. digitalWrite(RotEn2,!start);
  212. if(start){
  213.  
  214. if(Auslenk>MaxAuslenk){Auslenk=MaxAuslenk;}
  215. if(Auslenk<MinAuslenk){Auslenk=MinAuslenk;}
  216.  
  217.  
  218. if(start){
  219.  
  220. winding = winding + 1;
  221.  
  222. if(winding <=windings){
  223.  
  224. if(!AuslenkDir){
  225. Auslenk = Auslenk + 1;
  226. dosteps(0,WireTh);
  227. if(Auslenk>=MaxAuslenk){AuslenkDir=1;};
  228. }else{
  229. Auslenk = Auslenk - 1;
  230. dosteps(1,WireTh);
  231. if(Auslenk<=MinAuslenk){AuslenkDir=0;};
  232. }
  233. doturn(dir);
  234.  
  235. }else{
  236. start = 0;
  237. Serial.println("Done Winding!");
  238. winding=0;
  239. Auslenk=DefAuslenk;
  240. }
  241. //delay(10);
  242.  
  243. }
  244. }
  245. }
  246.  
  247. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement