fork(1) download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define M_PI 3.1415
  5. #define uint32_t int
  6. #define int32_t int
  7. #define KROK 0.1//mm
  8. #define STEPS_PER_MM (1 / KROK) // 10 kroków na 1 mm
  9. #define MAX_STEPS_PER_MS 4
  10.  
  11. #define L_MAX 200//mm
  12. #define T_MAX 3000//3s
  13. #define T_KROK 10//co 10ms
  14. uint32_t KlusLenTable[T_MAX / T_KROK];
  15.  
  16. uint32_t CheckMaxWysuwLen(uint32_t L, uint32_t T);
  17. void KlusMaxLenTable(uint32_t* KlusLenTable);
  18.  
  19.  
  20. int main(void) {
  21.  
  22. KlusMaxLenTable(KlusLenTable);
  23.  
  24. //printf("%d \n", tim);
  25. // if (tim > T) printf("OK %d \n", tim);
  26. // else printf("Za duży wysuw %d \n", tim);
  27.  
  28. return 0;
  29. }
  30.  
  31. uint32_t CheckMaxWysuwLen(uint32_t Lmax, uint32_t T)
  32. {
  33. float position;
  34. uint32_t steps;
  35. uint32_t currentPosition = 0;
  36. uint32_t targetPosition;
  37. int delta;
  38. int t, len = 0;
  39.  
  40. if (0 == T) return len;
  41.  
  42. for (len = 0; len <= Lmax; len++)
  43. {
  44. for (t = 0; t <= T; t++)
  45. {
  46. position = (len / 2) * (sin((2.0 * t / T) * M_PI - M_PI/2) + 1);
  47. steps = roundf(position * STEPS_PER_MM);
  48. targetPosition = steps;
  49. delta = targetPosition - currentPosition;
  50. if( abs(delta) > MAX_STEPS_PER_MS)
  51. {
  52. len--;
  53. break;
  54. }
  55. currentPosition = targetPosition;
  56. }
  57. if (t < T )
  58. {
  59. return len;
  60. }
  61. }
  62. return len;
  63. }
  64. void KlusMaxLenTable(uint32_t* KlusLenTable)
  65. {
  66. int k = 0, t;
  67.  
  68. //tabela do wklejenia do kodu
  69. printf("KlusMaxLenTable[%d] = {", T_MAX/T_KROK);
  70. for (t = 0; t <= T_MAX; t += T_KROK, k++)//co 10mm
  71. {
  72. KlusLenTable[k] = CheckMaxWysuwLen(L_MAX, t);
  73. printf("%d, ", KlusLenTable[k]);
  74. }
  75. printf("}\n");
  76. //podglad
  77. for (k = 0; k <= T_MAX/T_KROK; k++)//co 10mm
  78. {
  79. printf("t=%d Lmax=%d \n", k*T_KROK, KlusLenTable[k]);
  80. }
  81.  
  82. }
  83.  
