Skocz do zawartości

Pomiar odległości po wciśnięciu przycisku


m81wwski

Pomocna odpowiedź

Cześć,

Jestem na etapie #9 i chciałem zmodyfikować szkic, który odczytuje odległość poprzez czujnik odległości. Chciałem aby odczyt był robiony tylko w przypadku gdy dodatkowy przycisk jest wciśnięty ale niestety coś idzie nie tak.

Kod mam taki:

#define trigPin 12
#define echoPin 11
#define przycisk 10

void setup() {
 Serial.begin(9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(przycisk, INPUT_PULLUP);
 
}
int zmierzOdleglosc() {
 long czas, dystans;
}
 
void loop() {
  if (digitalRead(przycisk) == LOW) {
  Serial.print(zmierzOdleglosc());
  Serial.println(" cm");
  delay(500);

  long czas, dystans;
  
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  czas = pulseIn(echoPin, HIGH);
  dystans = czas / 58;

  return dystans; 
} 
}

Błąd podczas komplikacji:

Cytat

C:\Users\Kasia\Documents\Arduino\dystans_przycisk_new\dystans_przycisk_new.ino: In function 'void loop()':

C:\Users\Kasia\Documents\Arduino\dystans_przycisk_new\dystans_przycisk_new.ino:33:10: warning: return-statement with a value, in function returning 'void' [-fpermissive]

   return dystans;

          ^

Szkic używa 2482 bajtów (7%) pamięci programu. Maksimum to 32256 bajtów.
Zmienne globalne używają 192 bajtów (9%) pamięci dynamicznej, pozostawiając 1856 bajtów dla zmiennych lokalnych. Maksimum to 2048 bajtów.

Monitor podaje cały czas wynik "0 cm" bez względu na to czy przycisk jest wciśnięty czy nie.

Jako, że programuje od miesiąca prośba o pomoc

Link do komentarza
Share on other sites

@m81wwski skąd w Twojej pętli loop wziął się nagle return? Jaki był tego cel? Ten kod jest cały jakiś poplątany i nielogiczny, wygląda jakbyś kopiował programy i wkleił coś w złym miejscu. Spójrz na swoją funkcję dokonującą pomiaru, jest całkowicie bezsensowna. Na pewno chciałeś tak to napisać i nie jest to błąd wklejania?

Link do komentarza
Share on other sites

#Treker - na początku chciałem w prosty sposób przerobić wasz szkic do pomiaru odległości i niestety wyszedł z tego bajzel.

Zacząłem od napisania całego szkicu od początku, ale nadal nie mogę właściwie zastosować if, aby pomiar był dokonywany tylko przy wciśniętym przycisku. W przeciwnym wypadku ma wyświetlać się komunikat "Wcisnij przycisk"

Doszedłem na razie do takiej formy ale nadal cały czas zwraca mi on odległość:

#define trigPin 12
#define echoPin 11
#define przycisk 10

void setup() {
 Serial.begin(9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(przycisk, INPUT_PULLUP);
 
}
 int zmierzOdleglosc() {
  long czas, dystans;
  
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  czas = pulseIn(echoPin, HIGH);
  dystans = czas / 58;

  return dystans;
 }
void loop() {
  
  if (digitalRead(przycisk) == LOW) {

  Serial.print(zmierzOdleglosc());
  Serial.println(" cm");
  delay(500);

} else {
  Serial.println("Wcisnij przycisk");
}
}

Zostawiam to na po świętach - na razie brak mi pomysłu

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

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.