Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // #include <iostream>
- // #include <iomanip>
- // #include <chrono>
- // #include <thread>
- // using namespace std;
- // Funkce, ktera pobezi celou dobu a posouva motor
- void posunMotor(int pocetSekund, int pocetStupnu)
- {
- // Pocet kroku motoru na 1 stupen posunu
- double KOEFICIENT_KROKU = 5.8;
- // Pokud chceme za 60 minut ubehnout 180 stupnu
- double pocetStupnuZaMs = (double)pocetStupnu / (double)(pocetSekund * 1000); // 180 / (3600*1000) = 0.00005
- // Tedy kazdou ms urazit 0.00029 kroku
- double pocetKrokuZaMs = pocetStupnuZaMs * KOEFICIENT_KROKU; // 0.00005 * 5.8 = 0.00029
- // int DEBUG_stepCount = 0;
- // double DEBUG_ubehloStupnu = 0.0;
- double castKroku = 0.0;
- // Krokovat dokud nenastane pozadovany pocet sekund (tedy napr 60 minut = 3600 sekund)
- for (int ubehloSekund = 0; ubehloSekund < pocetSekund; ubehloSekund++)
- {
- for (int pocetMs = 0; pocetMs <= 1000; pocetMs++)
- {
- castKroku += pocetKrokuZaMs;
- // DEBUG_ubehloStupnu += pocetStupnuZaMs;
- if (castKroku > 1.0)
- {
- // Pokud ano, posuneme o 1 krok a resetujem castKroku (resp. odebereme ten 1 krok)
- castKroku -= 1.0;
- // DEBUG_stepCount++;
- // cout << "Krok: " << DEBUG_stepCount << " | Stupen: " << fixed << setprecision(3) << DEBUG_ubehloStupnu << " | Sekunda: " << ubehloSekund + 1 << endl;
- }
- // this_thread::sleep_for(chrono::milliseconds(1));
- delay(1);
- }
- }
- }
- int main()
- {
- posunMotor(3600, 180);
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement