• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Podajnik sterowany przez UNO + LCD
#11
1. Brak definicji zmiennej "previousMillis".
2. Co to robi -> "previousMillis == 0;"
Zamiast:
Kod PHP:
if (currentMillis 5000) {
    
previousMillis == 0;
} else {
    
previousMillis currentMillis;

    if (
ledState == LOW) {
        
ledState HIGH;
    } else {
        
ledState LOW;
    }

    
digitalWrite(ledPinledState);

można było prościej:
Kod PHP:
if (currentMillis 5000) {
    
previousMillis currentMillis;

    if (
ledState == LOW) {
        
ledState HIGH;
    } else {
        
ledState LOW;
    }

    
digitalWrite(ledPinledState);


Oczywiście ja zrobiłbym to całkiem inaczej Wink.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#12
Musisz mi wybaczyć moje błędy. Nie wszystkim przychodzi to z łatwością
 
Odpowiedź
#13
(09-03-2017, 19:22)Fuks81 napisał(a): Musisz mi wybaczyć moje błędy. Nie wszystkim przychodzi to z łatwością

Tu nie ma co wybaczać, to są uwagi które maja służyć poprawieniu programu i nauce.

Następne zadanie to to co chciałeś w poście #5 -> różny czas stanu niskiego i wysokiego. Na razie bez przycisku i bez opóźnienia. Taki BlinkWithoutDelay ale z różnymi czasami zapalenia i zgaszenia. Możesz to zrobić z użyciem if lub lepiej switch. W zależności od stanu zmiennej ledState zmieniaj interval lub w dowolny inny sposób który wymiślisz.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#14
Namok DZIĘKUJĘ CI SERDECZNIE ZA POŚWIĘCANIE CZASU DLA MNIE.
Jeśli chodzi o użycie IF to myślę, że powinienem mieć dwa interwały uruchamiane naprzemiennie. Co do SWITCH to też jeszcze nie wiem, którą zmienną mam podstawić i jak powinny wyglądać warunki. Z pomocą przychodzi symulator. Podsumowując odezwę się jak będą efekty. Jeszcze raz dzięki.
 
Odpowiedź
#15
(10-03-2017, 16:52)Fuks81 napisał(a): Co do SWITCH to też jeszcze nie wiem, którą zmienną mam podstawić i jak powinny wyglądać warunki.
Musisz się wczytywać co piszę Smile
(09-03-2017, 20:27)namok napisał(a): Możesz to zrobić z użyciem if lub lepiej switch. W zależności od stanu zmiennej ledState zmieniaj interval lub w dowolny inny sposób który wymiślisz.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#16
Zrozumiałem Twoją wypowiedź. Po prostu wydaje mi się, że dobrze umieć dowolny sposób a jeszcze lepiej poznać kilka.
 
Odpowiedź
#17
Chyba jednak się do tego nie nadaję. Napisałem kod na dwa interwały ale to jest raczej kombinacja na chybił trafił.
Niby wszystko jest OKI ale nic nie rozumiem z tego kodu. Biorę się za switch, może tu osiągnę jakiś sukces. Zaczynam się zniechęcać. A to dopiero przedszkole.

Kod:
const int ledPin =  13;
const int led_off = 5000;
const int led_on = 1000;

int LedState = HIGH;


unsigned long previousMillis = 0;  

void setup() {
    
    
    pinMode(ledPin, OUTPUT);
}

void loop() {
    
    
    unsigned long currentMillis = millis();  
    
    
    if (LedState == HIGH) {    
        
        
        if ( currentMillis - previousMillis >= led_on) {
            LedState = LOW;
            digitalWrite(ledPin, LedState);
            
            previousMillis = currentMillis;
            
        }
    }
    else {
        
        if ( currentMillis - previousMillis >= led_off) {
            LedState = HIGH;
            digitalWrite(ledPin, LedState);
            
            previousMillis = currentMillis;
            
        }
    }
}
 
Odpowiedź
#18
Każde rozwiązanie które działa jest dobre. Można się spierać co do "jakości" programu ale "jakość" przychodzi z czasem.
Wprowadziłeś dwie zmienne "len_on" i "led_off" zamiast "interval". A można zmieniać wartość "interval" w zależności od stanu "ledState".
Jeśli tem problem zaczyna Cię nużyć to proponuje odłożyć go na jakiś czas("z problemem czasem trzeba sie przespać") i przerobić jakiś kurs arduino który niedość że pozwili zapoznać się z podstawowymi instrukcjami(które koniecznie trzeba poznać) to da gotowe rozwiązania na podstowe problemy.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#19
Wracam po chwilowej nieobecności. Na upartego chciałem się nauczyć instrukcji SWITCH CASE. Bez wskazówki jestem na to za głupi. Nie mogę tego ogarnąć.
Ten kod wymodziłem już dawno. Jest to wersja na jeden "interval" oraz z przykładowym opóźnieniem czasowym.

Kod:
const int ledPin =  13;
const int interval = 5000;


int LedState = HIGH;


unsigned long previousMillis = 0;  

void setup() {
    
    
    pinMode(ledPin, OUTPUT);
}

void loop() {
    
    
    unsigned long currentMillis = millis();   
 
    if(LedState == HIGH) {    
        
        
        if ( currentMillis - previousMillis >= (interval/5)) {
            LedState = LOW;
            digitalWrite(ledPin, LedState);
            
            previousMillis = currentMillis;
        }
        
        
    }
    else {
        
        if ( currentMillis - previousMillis >= interval) {
            LedState = HIGH;
            digitalWrite(ledPin, LedState);
            if(currentMillis > 15000) {
                
                previousMillis = currentMillis;
                
            }    
        }
    }
}
 
Odpowiedź
#20
Oglądam skoki więc dużo nie napisze.
Jeśli chodzi o switch to w internecie jest sporo kursów czy to c czy c++.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości