Založen: Sep 19, 2007 Příspěvky: 3698 Bydliště: Praha
Zaslal: st říjen 07 2015, 20:58 Předmět:
Bez použití break to nemá valný smysl. Vždyť jsem napsal, že ta konstrukce do-while k tvému problému a programu nemá vztah. Asi se musím omluvit za off-topic s tím do-while, pak vznikají takovéto zmatky.
Založen: Jul 21, 2006 Příspěvky: 25741 Bydliště: skoro Brno
Zaslal: st říjen 07 2015, 20:59 Předmět:
Stejně je to zajímavý, jak se ty jazyky postupně vyvíjely - já mám zafixovaný while "podmínka" do "něco", popř. repeat until "něco" a vyskočit z toho prostě nešlo, muselo se to řešit nějakou pomocnou proměnnou, co to radikálně ukončila.
Proto se už nechci učit další programovací jazyky, mám v hlavě Basic, Pascal, x51 assembler (přesněji JSA), php, javascript,html a už se mě to docela solidně plete. _________________ Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
takze ten kod predtim s tou upravou bez toho break je tedy spatne?
ale me to takhle funguje a vraci se to zpet, tak ted nevim jestli je tedy toto programove spravne nebo to bude delat paseku?
kód:
void loop() {
//hlavni funkce ke ktere se potrebuju vracet
if (teplomer1() >=50) {
Serial.print("nebezi");
getZkouska();
} else {
Serial.print("bezi");
getTest();
}
}
void getTest() {
do {
//ty podminky se vepisuji sem treba
digitalWrite(2,LOW);
//a potom to return vraci zpet do loop
return;
}while(0); //a to while je tedy konec tohoto podprogramu
}
Založen: Sep 19, 2007 Příspěvky: 3698 Bydliště: Praha
Zaslal: st říjen 07 2015, 21:14 Předmět:
Zapomeňte na to do-while, ve vašem programu je k ničemu. Vyhodit a ty returny taky. Jakmile přejde program přes ukončovací složenou závorku funkce, řízení se vrátí do volající funkce (pokud se nezmastil zásobník). Že já jsem to sem vůbec dával ...
Založen: Jul 21, 2006 Příspěvky: 25741 Bydliště: skoro Brno
Zaslal: st říjen 07 2015, 21:17 Předmět:
Asi by pomohlo poslat sem celej zdroják, pokud tedy nemá 200 stran.
Zacyklili jsme se víc než samotný MCU.
mtajovsky: Nebuď smutný, může být i hůř, takže relativně je to pořád OK. _________________ Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
...no, ale kdyz mi tento kousek kodu dela to co jsem potreboval,
kód:
do {
return;
}while(0);
tedy ze me vraci s toho void gettest nebo zkouska zpet do loop,
tak je to OK ne? nebo mi to nedoporucujete tam pouzivat, zpusobilo
by to nejake problemy pri behu?
Založen: Jul 21, 2006 Příspěvky: 25741 Bydliště: skoro Brno
Zaslal: čt říjen 08 2015, 14:26 Předmět:
A když jednoduše napíšeš :
kód:
void getZkouska();
{
}
a máš jistotu, že všechny ostatní závorky v programu jsou "spárovány", tak to udělá co? _________________ Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Už vidím chybu! Píšeš: void getZkouska();
Při definici se středník za jméno funkce nedává
Nahrej tam tohle a pak dej vědět, jestli getZkouska() vrací nebo nevrací
kód:
void getZkouska()
{
Serial.println("B");
}
void getZkouska2()
{
Serial.println("Y");
do
{
return;
} while(0);
}
void setup()
{
//Initialize serial and wait for port to open:
Serial.begin(9600);
}
Založen: Jul 21, 2006 Příspěvky: 25741 Bydliště: skoro Brno
Zaslal: čt říjen 08 2015, 17:10 Předmět:
frpr666 napsal(a):
Už vidím chybu! Píšeš: void getZkouska();
Při definici se středník za jméno funkce nedává
Ten středník jsem sem zavlekl já. V tom aby se prase vyznalo, tohle přece musí překladač buď spolknout, nebo vyhodit chybu... _________________ Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
a tohle taky fungovalo, tak jsem jeste vyhodil i to
kód:
do
{
return;
} while(0);
a jelo to i bez toho a prohlidl jsem si co mam ja v programu a co je tady v tom...
Chyba byla v tom ze ja mel ty getTest a getZkouska pod loop,
kdezto v programu od "frpr666" jsou void get nad setupem a kdyz jsem je prehodil nad setup, tak to najednou jede bez nejmensi chybicky.
Celej problem byl tedy v tom, ze ty void get nesmi byt pod loop...
Založen: Jul 21, 2006 Příspěvky: 25741 Bydliště: skoro Brno
Zaslal: čt říjen 08 2015, 19:45 Předmět:
Třeba pascal by hlásil, že procedura definovaná pod procedurou, ze které je volaná, není definovaná. Naopak třeba x51 assembleru je to srdečně jedno. Jak je to tady nevím, ale je to divný. _________________ Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
@jiri255 gratuluji k připojení DS18x20 teploměru k arduino!
U mě to funguje i když dám funkce getZkouska(), getZkouska2() pod void loop(). Schválně si to zkuste i u sebe.
edit1: v jedné otočce loopu volej funkci teplomer2() jen jednou, a teplotu si ulož do nějaké proměnné, protože funkce teplomer2() je časově náročná. Pokud funkci voláš vícekrát, zbytečně si prodlužuješ cyklus.
Např.
kód:
teplomer2_value = teplomer2();
if (teplomer2_value>20)
{
...
if (teplomer2_value>50)
{
...
}
}
Časy uváděny v GMT + 1 hodina Jdi na stránku Předchozí1, 2, 3, 4, 5Další
Strana 4 z 5
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.