Skocz do zawartości

Stoper/Fotocela arduino


Jabuti

Pomocna odpowiedź

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 

Link do komentarza
Share on other sites

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.

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

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);
     }
   }
 }
}

 

Bez tytułu.png

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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ę »
×
×
  • 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.