roraty Napisano Kwiecień 10, 2019 Udostępnij Napisano Kwiecień 10, 2019 Witam, chciałbym zrobić projekt na arduino, który składa się z guzika głośniczka i mikrokontrolera oczywiście. Polegałoby to na tym, że guzik zamontowany na ramie jest wciśnięty gdy lodówka jest zamknięta, a gdy jest otwarta po np. 5min głośnik zaczyna wydawać dźwięk (ponieważ guzik nie jest wciśnięty). Problem polega na tym że nie mam pojęcia gdzie umieścić instrukcje delay() w kodzie i czy w ogóle jest sens używać takiej instrukcji. Oto kod: void setup() { pinMode(5,OUTPUT); pinMode(7,INPUT_PULLUP); } void loop() { if(digitalRead(7)==HIGH) { digitalWrite(5,LOW); } else { digitalWrite(5,HIGH); } } Link do komentarza Share on other sites More sharing options...
Gieneq Kwiecień 11, 2019 Udostępnij Kwiecień 11, 2019 Cześć, witamy na forum 😀 Tu nie do końca potrzebujesz delay(). Twoim zadaniem będzie odmierzyć czas, a do tego może służyć funkcja millis(), która zwraca liczbę (long) milisekund jakie upłynęły od startu programu. Czyli w momencie przełączenia przycisku z jednego stanu w drugi musisz zapamiętać czas w jakim otwarto drzwi, a następnie sprawdzać czy minęło 5000 milisekund (5s) odejmując od aktualnego czasu zapamiętany. Całe obliczenia możesz wykonywać w głównej pętli. Możesz dać na jej końcu mały delay aby program nie leciał jak szalony (np 50ms). Jeżeli czas się naliczy (róznica > progu np. 5000) to włączasz buzzer, a wyłączysz buzzer gdy zewrzesz przycisk w drzwiach. 1 Link do komentarza Share on other sites More sharing options...
kaczakat Kwiecień 11, 2019 Udostępnij Kwiecień 11, 2019 Program ma lecieć jak szalony :D. Jak już wstawiasz to delay(50) to możesz w każdej pętli zliczać sobie zmienną, zerować gdy drzwi zamknięte, a pozwalać jej rosnąć gdy otwarte. Gdy przekroczy wartość 5s/50ms (100) włącz alarm. Za chwile będziesz chciał dodać sterowanie WIFI i pomiar temperatury, także od razu zajrzyj do kursu, w ostatniej lekcji jest millis();, a na forum mnóstwo przykładowych kodów z wykorzystaniem tej funkcji. 2 Link do komentarza Share on other sites More sharing options...
slon Kwiecień 14, 2019 Udostępnij Kwiecień 14, 2019 Możesz poćwiczyć na tym przykładzie. Wgraj bezpośrednio do arduino otwórz Serial monitor i wyślij r . Dioda na pinie 13 zaświeci się na 3 sekundy i zgaśnie. int led = 13; unsigned long Start; unsigned long buttonTime=0; int Power=0; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { Start = millis(); if ((Start-buttonTime)>=3000) { digitalWrite(led, LOW); Power=0; } else if (Power==1) digitalWrite(led, HIGH); if (Serial.available() > 0) { char komendy = Serial.read(); switch(komendy) { case'r': buttonTime=millis(); Power=1; break; } } } Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »