Skocz do zawartości

Kurs Arduino - #9 - Czujnik odległości HC-SR04, funkcje


Komentator

Pomocna odpowiedź

@StefanekP najlepiej w ogóle nie używać warunków 😉 tylko potrzeba wiedzy o działaniu tablic. Spróbuj użyć do tego funkcji map. Następnie możesz pokombinować z zamianą zmierzonej odległości przy pomocy funkcji - np wyciągnąć z tego logarytm. Na koniec możesz dodać warunek, który będzie przełączał diody tylko jak zajdzie potrzeba - zauważalna zmiana odległości, wymagająca odświeżenia wskaźnika. 

Link do komentarza
Share on other sites

Cześć, 
niestety nie działa mi mój kod, choć idea była bardzo prosta: czerwona dioda miała migać w momencie, kiedy zostanie przyłożone napięcie większe (lub równe) od 4V. 
 


int valueRead = 0;
float volt = 0;

void setup() {
  Serial.begin(9600);
  pinMode(8, OUTPUT);
}

void loop() {
  valueRead = analogRead(A5);
  volt = valueRead*(5.0/1024.0);
  Serial.println(volt); 
  
  if(volt >= 4.0) {
  led();
  }

  delay(1000);

}

void led(){

digitalWrite(8, HIGH);
delay(1000);
digitalWrite(8, LOW);
delay(1000);
}

Tymczasem efekt jest taki, że dla jednostek większych lub równych 4V - rzeczywiście, czerwona dioda miga. Ale dla wszystkich innych (poniżej 4V) świeci cały czas (a nie powinna być w ogóle włączona). 
Czy ktoś wie, gdzie może tkwić problem?
Dzięki!

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

7 minut temu, Krawi92 napisał:

Jakiś warunek po else by się przydał. Spróbuj zrobić 2 funkcje, jedna która miga, druga która wyłącza Led. 

Niestety próbowałam (teraz też - znowu, i to na dwa/trzy sposoby), i nie udało się. Pomijając fakt, że else nie jest chyba podstawą składową funkcji if (przynajmniej nie była w innych językach), więc też nie powinna być wymagana (chyba, że Arduino działa inaczej ;)). 
Dzięki jednak za sugestię.

Link do komentarza
Share on other sites

Po prostu nie wyłączasz led-a gdy napięcie jest mniejsze niż 4V 

5 minut temu, Sekret napisał:

Pomijając fakt, że else nie jest chyba podstawą składową funkcji if (przynajmniej nie była w innych językach), więc też nie powinna być wymagana (chyba, że Arduino działa inaczej ;)). 

CO? https://pl.wikibooks.org/wiki/C/Instrukcje_sterujące "Arduino" nie działa inaczej 😉

Link do komentarza
Share on other sites

6 minut temu, farmaceuta napisał:

Choc dziwne...bo tamten kod powinien dzialac poprawnie...wkoncu w funkcji led() pin zawsze jest na LOW przed wyjsciem...

Nie wiesz, jak ten led jest podłączony 😉 bo jeśli anodą do plusa... 

Edytowano przez _LM_
  • Lubię! 1
Link do komentarza
Share on other sites

Cześć, wracam po weekendzie, usiadłam na nowo wieczorkiem, z czystym umysłem. 
@ethanak @_LM_ Kolega przed wami zasugerował, że jakiś else przydałby się po ifie, tymczasem ja swoją wypowiedzią chciałam nakierować, że nie powinno być to konieczne (w sensie if może działać bez else i brak elsa nie jest powodem nieodpowiedniego działania -> o to mi chodziło, wybaczcie nieścisłość). 

Rozwiązanie zagadki jest takie, że miałam źle podpięte ledy 😅  A na pewno inaczej niż chciałam. 
Może zacznę stosować te makra... 

Dziękuję wszystkim za pomoc! 😍

Pzdr. 
 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.