Diskuze: Arduino. knihovna Timer.h
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Pro určení a vypsání uplynulého času budeš potřebovat určit časový interval, tedy začátek a konec měření. Pro určení mezí intervalu pouziješ funkci millis().
Funkce millis() vrací hodnotu typu unsigned long, což je počet milisekund od spuštění programu.
Měření času mezi dvěma událostmi:
Uložením dvou hodnot millis() do proměnných a jejich následným odečtením zjistíš, kolik času uplynulo mezi těmito dvěma body.
No nevím, jisti jsem to dobře napal.
Zmačknu tlačítko a nastaví se GPIO8 na LOW a spustí se motor na plný
výkon PWM 255.
Po určitém čase se zavolá funkce vratPinNaHigh a motor se vypne.
Takže nastavím 10 * 1000 10 sekud
Tedy motor pojede 10 sekund a ja potřebují, aby se třeba po 8 sekundách
zpomalil.
K tomu potřebuješ 2 časovače, jeden Ti bude hlídat zpomalení a druhý vypnutí motoru.
unsigned long startTime = 0;
unsigned long elapsedTime = 0;
bool timingStarted = false;
bool speedReduced = false;
void setup()
{
Serial.begin(9600);
pinMode(8, OUTPUT); // Nastavit pin 8 jako výstup
pinMode(7, INPUT_PULLUP); // Nastavit pin 7 jako vstup s pull-up rezistorem
}
void loop()
{
// Když je tlačítko stisknuto a časovač nebyl spuštěn
if (digitalRead(7) == LOW && !timingStarted)
{
analogWrite(8, 255); // Spustit motor na plný výkon (PWM 255)
startTime = millis(); // Uložit počáteční čas
timingStarted = true; // Nastavit flag, že časovač byl spuštěn
speedReduced = false; // Resetovat flag pro snížení rychlosti
}
// Pokud časovač běží
if (timingStarted)
{
elapsedTime = millis() - startTime; // Vypočítat uplynulý čas
// Po 8 sekundách snížit rychlost motoru, pokud ještě nebyla snížena
if (elapsedTime >= 8000 && !speedReduced)
{
analogWrite(8, 128); // Snížit rychlost motoru (např. PWM 128)
speedReduced = true; // Nastavit flag, že rychlost byla snížena
}
// Po 10 sekundách vypnout motor
if (elapsedTime >= 10000)
{
analogWrite(8, 0); // Vypnout motor
timingStarted = false; // Resetovat flag pro měření času
}
// Vypsat uplynulý čas pro ladění
Serial.println(elapsedTime);
}
}
Zobrazeno 4 zpráv z 4.