2 různé programy spouštěné na základě stavu pinu

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, ...)
honzahorka
Příspěvky: 8
Registrován: 29 pro 2018, 14:59
Reputation: 0

2 různé programy spouštěné na základě stavu pinu

Příspěvek od honzahorka » 29 pro 2018, 15:16

Dobrý den,
bohužel neovládám programování a potřeboval bych poradit jak vyřešit tento problém.

Mám na arduino mega 2560 2 různé programy od dvou různých autorů a každý je ještě kevšemu psán odlišně.
oba programy jsem si upravil pouze tak aby mi měželi na stejném HW. Upravoval jsem pouze zapojení pinů, displej a podobně.
Chtel bych aby když zapnu arduino tak aby se spustil buť jeden program nebo druhý na základě stavu pinu č. 52 nebo pinu č.53
Pokud se na pinu 52 objeví +5V spustí se program 1
Pokud se na pinu 53 objeví +5V spustí se program 2

nové spuštění programu vždy až po opetovném zapnutí arduina na základě stavu pinu 53 nebo 53

vůbec netuším jak to udělat aby to fungovalo.
dokázal by jste mi někdo poradit nebo pomoct?

v příloze prikládám oba dva programy



předem děkuji za jakoukoliv pomoc
Přílohy
Dummies_Rotary_Table_Eprom_2018uno_beta2.ino
(12.06 KiB) Staženo 4 x
Digital_Feed_2e.ino
(16.61 KiB) Staženo 4 x

petan
Příspěvky: 324
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: 2 různé programy spouštěné na základě stavu pinu

Příspěvek od petan » 29 pro 2018, 17:34

V podstatě je potřeba oba programy spojit. tzn dát dohromady definice proměnných atd na začátku programu. Vytvořit si proměnnou, která bude určovat, která část programu se spustí a hned na začátku si přečíst stav vstupů. Podle toho nastavit proměnnou a jak v setupu, tak v loopu spustit příslušný program.

Program 1(2):

Kód: Vybrat vše

#define necoProProgram1
int promenaPR1;
bool promennaPR1;

void setup(){
	//vse pro program 1
}

void loop(){
	//logika programu1
}

void FceProPrg1(){
	//neco
}
Oba programy:

Kód: Vybrat vše

#define necoProProgram1
int promenaPR1;
bool promennaPR1;

#define necoProProgram2
int promenaPR2;
bool promennaPR2;

bool jakyProgramSeMaSpustit;

void setup(){
	jakyProgramSeMaSpustit = digitalRead(53);
	
	if(jakyProgramSeMaSpustit){
	//vse pro program 1
	}
	else{
	//vse pro program 2
	}
	
}

void loop(){
	if(jakyProgramSeMaSpustit){
	//logika programu 1
	}
	else{
	//logika programu 2
	}
}

void FceProPrg1(){
	//neco
}

void FceProPrg2(){
	//neco
}

honzahorka
Příspěvky: 8
Registrován: 29 pro 2018, 14:59
Reputation: 0

Re: 2 různé programy spouštěné na základě stavu pinu

Příspěvek od honzahorka » 29 pro 2018, 21:42

Ano myslím že teť je mi to jasnější.
Zytra provedu nějaký pokus.
Moc děkuji za pomoc.

honzahorka
Příspěvky: 8
Registrován: 29 pro 2018, 14:59
Reputation: 0

Re: 2 různé programy spouštěné na základě stavu pinu

Příspěvek od honzahorka » 30 pro 2018, 15:30

tak jsem se pokusil oba programy spojit ,ale stejně někde dělám chybu a nevým kde.
při kompilaci to píše:


exit status 1
'getdegrees' was not declared in this scope

přitom když kompiluji každý program zvlášť vše je ok.

viz příloha
Přílohy
jakyprogrammaspustit.ino
(28.17 KiB) Staženo 3 x

AstroMiK
Příspěvky: 136
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: 2 různé programy spouštěné na základě stavu pinu

Příspěvek od AstroMiK » 30 pro 2018, 16:07

V bloku "loop()" ti přebývá, nebo chybí jedna složená závorka. Dál jsem to nezkoumal.

honzahorka
Příspěvky: 8
Registrován: 29 pro 2018, 14:59
Reputation: 0

Re: 2 různé programy spouštěné na základě stavu pinu

Příspěvek od honzahorka » 30 pro 2018, 16:51

ano, moc děkuji našel jsem to a opravil a posunulo mě to cca do 3/4 programu kde je opet problém

označilo mi to tuto část:
else{

a píše to:
exit status 1
expected unqualified-id before 'else'

Vůbec se v tom nemohu vyznat.
Přílohy
jakyprogrammaspustit.ino
(28.17 KiB) Staženo 4 x

AstroMiK
Příspěvky: 136
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: 2 různé programy spouštěné na základě stavu pinu

Příspěvek od AstroMiK » 30 pro 2018, 17:29

Řekl bych, že to bude zase něco se závorkama.

Když na to kouknu, tak blok, který začíná závorkou na řádce 668 - to je za tím ISR(INT0_vect), končí závorkou na řádce 837.

A za tím hned pokračuje nesmyslné "else", ke kterému chybí "if".


Ten program je ale na mě dost nepřehledný, takže možná bude chyba i někde jinde.

pavel1tu
Příspěvky: 546
Registrován: 26 říj 2017, 08:28
Reputation: 1
Bydliště: Trutnov
Kontaktovat uživatele:

Re: 2 různé programy spouštěné na základě stavu pinu

Příspěvek od pavel1tu » 30 pro 2018, 17:38

Srovnat kod,
každá závorka - odsadit kod o tabelator, i kod v zavorce odsadit dle zavorky za kterou je ....
zavorky co patří k sobě musí být jakoby pod sebou ve stejném sloupci ...

pak se v tom možná vyznáme, to za tebe nikdo dělat nebude :-D
UNO, NANO, Mikro, PRO mini, DUE
http://pavel1tu.8u.cz/

honzahorka
Příspěvky: 8
Registrován: 29 pro 2018, 14:59
Reputation: 0

Re: 2 různé programy spouštěné na základě stavu pinu

Příspěvek od honzahorka » 30 pro 2018, 17:42

nejhorší je to že jsou to dva různé programy od dvou různých autorů.
poznámky tam byly původně napsané v azbuce tak jsem si je alespoň přeložil přez google a dokázal jsem programy pouze změnou některých parametrů přizpůsobit mému použití. Oba dva jsou samostatně funkční.
Původně byl jeden pro menší arduino a druhý pro megu2560, dyspleje byli jiné a zapojení také jiné, ale to se mi povedlo upravit a odzkoušet.
Chtěl jsem pouze pro zjednodušení a zmenšení použít pouze jedno arduino a 1 displej.
Proto nemohu pochopit že ty programy samostatně fungůjí.
programování mi nejde a moje původní idea byla že to bude jednodužší

honzahorka
Příspěvky: 8
Registrován: 29 pro 2018, 14:59
Reputation: 0

Re: 2 různé programy spouštěné na základě stavu pinu

Příspěvek od honzahorka » 30 pro 2018, 17:45

takže jako je to v programu 1?
stejně upravit i program 2
Přílohy
PR2.ino
(12.13 KiB) Staženo 2 x
PR1.ino
(16.65 KiB) Staženo 2 x

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host