Success #stdin #stdout 2.43s 5320KB
stdin
Standard input is empty
stdout
KlusMaxLenTable[300] = {0, 1, 3, 5, 5, 7, 9, 9, 11, 11, 13, 15, 15, 17, 19, 19, 21, 23, 23, 25, 27, 27, 29, 29, 31, 33, 33, 35, 37, 37, 39, 41, 41, 43, 45, 45, 47, 47, 49, 51, 51, 53, 55, 55, 57, 59, 59, 61, 61, 63, 65, 65, 67, 69, 69, 71, 73, 73, 75, 77, 77, 79, 79, 81, 83, 83, 85, 87, 87, 89, 91, 91, 93, 93, 95, 97, 97, 99, 101, 101, 103, 105, 105, 107, 107, 109, 111, 111, 113, 115, 115, 117, 119, 119, 121, 121, 123, 125, 125, 127, 129, 129, 131, 133, 133, 135, 137, 137, 139, 139, 141, 143, 143, 145, 147, 147, 149, 151, 151, 153, 153, 155, 157, 157, 159, 161, 161, 163, 165, 165, 167, 167, 169, 171, 171, 173, 175, 175, 177, 179, 179, 181, 181, 183, 185, 185, 187, 189, 189, 191, 193, 193, 195, 195, 197, 199, 199, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, }
t=0 Lmax=0 
t=10 Lmax=1 
t=20 Lmax=3 
t=30 Lmax=5 
t=40 Lmax=5 
t=50 Lmax=7 
t=60 Lmax=9 
t=70 Lmax=9 
t=80 Lmax=11 
t=90 Lmax=11 
t=100 Lmax=13 
t=110 Lmax=15 
t=120 Lmax=15 
t=130 Lmax=17 
t=140 Lmax=19 
t=150 Lmax=19 
t=160 Lmax=21 
t=170 Lmax=23 
t=180 Lmax=23 
t=190 Lmax=25 
t=200 Lmax=27 
t=210 Lmax=27 
t=220 Lmax=29 
t=230 Lmax=29 
t=240 Lmax=31 
t=250 Lmax=33 
t=260 Lmax=33 
t=270 Lmax=35 
t=280 Lmax=37 
t=290 Lmax=37 
t=300 Lmax=39 
t=310 Lmax=41 
t=320 Lmax=41 
t=330 Lmax=43 
t=340 Lmax=45 
t=350 Lmax=45 
t=360 Lmax=47 
t=370 Lmax=47 
t=380 Lmax=49 
t=390 Lmax=51 
t=400 Lmax=51 
t=410 Lmax=53 
t=420 Lmax=55 
t=430 Lmax=55 
t=440 Lmax=57 
t=450 Lmax=59 
t=460 Lmax=59 
t=470 Lmax=61 
t=480 Lmax=61 
t=490 Lmax=63 
t=500 Lmax=65 
t=510 Lmax=65 
t=520 Lmax=67 
t=530 Lmax=69 
t=540 Lmax=69 
t=550 Lmax=71 
t=560 Lmax=73 
t=570 Lmax=73 
t=580 Lmax=75 
t=590 Lmax=77 
t=600 Lmax=77 
t=610 Lmax=79 
t=620 Lmax=79 
t=630 Lmax=81 
t=640 Lmax=83 
t=650 Lmax=83 
t=660 Lmax=85 
t=670 Lmax=87 
t=680 Lmax=87 
t=690 Lmax=89 
t=700 Lmax=91 
t=710 Lmax=91 
t=720 Lmax=93 
t=730 Lmax=93 
t=740 Lmax=95 
t=750 Lmax=97 
t=760 Lmax=97 
t=770 Lmax=99 
t=780 Lmax=101 
t=790 Lmax=101 
t=800 Lmax=103 
t=810 Lmax=105 
t=820 Lmax=105 
t=830 Lmax=107 
t=840 Lmax=107 
t=850 Lmax=109 
t=860 Lmax=111 
t=870 Lmax=111 
t=880 Lmax=113 
t=890 Lmax=115 
t=900 Lmax=115 
t=910 Lmax=117 
t=920 Lmax=119 
t=930 Lmax=119 
t=940 Lmax=121 
t=950 Lmax=121 
t=960 Lmax=123 
t=970 Lmax=125 
t=980 Lmax=125 
t=990 Lmax=127 
t=1000 Lmax=129 
t=1010 Lmax=129 
t=1020 Lmax=131 
t=1030 Lmax=133 
t=1040 Lmax=133 
t=1050 Lmax=135 
t=1060 Lmax=137 
t=1070 Lmax=137 
t=1080 Lmax=139 
t=1090 Lmax=139 
t=1100 Lmax=141 
t=1110 Lmax=143 
t=1120 Lmax=143 
t=1130 Lmax=145 
t=1140 Lmax=147 
t=1150 Lmax=147 
t=1160 Lmax=149 
t=1170 Lmax=151 
t=1180 Lmax=151 
t=1190 Lmax=153 
t=1200 Lmax=153 
t=1210 Lmax=155 
t=1220 Lmax=157 
t=1230 Lmax=157 
t=1240 Lmax=159 
t=1250 Lmax=161 
t=1260 Lmax=161 
t=1270 Lmax=163 
t=1280 Lmax=165 
t=1290 Lmax=165 
t=1300 Lmax=167 
t=1310 Lmax=167 
t=1320 Lmax=169 
t=1330 Lmax=171 
t=1340 Lmax=171 
t=1350 Lmax=173 
t=1360 Lmax=175 
t=1370 Lmax=175 
t=1380 Lmax=177 
t=1390 Lmax=179 
t=1400 Lmax=179 
t=1410 Lmax=181 
t=1420 Lmax=181 
t=1430 Lmax=183 
t=1440 Lmax=185 
t=1450 Lmax=185 
t=1460 Lmax=187 
t=1470 Lmax=189 
t=1480 Lmax=189 
t=1490 Lmax=191 
t=1500 Lmax=193 
t=1510 Lmax=193 
t=1520 Lmax=195 
t=1530 Lmax=195 
t=1540 Lmax=197 
t=1550 Lmax=199 
t=1560 Lmax=199 
t=1570 Lmax=201 
t=1580 Lmax=201 
t=1590 Lmax=201 
t=1600 Lmax=201 
t=1610 Lmax=201 
t=1620 Lmax=201 
t=1630 Lmax=201 
t=1640 Lmax=201 
t=1650 Lmax=201 
t=1660 Lmax=201 
t=1670 Lmax=201 
t=1680 Lmax=201 
t=1690 Lmax=201 
t=1700 Lmax=201 
t=1710 Lmax=201 
t=1720 Lmax=201 
t=1730 Lmax=201 
t=1740 Lmax=201 
t=1750 Lmax=201 
t=1760 Lmax=201 
t=1770 Lmax=201 
t=1780 Lmax=201 
t=1790 Lmax=201 
t=1800 Lmax=201 
t=1810 Lmax=201 
t=1820 Lmax=201 
t=1830 Lmax=201 
t=1840 Lmax=201 
t=1850 Lmax=201 
t=1860 Lmax=201 
t=1870 Lmax=201 
t=1880 Lmax=201 
t=1890 Lmax=201 
t=1900 Lmax=201 
t=1910 Lmax=201 
t=1920 Lmax=201 
t=1930 Lmax=201 
t=1940 Lmax=201 
t=1950 Lmax=201 
t=1960 Lmax=201 
t=1970 Lmax=201 
t=1980 Lmax=201 
t=1990 Lmax=201 
t=2000 Lmax=201 
t=2010 Lmax=201 
t=2020 Lmax=201 
t=2030 Lmax=201 
t=2040 Lmax=201 
t=2050 Lmax=201 
t=2060 Lmax=201 
t=2070 Lmax=201 
t=2080 Lmax=201 
t=2090 Lmax=201 
t=2100 Lmax=201 
t=2110 Lmax=201 
t=2120 Lmax=201 
t=2130 Lmax=201 
t=2140 Lmax=201 
t=2150 Lmax=201 
t=2160 Lmax=201 
t=2170 Lmax=201 
t=2180 Lmax=201 
t=2190 Lmax=201 
t=2200 Lmax=201 
t=2210 Lmax=201 
t=2220 Lmax=201 
t=2230 Lmax=201 
t=2240 Lmax=201 
t=2250 Lmax=201 
t=2260 Lmax=201 
t=2270 Lmax=201 
t=2280 Lmax=201 
t=2290 Lmax=201 
t=2300 Lmax=201 
t=2310 Lmax=201 
t=2320 Lmax=201 
t=2330 Lmax=201 
t=2340 Lmax=201 
t=2350 Lmax=201 
t=2360 Lmax=201 
t=2370 Lmax=201 
t=2380 Lmax=201 
t=2390 Lmax=201 
t=2400 Lmax=201 
t=2410 Lmax=201 
t=2420 Lmax=201 
t=2430 Lmax=201 
t=2440 Lmax=201 
t=2450 Lmax=201 
t=2460 Lmax=201 
t=2470 Lmax=201 
t=2480 Lmax=201 
t=2490 Lmax=201 
t=2500 Lmax=201 
t=2510 Lmax=201 
t=2520 Lmax=201 
t=2530 Lmax=201 
t=2540 Lmax=201 
t=2550 Lmax=201 
t=2560 Lmax=201 
t=2570 Lmax=201 
t=2580 Lmax=201 
t=2590 Lmax=201 
t=2600 Lmax=201 
t=2610 Lmax=201 
t=2620 Lmax=201 
t=2630 Lmax=201 
t=2640 Lmax=201 
t=2650 Lmax=201 
t=2660 Lmax=201 
t=2670 Lmax=201 
t=2680 Lmax=201 
t=2690 Lmax=201 
t=2700 Lmax=201 
t=2710 Lmax=201 
t=2720 Lmax=201 
t=2730 Lmax=201 
t=2740 Lmax=201 
t=2750 Lmax=201 
t=2760 Lmax=201 
t=2770 Lmax=201 
t=2780 Lmax=201 
t=2790 Lmax=201 
t=2800 Lmax=201 
t=2810 Lmax=201 
t=2820 Lmax=201 
t=2830 Lmax=201 
t=2840 Lmax=201 
t=2850 Lmax=201 
t=2860 Lmax=201 
t=2870 Lmax=201 
t=2880 Lmax=201 
t=2890 Lmax=201 
t=2900 Lmax=201 
t=2910 Lmax=201 
t=2920 Lmax=201 
t=2930 Lmax=201 
t=2940 Lmax=201 
t=2950 Lmax=201 
t=2960 Lmax=201 
t=2970 Lmax=201 
t=2980 Lmax=201 
t=2990 Lmax=201 
t=3000 Lmax=201