Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
-
Le-Ze
- Příspěvky: 218
- Registrován: 24 črc 2017, 08:15
Příspěvek
od Le-Ze » 27 čer 2024, 09:55
Zdravím.
Poradite- pomužete?
Bych potřeboval ukladat do int čas, který uběhl (0 - 60000) ,abych ho moh vypisovat přes ser. port.
Děkuji.
Kód: Vybrat vše
unsigned long cas = millis();
int toggle = 1;
void setup() {
Serial.begin(9600);
}
void loop() {
if (millis() - cas > 60000)
{
odesli();
cas = millis();
}
}
void odesli()
{
Serial.println("hups");
}
-
AstroMiK
- Příspěvky: 639
- Registrován: 08 pro 2017, 19:05
Příspěvek
od AstroMiK » 27 čer 2024, 11:18
Do rozsahu "int" se tak velké číslo nevejde (rozsah je -32768 až +32767).
Je nutné použít rozsah "unsigned int" (rozsah 0 až 65535 ).
Třeba takhle:
Kód: Vybrat vše
unsigned long cas = millis();
int toggle = 1;
void setup() {
Serial.begin(9600);
}
void loop() {
unsigned int rozdil = millis() - cas;
if (rozdil > 60000)
{
odesli(rozdil);
cas = millis();
}
}
void odesli(unsigned int hodnota)
{
Serial.println(hodnota);
}
-
Le-Ze
- Příspěvky: 218
- Registrován: 24 črc 2017, 08:15
Příspěvek
od Le-Ze » 27 čer 2024, 12:16
Abych upřesnil, o co mi jde.
Mam lineární motory z ali a chci ovladat arduinem.
Na jendom GPIO je tlačitko. Když ho zmačknu, tak chci, aby se motor spustil plnou ryclosti - PWM 255.
Ale potřebují, abych ho mohl posledních par vteřin přes PWM zpomalit.
-
kiRRow
- Příspěvky: 1306
- Registrován: 07 kvě 2019, 07:03
- Bydliště: Opava
Příspěvek
od kiRRow » 27 čer 2024, 15:33
Jsem z toho volajakej zmaťenej ... ale chtěl bych podotknout, že není moc dobrý nápad spouštět jakékoliv motory okamžitě na max ...
-
Le-Ze
- Příspěvky: 218
- Registrován: 24 črc 2017, 08:15
Příspěvek
od Le-Ze » 27 čer 2024, 17:59
kiRRow píše: ↑27 čer 2024, 15:33
Jsem z toho volajakej zmaťenej
Tak ještě jinak.
unsigned long cas = 0;
void setup() {
Serial.begin(19200);
}
void loop() {
if (millis() >= cas + 10000) {
cas = millis();
Serial.println(cas);
}
}
Da se docilit toho, aby se mi přes ser. port vypisoval uplynulý čas?
0,1,2,3,4 ----- 9999, 10000.
-
kiRRow
- Příspěvky: 1306
- Registrován: 07 kvě 2019, 07:03
- Bydliště: Opava
Příspěvek
od kiRRow » 27 čer 2024, 18:02
Serial.println(cas/1000);
-
gilhad
- Příspěvky: 843
- Registrován: 07 bře 2018, 11:22
Příspěvek
od gilhad » 27 čer 2024, 22:30
U toho vypisování bych to nedělal v každém průběhu, ony ty výpisy nejsou zase tak rychlé.
-
kiRRow
- Příspěvky: 1306
- Registrován: 07 kvě 2019, 07:03
- Bydliště: Opava
Příspěvek
od kiRRow » 28 čer 2024, 16:32
gilhad píše: ↑27 čer 2024, 22:30
U toho vypisování bych to nedělal v každém průběhu, ony ty výpisy nejsou zase tak rychlé.
tady bych to ještě viděl, že jsme někde na úrovni : "poznejme arduino" ... zatím se zjišťují jeho možnosti a limity ... a možnosti a limity uživatele

-
gilhad
- Příspěvky: 843
- Registrován: 07 bře 2018, 11:22
Příspěvek
od gilhad » 28 čer 2024, 17:53
Ano, ale je dobré vědět, že když to v té řadě 0,1,2.3,4.... začne mít mezery, že to není nutně nějaká záhadná chyba

-
kiRRow
- Příspěvky: 1306
- Registrován: 07 kvě 2019, 07:03
- Bydliště: Opava
Příspěvek
od kiRRow » 28 čer 2024, 20:18
Máte štěstí že jedu kolem, dovolíte ... technická závada ....... pamatuje, chybami se člověk učí !

Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů