Wątek przeniesiony 2018-11-08 11:49 z C/C++ przez Marooned.

Sprawdzenie który warunek się wykonał

0

Witam. Posiadam taki oto kod :

if(wartosc>(WILG+2)) { //
digitalWrite(relay_pin2, HIGH); //Wyłączenie Promiennika
digitalWrite(relay_pin3, LOW); // Włączenie wentylatora
digitalWrite(relay_pin4, LOW);  // Włączenie wentylatora
digitalWrite(relay_pin, LOW);  // Wlaczenie GENERATORA PARY  PIN 8 IN3
digitalWrite(led_info_generator, HIGH); //Włączenie diody od GENERATORA
digitalWrite(led_info_promiennik, LOW); //WYLACZENIE diody od PROMIENNIKA
digitalWrite(led_info_nic, LOW); // Wyłączenie diody od NIC
}
else if(wartosc<(WILG-2)){ //  

digitalWrite(relay_pin3, HIGH);  // Wyłączenie wentylatorow
digitalWrite(relay_pin4, HIGH);  // Wyłączenie wentylatorów
digitalWrite(relay_pin, HIGH);  // Wylaczenie GENERATORA 
digitalWrite(relay_pin2, LOW); // Wlaczenie Promiennika
digitalWrite(led_info_promiennik, HIGH); //Włączenie diody od PROMIENNIKA
digitalWrite(led_info_generator, LOW); //Wyłączenie diody od GENERATORA
digitalWrite(led_info_nic, LOW); // Wyłączenie diody od NIC
}
else { //

digitalWrite(relay_pin, HIGH); // Wyłaczenie generatora
digitalWrite(relay_pin2, HIGH); // Wyłączenie promiennika
digitalWrite(relay_pin3, HIGH);  // Wyłączenie wentylatorow
digitalWrite(relay_pin4, HIGH);  // Wyłączenie wentylatorów
digitalWrite(led_info_promiennik, LOW); //WYLACZENIE diody od PROMIENNIKA
digitalWrite(led_info_generator, LOW); //WYLACZENIE diody od GENERATORA
digitalWrite(led_info_nic, HIGH);
}

Potrzebuje zapisać w jakiejś zmiennej , który warunek aktualnie działa - czy wie ktoś może jak to zrobić? :D

0

naucz się używać debuggera. Zajmie ci to 15 minut.

Ok może przesadziłem. Teraz załapałem, że programujesz jakiś kontroler, więc jeśli nie masz emulatora, to podłączenie debuggera nie jest takie proste.
Z drugiej strony twoje pytanie ma tak podstawową naturę, że dziwne jest, że tak szybko wziąłeś się za programowanie mikro kontrolerów.

0

Ale w tym debugerze napiszę program? Bo ten program musze wgrać do arduino. Niestety sytuacja wymaga abym napisał program :/ teraz udoskonalam

0

Ludzie coraz rzadziej googlują...

Nie, w debuggerze się nie pisze programów, w debuggerze się uruchamia programy. W Twoim przypadku ustawia się breakpointy w odpowiednich miejscach.

0

Widzę że to nie takie łatwe jednak - zapoznam się z tematem. Ale ja mam program wgrać do arduino więc to chyba nie jest wykonalne :D

0

Jeżeli zależy Ci na obserwowaniu warunku na bieżąco to możesz wykorzystać kombinacje diod LED, które widzę że podpiąłeś do swojej płytki:

digitalWrite(led_info_generator, HIGH); //Włączenie diody od GENERATORA
digitalWrite(led_info_promiennik, LOW); //WYLACZENIE diody od PROMIENNIKA
digitalWrite(led_info_nic, LOW); // Wyłączenie diody od NIC

Jeśli jednak zależy Ci na tym, by rzeczywiście zapisywać w zmiennej stan lub warunek aktualnie wykonywany, to wystarczy, że utworzysz konkretny typ zmienną go przechowującą:

typedef enum
{
    condition1,
    condition2,
    condition3,

    none
} Condition_t;

Condition_t currentCondition = none;
if(wartosc>(WILG+2)) {
    currentCondition = condition1;
}
else if(wartosc<(WILG-2)){
    currentCondition = condition2;
}
else {
    currentCondition = condition3;
}

Nie wiem czym są warunki i WILG w Twoim kodzie, dlatego nazwy warunków w enum też nie są dobrze nazwane. Mam nadzieję, że to sobie poprawisz ;)

1
avabuy napisał(a):

Ale w tym debugerze napiszę program? Bo ten program musze wgrać do arduino. Niestety sytuacja wymaga abym napisał program :/ teraz udoskonalam

Ewidentnie masz poważną dziurę w wiedzy.
Debugger to jest narzędzie, które jest częścią IDE (zintegrowanego środowiska programistycznego).
Jak pisałeś pierwsze programy na komputerze stacjonarnym, trzeba było się tego nauczyć. Debugowanie programów, uruchamianych na tej samej maszynie, której się używa jest proste i można się nauczyć w 15 minut.
Skonfigurowanie zdalnego debugowania, jest dużo trudniejsze, szczególnie w przypadku, na urządzeniach o słabych parametrach (Arduino chyba pod to nie podpada - nie znam się, nigdy tego nie używałem).

Dlatego moja rada, zrób parę kroków wstecz i naucz się posługiwać debuggerem. Potem się zastanów, czy nie warto poświęcić więcej czasu i spróbować skonfigurować zdalny debugger na twoim urządzeniu.
Rozważ też użycie emulatora (nie powinno być problemu z debugowaniem).

0

Bartosz36 dziękuję za odpowiedź! Przeanalizuje to sobie :)

3

Z Arduino jest ten problem, że dla prostych płytek (typu Uno czy Leonardo) po prostu debuggera nie ma (w odróżnieniu od np. Zero albo M0). Jest trochę narzędzi które to niby umożliwiają (np. Visual Micro), prawdopodobnie narzędzia dedykowane do AVR-ów jako takich też mogą zadziałać (np. Atmel Studio), bo istnieje debugWIRE, ale darmowego debuggera zasadniczo wciąż nie spotkałem.

Ale już dla np. takiego ESP8266 są jakieś protezy, ale nie jest to takie ładne i proste jak w przypadku "zwykłych" aplikacji, gdzie mamy wykonywanie krok-po-kroku, bezproblemowe watche, "immediate window" i inne takie.

(i za każdym razem strasznie mnie boli, że .NET Micro Framework nie żyje, bo na nim się to dało robić bez żadnych problemów, wbudowane od razu w VS, identycznie jak w "dużym" Frameworku)

1 użytkowników online, w tym zalogowanych: 0, gości: 1