Stránka 1 z 1

propojení kódů

Napsal: 07 úno 2018, 16:33
od johnok777
Dobrý den, jsem naprostý začátečník. Poradíte mě prosím jak se dají spojit 2 kody v jeden (nezavisle na sobe-napr. chci aby blkala ledka a utoho chci merit osvetleni luxmetrem). Díky.

Re: propojení kódů

Napsal: 07 úno 2018, 17:51
od martinius96
Ahoj vies dat oba kody sem? Problem byva s funkciou delay, ktoru pravdepodobne tvoje blikanie ledky vyuziva. Malo by sa to prestavat na millis a tak bude "pauza" pristupna aj pre inu akciu/prerusenie ak ho meranie luxmetrom vyuziva.

Re: propojení kódů

Napsal: 07 úno 2018, 20:20
od petan
Jde o to, jaký kódy potřebuješ spojit. Vždycky to je individuální. Doporučil bych ti nastudovat základy v knize "Průvodce světem Arduina". Provádění více operací "zároveň" můžeš provést např. pomocí tohoto kódu: https://www.mylms.cz/text-kusy-kodu-k-arduinu/#delay
Do fce Podprogram1 a Podprogram2 dáš části kódu a v loopu nastavíš jak často se mají provádět.

Re: propojení kódů

Napsal: 07 úno 2018, 21:47
od jankop
Lze to pochopitelně řešit různě. Já preferuji periodické přerušování Tickerem.
Následující program bliká dvěma LED, každou s jinou periodou. Pouhou změnou konstanty lze rychlost blikání libovolně měnit. Těchto periodických dějů mohu definovat libovolný počet a může to být čtení tlačítka, senzoru nebo cokoliv jiného. Faktem je, že tenhle Ticker je knihovna, která je součástí jádra esp8266. Ale myslím si, že by na Arduinu normálně běžela. Nemám to však jak zkusit. Na druhé straně na githubu je takových knihoven - Ticker pro Arduino několik.

Kód: Vybrat vše

#include <Ticker.h>
#define LED1PIN         13         // port s připojenou LED
#define LED2PIN         14         // port s připojenou LED 
#define LED1TIME        0.25       // doba periodickeho opakovani
#define LED2TIME        1.0        // doba periodickeho opakovani
bool    Led1State       = false;
bool    Led2State       = false;
Ticker Led1Tick;
Ticker Led2Tick;

void setup(void) {
  pinMode(LED1PIN, OUTPUT);
  digitalWrite(LED1PIN, Led1State);
  pinMode(LED2PIN, OUTPUT);
  digitalWrite(LED2PIN, Led2State);
  Led1Tick.attach(LED1TIME, Led1Blink);
  Led2Tick.attach(LED2TIME, Led2Blink);
}
void loop(void) {
}
void Led1Blink(void) {
  Led1State = !Led1State;
  digitalWrite(LED1PIN, Led1State);
}
void Led2Blink(void) {
  Led2State = !Led2State;
  digitalWrite(LED2PIN, Led2State);
}

Re: propojení kódů

Napsal: 07 úno 2018, 22:04
od petan
Já jsem použil něco podobného - Tasker. Je to v podstatě to samé, české, viz http://joysfera.blogspot.cz/2015/03/tas ... duinu.html