Skocz do zawartości

Problem z odczytem wartości z listwy czujników QTR-8A używając 'analogRead()'


Pomocna odpowiedź

Napisano

Cześć wszystkim,

Staram się odczytać wartości z listwy czujników QTR-8A przy użyciu funkcji analogRead() w Arduino, ale napotkałem kilka problemów.

Podłączam czujniki do odpowiednich pinów analogowych na moim Arduino (A0 - A7), zasilanie VCC do 5V, a GND do masy. Następnie próbuję odczytać wartości pojedynczych czujników przy pomocy następującego kodu:

const int sensorPin = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  delay(100);
}

Oczekiwałem, że otrzymam różne wartości w zależności od tego, czy czujnik jest nad białą czy czarną powierzchnią. Niemniej jednak, niezależnie od koloru powierzchni, wartość zwracana przez analogRead() jest stale wysoka (blisko 1023), na samą linią czarną jest dokładnie 1023, a nad białą powierzchnią spada do 1016, odczyt "z powietrza" przy podniesionej listwie jest nieco poniżej 1000.

Dodam, że listwa jest sprawna, bo jak wczytuję gotowy przykład dołączony z biblioteką qtr, to przy przesuwanie listwy na linią czarną linią zwraca mi pełny zakres dla pozycji linii o 0 do 7000, przy czym odczyty te są dość niestabilne dlatego chciałem spróbować skonfigurować ją "ręcznie".

Czy ktoś ma sugestie, jak mogę poprawnie odczytać wartości z tych czujników? Czy jest coś, co mogę zrobić inaczej lub coś, co mogłem pominąć?

Z góry dziękuję za wszelką pomoc!

1 godzinę temu, szeryf napisał:

Czy jest coś, co mogę zrobić inaczej lub coś, co mogłem pominąć?

A czy przypadkiem nie trzeba włączyć diod oświetlających? Nic o tym nie pisałeś, a bez tego raczej nie ma prawa działać.

(edytowany)

 

1 godzinę temu, ethanak napisał:

A czy przypadkiem nie trzeba włączyć diod oświetlających?

Wydawało mi się, że po podłączeniu zasilania do tej listwy diody są włączane automatycznie, czy coś pomyliłem? Do pinu LedOn na listwie niczego nie podłączałem.

Edytowano przez szeryf

Nie widziałem tej listwy na oczy, ale zerknąłem na schemat. Pin LedOn steruje właśnie jak sama nazwa wskazuje włączaniem LED.

W bibliotece też jest coś na jego temat, chociaż od czasu Mbroli tak nieczytelnego kodu nie widziałem 🙂

Podłączenie tego pinu LedOn nic nie wnosi. Z tego co widzę w opisie przykładu, to jest on opcjonalny. Robiłem testy na listwie cyfrowej, tam mogę spokojnie wysterować ją ręcznie za pomocą długości czasu rozładowania kondensatora, ale w analogowej zamiast kondensatora jest rezystor i nie bardzo wiem jak to ugryźć.

6 minut temu, szeryf napisał:

Podłączenie tego pinu LedOn nic nie wnosi.

Ano tak - teraz dokładniej popatrzyłem na schemat, diody powinny być zapalone bez podłączenia (LedOn w powietrzu). Mój błąd.

Teoretycznie to co napisałeś powinno działać... bo efekt jest takim jakby ledy w ogóle się nie paliły i łapał światło z otoczenia. Na pewno się palą? Sprawdź na wszelki wypadek, bo innych pomysłów nie mam 😞

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...