07-03-2017, 12:46
Witam forumowiczów, męczę się z tym już 3 dzień i dalej nie wiem o co chodzi. Dodatkowo napiszę że kod wcześniej, (jakieś 5 dni temu) działał poprawnie. Jednak stale go modyfikuję i mogłem coś poknocić. Chodzi o to, że mam taką akcję wywoływaną przez bibliotekę Timers.h:
Następnie po wysłaniu znaku "f", aktywuje się ten kod:
Oraz funkcja:
Problem polega na tym, że nie wykonuje się procedura "else" w funkcji "Funkcja_Swiatlo()". Co może być przyczyną złego działania kodu ?
Kod:
void Otrzymany_Znak() {
if (Serial1.available()) {
DaneBT=Serial1.read();
if (DaneBT=='f') {
Garaz.updateInterval(0,100);
Zmienna_Swiatlo=true;
Serial1.println(Zmienna_Swiatlo);
Funkcja_Swiatlo(); }
if (DaneBT=='g') {
Brama.updateInterval(0,100);
Garaz.updateInterval(0,100); } } }
Następnie po wysłaniu znaku "f", aktywuje się ten kod:
Kod:
void Garaz_Otworz() {
Stan3=digitalRead(Kranc3);
if (Stan3==HIGH) {
digitalWrite(Garaz_Kierunek, LOW);
analogWrite(Garaz_Predkosc, 90); }
else {
Zmienna_Swiatlo=false;
Serial1.println(Zmienna_Swiatlo);
digitalWrite(Garaz_Kierunek, LOW);
digitalWrite(Garaz_Predkosc, LOW);
Garaz.updateInterval(0,0);
Serial1.println("Garaż otwarty"); } }
Oraz funkcja:
Kod:
void Funkcja_Swiatlo() {
if(Zmienna_Swiatlo==true) {
digitalWrite(Swiatlo, LOW);
Czas_Start=millis();
Serial1.println(Czas_Start);
Serial1.println("czas start");}
else {
Czas_Teraz=millis();
Serial1.println("czas teraz");
Serial1.println(Czas_Teraz);
if (Czas_Teraz - Czas_Start > Czas_Zwloka && digitalRead(Swiatlo)==LOW) {
digitalWrite(Swiatlo, HIGH); } } }
Problem polega na tym, że nie wykonuje się procedura "else" w funkcji "Funkcja_Swiatlo()". Co może być przyczyną złego działania kodu ?