Dotaz od začátečníka – podmínka if
Úvodní stránka › Fórum › Vaše projekty › Arduino › Dotaz od začátečníka – podmínka if
- Toto téma obsahuje celkem 3 odpovědi. Do diskuze (3 diskutující) se naposledy zapojil uživatel barak a poslední změna proběhla před 8 roky a 8 měsíci.
-
AutorPříspěvky
-
2.2.2016 v 22:40 #5904m.myskaÚčastník
Nazdar všichni, seznamuji se s arduinem, koupil jsem si první desku a nyní mám stav, kdy zkoušim diodu na pinu 2. Bliká mi po třech vteřinách, to není problém. Problém mám, když vypisuju na serial stav HIGH nebo LOW. To mi prostě píše pouze jeden stav po 3 vteřinách a nic víc. Čekal jsem, že bude odesílat střídavě stavy sviti a nesviti. Ted chodí jen svítí každé 3s. Asi nějaká začátečnická hloupost 🙂
Kód:
int led = 2;
int stav = digitalRead(2);
void setup() {
// put your setup code here, to run once:
pinMode(led, OUTPUT); // nastavení výstupu portu 2
Serial.begin(9600);}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(led, HIGH); // zapnutí napětí na port 2
delay(3000);
digitalWrite(led, LOW); // vypnutí napětí na port 2
delay(3000);if (stav == HIGH)
{
Serial.println(„Sviti“);
}
else if (stav == LOW)
{
Serial.println(„Nesviti“);
}
else
{
Serial.println(„Nevim“);
}3.2.2016 v 7:25 #5911edmondÚčastníkOsobně si myslím, že Vám chodí stále že nesvítí. 🙂
Váš program pracuje následovně:
napětí na pin 2
3 sekundy se nic neděje
vypnutí pinu 2
3 sekundy se nic neděje
pak se ptáte v jakém stavu je LED a ta je vždy v tomto stavu vypnuta3.2.2016 v 23:16 #5912m.myskaÚčastníkOpravdu mi chodí v serial monitoru svítí 🙂 , ale to je asi fuk.
Kde a jak tedy položit podmínku k výpisu, aby reagovala po stavu HIGH i LOW?
Díky.4.2.2016 v 0:32 #5913barakÚčastníkMozna od temy ale take podminka IF.
Chtel jsem pouzit IF. Sledoval jsem hodnotu y AO a potom dal IF, ale zacyklovalo se, stale cetlo posledni hodnotu. Taj sem to vyresil nize. Da se to vyresit aby se necyklovaloconst int lamdaSig = A0; // Analogový vstup je nastaven na pi A0 pre lambdu sondu
int napatie = 0; // Proměná pro hodnotu přečtenou z A0
int led2 = 2;
int led3 = 3;
int led12=12;
const int sensorPin = A1;
const float baseLineTemp = 20;
int t;void setup() {
// Nastaví rychlost komunika na sériovám portu na 9600 bps:
Serial.begin(9600);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led12, OUTPUT);
}void loop() {
int sensorVal = analogRead(sensorPin);
napatie = analogRead(lamdaSig); // přečte hodnotu z A0 z lambda sondy
napatie = ((napatie * 500.0) / 0.1) / 1024; //vysledok v mV
// aby jsme videli vysledek, hodnotu odešleme přes sériový port
Serial.print(“ napatie = “ ); // zapiše text hodnota =
Serial.println(napatie); // zapiše proměnou hodnotu/napatiefloat teplota = ((sensorVal*5000.0)/30) /1024;
Serial.print(“ teplota = „);Serial.println(teplota);
delay(1000); // čekej 1000mst=constrain(teplota, 20, 200); //ked je teplota mensi ako nastavene tak vrati 25,
Serial.print(„upravene = „);
Serial.println(t);switch(t){
case 20:
digitalWrite(led12, HIGH); //blika ked nie je teplota
delay(1000);
digitalWrite(led12, LOW);
digitalWrite(led3,HIGH); //teplota mensi nez pozadovana otvari sa klapka1
break;default: //ked je teplota v roymeyi nastavene par contrain
digitalWrite(led3, LOW); //zatvori klapku1
if (napatie < 200) { //mensi tak otvara klapku
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led2, LOW); //klapka sa otvara len urcity cas pak zatvori
}if (napatie > 200) { //vetsi zatvara klapku
digitalWrite(led2, LOW);
}if (napatie > 500) { //vetsi zatvara klapku
digitalWrite(led3, HIGH);
delay(500);
digitalWrite(led3, LOW); //cas delay otvorena klapka pak zatvori
}
if (napatie < 500) {
digitalWrite(led3, LOW);
}delay(1000); //nacha reagovat po delay pak nove meranie
break;
}
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.