Jabuti Napisano Grudzień 21, 2018 Udostępnij Napisano Grudzień 21, 2018 Witam mam problem z jednym z moich projektów chciał bym uzyskać stoper który po wciśnięciu przycisku zaczyna odmierzać czas oraz po przecięciu fotokomórki następuje zatrzymuje wyświetla oraz możliwość nowego pomiaru(od zera). Na razie zamiast fotokomórki jest przycisk oraz roboczo wyświetlam wyniki na serial porcie. unsigned long tstart = 0; int buttons=7;//przycisk start int buttonsto=2;// przycist stop docelowo fotokomorka void setup() { pinMode(buttons, INPUT_PULLUP); pinMode(buttonsto, INPUT_PULLUP); Serial.begin(9600); } void loop() { while(digitalRead(4)==LOW) { if (digitalRead(buttons) == LOW) { tstart=millis(); } if (digitalRead(buttonsto) == LOW) { Serial.println(millis()-tstart); } } } Prosił bym o pomoc bo średnio wiem jak się do tego zabrać, obecnie wyświetla czas ale tylko raz po restarcie arduino i go wyświetla Cytuj Link do komentarza Share on other sites More sharing options...
matural Grudzień 22, 2018 Udostępnij Grudzień 22, 2018 A co masz na pinie 4? Dlaczego ma tam być stan niski? Cytuj Link do komentarza Share on other sites More sharing options...
Jabuti Grudzień 22, 2018 Autor tematu Udostępnij Grudzień 22, 2018 Miał być to przełącznik do włączania kodu ale po usunięciu całej pętli jest to samo co opisałem powyżej. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Grudzień 22, 2018 Udostępnij Grudzień 22, 2018 Działanie stopera to jedna sprawa, ale zastanów się też nad zmianą sposobu w jaki wysyłasz dane do PC. W tej chwili, jeśli dany przycisk jest wciśnięty to będziesz wysyłał przez UART masę danych, w pętli bez żadnego opóźnienia. Komunikacja nie będzie działała poprawnie. Najlepiej byłoby zrobić tak, że zatrzymanie stopera ustawia jakąś flagę (zmienną), która oznacza, że należy wysłać dane do komputera. Arduino powinno wtedy wysłać informacje i zapamiętać, że już to zrobiło, aby nie wysyłać ciągle danych do komputera. Cytuj 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
Jabuti Grudzień 22, 2018 Autor tematu Udostępnij Grudzień 22, 2018 Dane były wyświetlane poglądowo. obecna wersja kodu wyświetla je na lcd Teraz rodzi się drugie pytanie jakich modułów radiowych użyć odległość między nimi raczej nie będzie przekraczać jednego kilometra lecz będzie miedzy nimi przewyższenie oraz czy murze użyć 2 arduino? To jest nowa wersja kodu trochę napisana samemu a trochę przekopiowana z internetu. #include <LCD.h> #include <LiquidCrystal.h> #include <LiquidCrystal_I2C.h> #include <Wire.h> LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); void setup() { lcd.begin(16, 2); lcd.clear(); Serial.begin(9600); pinMode(7, INPUT); digitalWrite(7, HIGH);//8 pinMode(2, INPUT); digitalWrite(2, HIGH);//9 } double i = 0; double a = millis(); double c ; void loop() { lcd.clear(); lcd.print("press start"); delay(100); if(digitalRead(7) == LOW) { lcd.clear(); a = millis(); while(digitalRead(2) == HIGH) { c = millis(); i = (c - a) / 1000; lcd.print(i); lcd.setCursor(7,0); lcd.print("Sec's"); lcd.setCursor(0,0); Serial.println(c); Serial.println(a); Serial.println(i); Serial.println("......"); delay(100); } if(digitalRead(2) == LOW) { while(digitalRead(7) == HIGH) { lcd.setCursor(0,0); lcd.print(i); lcd.setCursor(11,0); lcd.print(""); lcd.setCursor(0,0); delay(100); } } } } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Grudzień 27, 2018 Udostępnij Grudzień 27, 2018 Dnia 22.12.2018 o 18:52, Jabuti napisał: Teraz rodzi się drugie pytanie jakich modułów radiowych użyć odległość między nimi raczej nie będzie przekraczać jednego kilometra lecz będzie miedzy nimi przewyższenie oraz Kilometr to bardzo dużo przy takiej komunikacji. Określ konkretnie jakich odległości oczekujesz, 20-100 m czy 900 m, bo to olbrzymia różnica. Raczej bez drugiego Arduino w takim przypadku się nie obejdzie. Opisz może dokładniej co to będzie za urządzenie (od strony praktycznej). Łatwiej będzie wtedy pomóc. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!