Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 9 - Funkce a knihovny

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
jadana
Člen
Avatar
Odpovídá na David Hart
jadana:20.12.2016 23:10

sice budu reagovat na rok starý dotaz, ale třeba to někomu jinému pomůže.
bohužel se pamět dynamicky nealokuje, ba právě naopak.
Pokud použiješ nejdříve kratší string, a poté delší, alokuje se nové místo pro ten delší string, a to původní se už nepoužije, čímž vzniká něco podobného, jako je fragmentace na disku.
Takže je skutečně dobré si alokovat nejdříve prostor pro nejdelší použitý string, pak nebude paměť zbytečně fragmentovat a nedojde tak rychle.

No snad jsem to popsal tak, že to bude k pochopení...

 
Odpovědět
20.12.2016 23:10
Avatar
Jiří z Pardubic:15.1.2017 22:05

Ahoj a hezký večer,
mám problém se čtením bytu. Zatím jsem nenašel řešení této jednoduché operace.

#include <SoftwareSerial.h>
byte z[] = {2, 3, 4, 5, 6, 7, 8, 9}; //defin. D2 az D9
int vysledek = 0; //výsledek cteni z D2 az D9 ...a to mi nejde!!!!!

void setup() {
Serial.begin(9600); //pro ladeni
for (int i = 2; i < 10; i++)
{
pinMode(z[i], INPUT);
}
}

void loop() { // z[i] potřebuji dostat do int vysledek
for (int i = 2; i < 10; i++)
digitalRead(z[i]);
}

Poradí mi někde? Děkuji.Jirka

 
Odpovědět
15.1.2017 22:05
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Jiří z Pardubic
Adam Ježek:15.1.2017 22:07
vysledek = digitalRead(z[i]);
Odpovědět
15.1.2017 22:07
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Odpovídá na Adam Ježek
Jiří z Pardubic:15.1.2017 22:19

Děkuji, tušil jsem, že to bude jednoduché. Mám pouze Průvodce světem Arduina a tam jsem to nenašel.
Příjemný večer. Jirka

 
Odpovědět
15.1.2017 22:19
Avatar
Robert Neugebauer:27.2.2017 14:28

Ahoj, mám za sebou pár základních projektů s Arduinem, ale není mi jasná jedna asi základní věc. Příklad: chci na základě stisku daného tlačítka rozsvítit/zhasnout danou diodu. V první části programu si otestuji tlačítka a v druhé části dle výsledku rozsvítím či zhasnu LEDky. Ale co když potřebuji, aby každá ledka po stisku svítila jinak dlouho (2,5,10 s) a pak vypla. Když dám do programu k LEDce dám příkaz "delay" tak se celý program zastaví a tím pádem netestuje tlačítka a neovládám ostatní LEDky. Jak to tedy obecně dělat? Děkuji

Editováno 27.2.2017 14:29
 
Odpovědět
27.2.2017 14:28
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Robert Neugebauer
Adam Ježek:27.2.2017 15:00

Vytvoř si proměnnou typu long pro každou ledku, nebo to dej do pole. Při rozsvícení LEDky si do proměnné ulož aktuální čas - vrátí ti ho funkce millis(). Pak v loopu jenom zkontroluješ, jestli uložená hodnota + počet sekund * 1000 je větší než to co aktuálně vrací millis(). Pokud ano, už uplynulo dost sekund od rozsvícení a můžeš zhasnout.

Odpovědět
27.2.2017 15:00
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Robert Neugebauer:27.2.2017 15:43

Aha, super. Děkuji moc. Chápu -li to správně, když budu mít nějaký složitější projekt (ovládání robota tlačítky + kontrola čidel, koncáků apod.), tak obecně nejdříve v první části programu načíst vstupy a v druhé nastavit výstupy a tak pořád dokola, protože možnost aby něco běželo současně Arduino nemá. Jako třeba nějaký podprogram "na pozadí". To je možné například externími zařízením, jako je třeba Audio Shield, který umí přehrávat MP3jku nezávisle na Arduinu.

 
Odpovědět
27.2.2017 15:43
Avatar
Josef Půta
Člen
Avatar
Josef Půta:26.4.2020 22:26

No a začínáme se blížit mému problému. Proč u tak jednoduchého příkladu je již užito "#include <SoftwareSerial.h> " ? Mám obecně problém se seriovou komunikací Arduino <> Processing, ale v diskutovaném prográmku to přeci je komunikace Serial.Vrite > terminal Arduina na PC monitoru a tam se zatím do žádné knihovny nesahalo nebo se mýlím?

 
Odpovědět
26.4.2020 22:26
Avatar
Roman Gregor
Člen
Avatar
Roman Gregor:8.11.2023 14:37

Nesoulad názvů funkce jednou blik() a pak blikni().

 
Odpovědět
8.11.2023 14:37
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 19.