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, ...)
-
paclikc
- Příspěvky: 9
- Registrován: 14 dub 2019, 12:35
- Reputation: 0
Příspěvek
od paclikc » 14 dub 2019, 12:46
Dobrý den.
nedaří se mi zprovoznit základní zápis "if"
Kód: Vybrat vše
int s_dest_cerpadlo = 22; //nastavení promenných
int d_dest_cerpadlo = 23;
int h_dest_cerpadlo = 24;
int s_akumulace = 25;
int d_akumulace = 26;
int h_akumulace = 27;
int s_studna = 28;
int d_studna = 29;
int h_studna = 30;
int hhhhhhhh = 31;
int cerpadlo_jimka = 50;
int xxxx = 51;
int cerpadlo_dest = 52;
int cerpadlo_studna = 53;
void setup(){
pinMode(s_dest_cerpadlo, INPUT_PULLUP);//nastaví s_dest_cerpadlo jako vstup
pinMode(d_dest_cerpadlo, INPUT_PULLUP);
pinMode(h_dest_cerpadlo, INPUT_PULLUP);
pinMode(s_akumulace, INPUT_PULLUP);
pinMode(d_akumulace, INPUT_PULLUP);
pinMode(h_akumulace, INPUT_PULLUP);
pinMode(s_studna, INPUT_PULLUP);
pinMode(d_studna, INPUT_PULLUP);
pinMode(h_studna, INPUT_PULLUP);
pinMode(cerpadlo_jimka, OUTPUT);
pinMode(xxxx, OUTPUT);
pinMode(cerpadlo_dest, OUTPUT);
pinMode(cerpadlo_studna, OUTPUT);
}
void loop(){
if ((h_dest_cerpadlo == HIGH) && (d_dest_cerpadlo == HIGH))
digitalWrite(cerpadlo_dest, HIGH);
else {
digitalWrite(cerpadlo_dest, LOW);
}
}
nemužu přijít na to kde dělám v zápise chybu
díky za reakce
-
martinius96
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
-
Kontaktovat uživatele:
Příspěvek
od martinius96 » 14 dub 2019, 13:33
oprava:
if sa ti splní vždy, keďže vstupy, ktoré overuješ sú input pullup, teda sú HIGH a nerobíš nové merania, ktoré by zmenili stav vstupu
Naposledy upravil(a)
martinius96 dne 14 dub 2019, 13:56, celkem upraveno 1 x.
-
paclikc
- Příspěvky: 9
- Registrován: 14 dub 2019, 12:35
- Reputation: 0
Příspěvek
od paclikc » 14 dub 2019, 13:50
Díky za reakci.
IDE to přeloží bez problémů.
Jen při testech to nedělá co má, PULLUP by neměl vadit když spojím pin s GND mam LOW? Pokud jsem to pochopil dobře.
Nerozumím poznámce o novém měření, to se neprovede při každém průchodu LOOP?
-
Riso
- Příspěvky: 27
- Registrován: 24 srp 2018, 15:36
- Reputation: 0
Příspěvek
od Riso » 14 dub 2019, 13:53
Skús to takto.
Kód: Vybrat vše
int s_dest_cerpadlo = 22; //nastavení promenných
int d_dest_cerpadlo = 23;
int h_dest_cerpadlo = 24;
int s_akumulace = 25;
int d_akumulace = 26;
int h_akumulace = 27;
int s_studna = 28;
int d_studna = 29;
int h_studna = 30;
int hhhhhhhh = 31;
int cerpadlo_jimka = 50;
int xxxx = 51;
int cerpadlo_dest = 52;
int cerpadlo_studna = 53;
void setup(){
pinMode(s_dest_cerpadlo, INPUT_PULLUP);//nastaví s_dest_cerpadlo jako vstup
pinMode(d_dest_cerpadlo, INPUT_PULLUP);
pinMode(h_dest_cerpadlo, INPUT_PULLUP);
pinMode(s_akumulace, INPUT_PULLUP);
pinMode(d_akumulace, INPUT_PULLUP);
pinMode(h_akumulace, INPUT_PULLUP);
pinMode(s_studna, INPUT_PULLUP);
pinMode(d_studna, INPUT_PULLUP);
pinMode(h_studna, INPUT_PULLUP);
pinMode(cerpadlo_jimka, OUTPUT);
pinMode(xxxx, OUTPUT);
pinMode(cerpadlo_dest, OUTPUT);
pinMode(cerpadlo_studna, OUTPUT);
}
void loop(){
if (digitalRead(h_dest_cerpadlo) && digitalRead(d_dest_cerpadlo))
digitalWrite(cerpadlo_dest, HIGH);
else
digitalWrite(cerpadlo_dest, LOW);
}
-
martinius96
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
-
Kontaktovat uživatele:
Příspěvek
od martinius96 » 14 dub 2019, 13:55
Nerobíš merania cez digitalRead() funkciu. To je problém. Riso to napísal správne, takto ti to bude fungovať.
-
paclikc
- Příspěvky: 9
- Registrován: 14 dub 2019, 12:35
- Reputation: 0
Příspěvek
od paclikc » 14 dub 2019, 14:02
Díky
Teď z učebních důvodu : Vysvětlíte mi proč byl můj zápis špatně?
Diky
-
SkullKeep
- Příspěvky: 290
- Registrován: 23 srp 2017, 18:51
- Reputation: 0
- Bydliště: Brno
-
Kontaktovat uživatele:
Příspěvek
od SkullKeep » 14 dub 2019, 16:26
Testoval jsi podmínku, která byla nastavena jednou. Případná změna na PINech by neudělala požadovanou změnu, proto se tam dáva to digitalRead(číslo pinu). To načte z vstupu hodnotu ,kterou pak porovnáváš.
-
BB Scary
- Příspěvky: 5
- Registrován: 05 kvě 2018, 18:29
- Reputation: 0
Příspěvek
od BB Scary » 24 dub 2019, 12:48
Hele sorry jestli se pletu. Taky jsem v arduinu ještě začátečník. Neměly by tam být ještě tyto { } závorky?
if (něco něco) {
udělej tohle;
} else {
udělej jinou věc;
}
Nebo to funguje i bez nich?
-
gilhad
- Příspěvky: 786
- Registrován: 07 bře 2018, 11:22
- Reputation: 0
Příspěvek
od gilhad » 24 dub 2019, 13:44
Podívej se na programování v Céčku (teda spíš C++).
podminka je buď
if (podmínka) příkaz
nebo
if (podmínka) příkaz else příkaz
přičemž příkaz může být buď příkaz jednoduchý ukončený středníkem - třeba volání funkce , nebo blok uzavřený ve složených závorkách
viz například
https://www.sallyx.org/sally/c/c12.php
-
paclikc
- Příspěvky: 9
- Registrován: 14 dub 2019, 12:35
- Reputation: 0
Příspěvek
od paclikc » 10 črc 2019, 20:46
Ahoj.
bohužel jsem začátečník amatér :-/
mohu mít takovýto zapís dvou ruzných "funkcí" v LOOPu?
nebo je na to nějaká jina finta? Nejlepší by byla rada od programatora který by řekl "takhle ne, to udělej přes switche , pomocí pole atd...
Kód: Vybrat vše
void loop(){
if (digitalRead(s_dest_cerpadlo) && digitalRead(max_akumulace)) { // přečte minimální hladinu v jimce a maximalní hladinu v akumulaci
if((cerpadlo_studna1 || !digitalRead(h_dest_cerpadlo)) && !digitalRead(d_dest_cerpadlo)){ //samodržné relé spinájící cerpadlo v jímce
cerpadlo_dest1 = true;
digitalWrite(cerpadlo_dest, LOW);
blikej ();
}
else{
cerpadlo_dest1 = false;
digitalWrite(cerpadlo_dest, HIGH);
}
}
if (digitalRead(d_studna)) { // přečte minimální hladinu v jimce a maximalní hladinu v akumulaci
if((cerpadlo_studna1 || !digitalRead(h_studna)) && digitalRead(d_studna)){ //samodržné relé spinájící cerpadlo v jímce
cerpadlo_studna1 = true;
digitalWrite(cerpadlo_studna, LOW);
}
else{
cerpadlo_studna1 = false;
digitalWrite(cerpadlo_studna, HIGH);
}
}
}
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů