ARDUINO mega - opakovani funkce - VYŘEŠENO
Moderátor: Moderátoři
jiri255 píše:když ten program pustím a dívám se do serial výpisu, tak tam vidím,
že se pořád opakuje ta getTest a tu hlavní podmínku to vezme v úvahu jen při spuštění a pak už se to k ní nevrací testoval jsem to na tom teplomer1 větší jak 50
Jak můžeš vidět na sériovém výpisu funkci getTest, když ta na sériový port nic neposílá?
- ZdenekHQ
- Významný člen
- Příspěvky: 25519
- Registrován: 21 črc 2006, 00:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
Takže hlavní smyčka by měla být "loop", ne "void loop" ?
Ale tady jsem na tenkém ledu, tohle je mimo moje znalosti.
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[?]
ale s tech void getneco se to nad to if nevraci
http://lxr.free-electrons.com/source/drivers/gpu/vga/vga_switcheroo.c
http://lxr.free-electrons.com/source/drivers/ata/ahci.c
atd.. atd..
- ZdenekHQ
- Významný člen
- Příspěvky: 25519
- Registrován: 21 črc 2006, 00:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
lesana87 píše:ZdenekHQ píše:void je snad alternativa "procedure" nebo "function", které samozřejmě unvitř mají opět begin a end.
void loop říká, že to co funkce loop vrací nikoho nezajímá.
Aha. Děkuji.
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[?]
Kód: Vybrat vše
do
{
...
if (error) break;
...
}while(0);
// záverečné a úklidové akce
a namísto goto se pak užije break. Jiný dobrý příklad pro goto je ukončení vícenásobně vnořeného cyklu.
Že to nevyhodil překladač?lesana87 píše:V getTest ti chybí uzavírací závorka za tělem funkce, to ti nevadí?
jiri255 << V prvé řadě pište kód přehledněji. Nic nevnucuji, ale například:
Kód: Vybrat vše
void loop()
{
// ------ hlavni funkce ke ktere se potrebuju vracet -----
if (teplomer1() >=50)
{
Serial.print("nebezi");
}
else
{
Serial.print("bezi");
getTest();
}
}
void getTest()
{
if (teplomer2() <= 30)
{
digitalWrite(2,HIGH);
/*
* a tady muzou byt dalsi podminky
* else if a podobne
* sem nekam potrebuji vlozit neco
* co rekne, aby se to zase vratilo
* do loop
*/
}
je asi přehlednější a ta chybějící závorka je hned vidět.