Stránka 1 z 2

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

Napsal: 29 pro 2018, 15:16
od honzahorka
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

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

Napsal: 29 pro 2018, 17:34
od petan
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
}

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

Napsal: 29 pro 2018, 21:42
od honzahorka
Ano myslím že teť je mi to jasnější.
Zytra provedu nějaký pokus.
Moc děkuji za pomoc.

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

Napsal: 30 pro 2018, 15:30
od honzahorka
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

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

Napsal: 30 pro 2018, 16:07
od AstroMiK
V bloku "loop()" ti přebývá, nebo chybí jedna složená závorka. Dál jsem to nezkoumal.

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

Napsal: 30 pro 2018, 16:51
od honzahorka
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.

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

Napsal: 30 pro 2018, 17:29
od AstroMiK
Ř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.

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

Napsal: 30 pro 2018, 17:38
od pavel1tu
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

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

Napsal: 30 pro 2018, 17:42
od honzahorka
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žší

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

Napsal: 30 pro 2018, 17:45
od honzahorka
takže jako je to v programu 1?
stejně upravit i program 2