Guest User

Untitled

a guest
Jun 22nd, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.87 KB | None | 0 0
  1. #define X_MIN_PIN 3
  2. #ifndef X_MAX_PIN
  3. #define X_MAX_PIN 2
  4. #endif
  5. #define Y_MIN_PIN 14
  6. #define Y_MAX_PIN 15
  7. #define Z_MIN_PIN 18
  8. #define Z_MAX_PIN 19
  9.  
  10. #define X_STEP_PIN 54
  11. #define X_DIR_PIN 55
  12. #define X_ENABLE_PIN 38
  13. #define X_CS_PIN 53
  14.  
  15. #define Y_STEP_PIN 60
  16. #define Y_DIR_PIN 61
  17. #define Y_ENABLE_PIN 56
  18. #define Y_CS_PIN 49
  19.  
  20. #define Z_STEP_PIN 46
  21. #define Z_DIR_PIN 48
  22. #define Z_ENABLE_PIN 62
  23. #define Z_CS_PIN 40
  24.  
  25. int x;
  26. int y;
  27. int z;
  28. int krokix=0;
  29. int krokiy=0;
  30. int krokiz=0;
  31. int tmp;
  32. bool wyslane = true;
  33. int xmin;
  34.  
  35. String s;
  36.  
  37.  
  38. void setup() {
  39.  
  40. Serial.begin(57600);
  41.  
  42. pinMode(X_MAX_PIN, INPUT);
  43. digitalWrite(X_MAX_PIN,HIGH);
  44. pinMode(X_MIN_PIN, INPUT);
  45.  
  46. pinMode(Y_MAX_PIN, INPUT);
  47. digitalWrite(Y_MAX_PIN,HIGH);
  48.  
  49. pinMode(Z_MAX_PIN, INPUT);
  50. digitalWrite(Z_MAX_PIN,HIGH);
  51.  
  52. //silnik X
  53. pinMode(X_ENABLE_PIN,OUTPUT);
  54. digitalWrite(X_ENABLE_PIN, LOW);
  55. pinMode(X_DIR_PIN,OUTPUT);
  56. digitalWrite(X_DIR_PIN,LOW);
  57. pinMode(X_STEP_PIN,OUTPUT);
  58.  
  59. //silnik Y
  60. pinMode(Y_ENABLE_PIN,OUTPUT);
  61. digitalWrite(Y_ENABLE_PIN, LOW);
  62. pinMode(Y_DIR_PIN,OUTPUT);
  63. digitalWrite(Y_DIR_PIN,LOW);
  64. pinMode(Y_STEP_PIN,OUTPUT);
  65.  
  66. //silnik Z
  67. pinMode(Z_ENABLE_PIN,OUTPUT);
  68. digitalWrite(Z_ENABLE_PIN, LOW);
  69. pinMode(Z_DIR_PIN,OUTPUT);
  70. digitalWrite(Z_DIR_PIN,LOW);
  71. pinMode(Z_STEP_PIN,OUTPUT);
  72.  
  73.  
  74.  
  75. }
  76.  
  77. void loop() {
  78.  
  79. //kontrola nad liczba krokow
  80. while (Serial.available()>0)
  81. {
  82. s = Serial.readStringUntil('\n');
  83. sscanf(s.c_str(),"x %d y %d z %d \n", &krokix, &krokiy, &krokiz);
  84. wyslane= false;
  85.  
  86. if(krokix < 0)
  87. {
  88. digitalWrite(X_DIR_PIN,HIGH);
  89. krokix = -krokix;
  90. }
  91. else
  92. {
  93. digitalWrite(X_DIR_PIN,LOW);
  94. }
  95. if(krokiy < 0)
  96. {
  97. digitalWrite(Y_DIR_PIN,HIGH);
  98. krokiy = -krokiy;
  99. }
  100. else
  101. {
  102. digitalWrite(Y_DIR_PIN,LOW);
  103. }
  104. if(krokiz < 0)
  105. {
  106. digitalWrite(Z_DIR_PIN,HIGH);
  107. krokiz = -krokiz;
  108. }
  109. else
  110. {
  111. digitalWrite(Z_DIR_PIN,LOW);
  112. }
  113. // tmp=Serial.parseInt();
  114. // if (tmp>0)
  115. // {
  116. // krokix=tmp;
  117. // krokiy=tmp;
  118. // krokiz=tmp;
  119. // }
  120. }
  121. x = digitalRead(X_MAX_PIN);
  122. //Serial.println(x);
  123.  
  124. y = digitalRead(Y_MAX_PIN);
  125. //Serial.println(y);
  126.  
  127. z = digitalRead(Z_MAX_PIN);
  128. //Serial.println(z);
  129. if (x==0 && krokix>0)
  130. {
  131. digitalWrite(X_STEP_PIN, HIGH);
  132. krokix--;
  133. }
  134. if(y==0 && krokiy>0)
  135. {
  136. digitalWrite(Y_STEP_PIN, HIGH);
  137. krokiy--;
  138. }
  139.  
  140. if(z==0 && krokiz>0)
  141. {
  142. digitalWrite(Z_STEP_PIN, HIGH);
  143. krokiz--;
  144. }
  145.  
  146.  
  147.  
  148.  
  149. delayMicroseconds(500);
  150. digitalWrite(X_STEP_PIN, LOW);
  151. digitalWrite(Y_STEP_PIN, LOW);
  152. digitalWrite(Z_STEP_PIN, LOW);
  153. delayMicroseconds(500);
  154.  
  155. if(krokix ==0 && krokiy == 0 && krokiz == 0 && wyslane == false)
  156. {
  157. Serial.println("ok");
  158. wyslane = true;
  159. }
  160. xmin=digitalRead(X_MIN_PIN);
  161. if(xmin == 0)
  162. {
  163. digitalWrite(X_ENABLE_PIN,HIGH);
  164. digitalWrite(Y_ENABLE_PIN,HIGH);
  165. digitalWrite(Z_ENABLE_PIN,HIGH);
  166.  
  167. }
  168. else
  169. {
  170. digitalWrite(X_ENABLE_PIN,LOW);
  171. digitalWrite(Y_ENABLE_PIN,LOW);
  172. }
  173. }
  174.  
  175.  
  176.  
  177.  
  178. ///////////////////////////////MATLAB
  179.  
  180.  
  181.  
  182. t=0:0.1:2*pi;
  183.  
  184. traj1=round(500*sin(t));
  185. traj2=round(500*sin(t+(2*pi/3)));
  186. traj3=round(500*sin(t+(4*pi/3)));
  187.  
  188.  
  189. kroki1=traj1(2:end)-traj1(1:end-1);
  190. kroki2=traj2(2:end)-traj2(1:end-1);
  191. kroki3=traj3(2:end)-traj3(1:end-1);
  192.  
  193. for i=1:length(kroki1)
  194. fprintf(s1,'x %d y %d z %d\n',[kroki1(i),kroki2(i),kroki3(i)]);
  195. [kroki1(i),kroki2(i),kroki3(i)]
  196. while(s1.BytesAvailable == 0)
  197. end
  198. while(s1.BytesAvailable > 0)
  199. fscanf(s1)
  200. end
  201. end
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210. ///////////////////////////////////////////////OBSŁUGA GRZAŁKI I WENTYLATORA. REGULACJA TEMPERATURY.
  211.  
  212. #include <LiquidCrystal.h>
  213.  
  214. #define TEMP0 13
  215. #define a -7.81086316639610e-07
  216. #define b 0.00135944941813236
  217. #define c -0.865762638670255
  218. #define d 292.399926740249
  219. #define HEATER 10
  220. #define FAN 44
  221. //#define FAN2 9
  222.  
  223. LiquidCrystal lcd(16, 17, 23, 25, 27, 29);
  224. int x;
  225. double temp, e, u, i = 0,tempz;
  226.  
  227.  
  228.  
  229. void setup() {
  230. pinMode(HEATER, OUTPUT);
  231. digitalWrite(HEATER, LOW);
  232. pinMode(FAN, OUTPUT);
  233. digitalWrite(FAN, HIGH);
  234. //pinMode(FAN2, OUTPUT);
  235. Serial.begin(57600);
  236. lcd.begin(20, 4);
  237. lcd.print("");
  238. }
  239.  
  240. void loop() {
  241. x = analogRead(TEMP0);
  242. Serial.println(x);
  243. temp = a * (double)pow(x, 3) + b * (double)pow(x, 2) + c * (double)x + d;
  244. lcd.setCursor(0, 0);
  245. lcd.print(temp);
  246. tempz=150;
  247. e = tempz - temp; //blad
  248. i = i + (e * 0.01); //calkowanie (pole pow. = blad * opoznienie(10 ms))
  249. u = 255 * (e / (tempz-30)) + (i /10); //sterowanie
  250. if (temp < tempz)
  251. {
  252. analogWrite(HEATER, u > 255 ? 255 : floor(u)); //if(u>255){255}else{floor(u)}
  253. lcd.setCursor(0, 1);
  254. //lcd.print("Grzalka wlaczona");
  255. lcd.print(e);
  256. lcd.setCursor(0, 2);
  257. lcd.print(u);
  258. lcd.setCursor(0, 3);
  259. lcd.print(i);
  260. }
  261. else
  262. {
  263. digitalWrite(HEATER, LOW);
  264. //lcd.setCursor(0, 2);
  265. //lcd.print("Grzalka wylaczona");
  266. lcd.setCursor(0, 1);
  267. lcd.print(e);
  268. lcd.setCursor(0, 2);
  269. lcd.print(u);
  270. lcd.setCursor(0, 3);
  271. lcd.print(i);
  272. }
  273. delay(10);
  274. }
Add Comment
Please, Sign In to add comment