Advertisement
Guest User

Marche 1

a guest
Dec 3rd, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1.  
  2. int val, pos, last, oldpos, oldposition;
  3. unsigned long lastTime, now, prevTime;
  4. double mSpeed;
  5. int next[4] = {1,3,0,2};
  6.  
  7. int lastAff = 0;
  8. int nowAff =0;
  9. int posFin = 0;
  10. bool first = true;
  11.  
  12.  
  13. #define BACK 0;
  14. #define FORW 1
  15.  
  16. void setup(){
  17. Serial.begin(9600);
  18.  
  19.  
  20. attachInterrupt(digitalPinToInterrupt(2), TachEncoder1, CHANGE);
  21. attachInterrupt(digitalPinToInterrupt(3), TachEncoder1, CHANGE);
  22. pinMode(8,OUTPUT);
  23. pinMode(9,OUTPUT);
  24. pinMode(11,OUTPUT);
  25.  
  26.  
  27. last = 2*digitalRead(2)+digitalRead(3);
  28. Serial.println(2);
  29. Serial.println(2^2);
  30. lastTime = 0;
  31. now = 0;
  32. oldpos = 0;
  33.  
  34. }
  35.  
  36.  
  37.  
  38. void loop(){
  39. /*now = millis();
  40. if(now-lastTime>=40){
  41. speed = (double)(pos-oldpos)/((double)(now-lastTime)/1000.0);
  42. lastTime= now;
  43. oldpos = pos;
  44. Serial.print("Speed : ");
  45. Serial.println(speed);
  46.  
  47. if(posFin!=0){
  48. Serial.print("Pos : ");
  49. Serial.println(pos-posFin);
  50. }
  51. }
  52. if(millis()>5000){
  53. if(first){
  54. Serial.print("Speed : ");
  55. Serial.println(speed);
  56. }
  57. analogWrite(11,255);
  58. digitalWrite(8,LOW);
  59. digitalWrite(9,LOW);
  60. if(first)
  61. posFin=pos;
  62. first = false;
  63. }*/
  64. move(90);
  65. delay(4000);
  66. //Serial.println(pos);
  67.  
  68. }
  69.  
  70.  
  71.  
  72. double vitFromReste(int reste){
  73. if(reste > 180)
  74. return 270;
  75. else
  76. return 1.5*(double)reste;
  77. }
  78.  
  79. int outputFromVit(int speedW,int speedA, int output){
  80.  
  81. //return output + (speedW-speedA)/25
  82. return speedW<speedA? output-10:output+5;
  83. }
  84.  
  85. double getSpeed(){
  86. now = millis();
  87. //Serial.println(now-prevTime);
  88. double dista = (pos-oldposition)*1000;
  89. double timeLaps = now - prevTime;
  90. double vit = dista/timeLaps;
  91.  
  92. oldposition = pos;
  93. prevTime = now;
  94. return vit;
  95.  
  96. }
  97.  
  98. void move(int angle){
  99. if(angle==0)
  100. return;
  101. pos = 0;
  102. int but = 2*angle;
  103. int reste = but-pos;
  104. double speedW ;
  105. int dir = ((reste/abs(reste))+1)/2;
  106. int output = 60;
  107. oldposition = 0;
  108. prevTime = 0;
  109. long lastT = 0;
  110.  
  111. while(abs(reste)>4 || abs(mSpeed)>100){
  112. /*long mom = millis();
  113. if(mom-lastT<40)
  114. continue;
  115. mom = lastT;
  116. Serial.println(mom);*/
  117. mSpeed = getSpeed();
  118. /* if(abs((double)mSpeed*0.116+42.5-(double)reste)<2){
  119. brake();
  120. delay(20);
  121. reste = but-pos;
  122. continue;
  123. }*/
  124. speedW = vitFromReste(abs(reste));
  125. //Serial.println(speed);
  126. //Serial.println(speedW);
  127. output = outputFromVit(speedW,mSpeed, output);
  128. if((double)reste*mSpeed <0){
  129. speedW = 100;
  130. output = 80;
  131. dir = !dir;
  132. }
  133. if(output<60){
  134. brake();
  135. }
  136. else{
  137. digitalWrite(8,dir);
  138. digitalWrite(9,!dir);
  139. analogWrite(11,output);
  140. }
  141. delay(20);
  142. reste = but-pos;
  143. }
  144. brake();
  145. Serial.println(mSpeed);
  146. delay(30);
  147. Serial.println(pos);
  148. pos = 0;
  149. oldposition = 0;
  150.  
  151. }
  152.  
  153. void brake(){
  154. digitalWrite(8,0);
  155. digitalWrite(9,0);
  156. analogWrite(11,255);
  157. }
  158.  
  159.  
  160.  
  161. void TachEncoder1(){
  162. //val = val ^ 2;
  163. val = 2*digitalRead(2)+digitalRead(3);
  164. if(val == next[last])
  165. pos+=1;
  166.  
  167. else
  168. pos-=1;
  169. last = val;
  170.  
  171. }
  172.  
  173.  
  174. void TachEncoder2(){
  175. val = val ^ 1;
  176.  
  177. if(val == next[last])
  178. pos+=1;
  179.  
  180. else
  181. pos-=1;
  182. last = val;
  183.  
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement