Skocz do zawartości
Komentator

Kurs Arduino - #4 - Przetwornik ADC

Pomocna odpowiedź

Mam pytanie do zadania 4.5. Czy jest możliwość usuwania danych wysyłanych przez monitor portu szeregowego do Arduino?

Udostępnij ten post


Link to post
Share on other sites

@Wortan jeśli pytasz o to czy Arduino może wysłać do komputera jakąś komendę, która usunie wcześniej wysłane informacje z okna terminala to nie, nie ma takiej możliwości.

Udostępnij ten post


Link to post
Share on other sites

Jako laika w temacie nurtuje mnie jedno pytanie. Dlaczego fotorezystor podłączony jest do arduino jako dzielnik napięcia? W moim naiwnym rozumowaniu wygląda to tak. Arduino pracuje z napięciem 5V (pomijamy jakieś małe wachania). Podpinam fotorezystor bezpośrednio do +5V i pinu analogowego. Fotorezystor w swych skrajnych zakresach podaje na pin analogowy albo 0V albo 5V. Po co więc jest dzielnik napięcia?

Udostępnij ten post


Link to post
Share on other sites

@Ilona witam na forum 🙂

1 godzinę temu, Ilona napisał:

Fotorezystor w swych skrajnych zakresach podaje na pin analogowy albo 0V albo 5V.

I tu Cię zaskoczę, fotorezystor w Twojej konfiguracji zawsze podaje 5V, ponieważ niewielkie zmian rezystancji nic tu nie zmieniają. Arduino rejestruje zmiany napięcia czyli potrzebny jest dzielnik napięcia 🙂 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@Ilona pamiętaj, że fotorezystor działa podobnie jak rezystor - a rezystor ogranicza prąd, a nie napięcie. Dopiero korzystając z prawa Kirchhoffa, po zbudowanie dzielnika napięcia możemy właśnie wykorzystać rezystory do zmiany napięcia. Zerknij na poniższe dwa filmy:

 

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

@Treker Przespałam się z tym problemem i ogarnęłam sprawę. Teraz potrafiłabym to wyjaśnić takiemu laikowi jak ja, nawet lepiej niż robią to znawcy tematu 🙂

Edytowano przez Ilona

Udostępnij ten post


Link to post
Share on other sites

Cześć wszystkim. Namęczyłem się z zadaniem 4.6. Działa, ale znając życie, błędy czy niedopatrzenia są więc proszę o sugestie.

void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  Serial.begin(9600);
}

// zmienne do odczytu wartosci z fotorezystorow
int fotoLewy;
int fotoPrawy;

void loop() {

  for (int i = 2; i <= 6; i++){
    digitalWrite(i, LOW); // gaszenie diod
  }
  
  fotoLewy = analogRead(A4);
  fotoPrawy = analogRead(A5); 

  // usredniona wartosc odczytow z fotorezystorow, bo u mnie byly spore roznice
  int sredniaFoto = (fotoLewy + fotoPrawy) / 2;

  int jednaDioda; // przechowa wartosc potrzebna do zaswiecenia jednej diody
  jednaDioda = sredniaFoto/3; 
  // kazdy fotorezystor ma "swoje" 2 diody plus jedna "wspolna"
  // wiec beda trzy przedzialy i w zaleznosci... 

  int roznicaOdczytow = fotoLewy - fotoPrawy; // ...od roznicy odczytow z fotorezystorow...

  // ...obliczymy numer diody do zapalenia
  int ktoraDioda = roznicaOdczytow / jednaDioda;

  if (ktoraDioda == 0) 
    digitalWrite(4, HIGH); // srodkowa dioda
    
  if (ktoraDioda == 1)
    digitalWrite(5, HIGH); // pierwsza w lewo od srodkowej
    
  if (ktoraDioda > 1)
    digitalWrite(6, HIGH); // skrajna lewa
    
  if (ktoraDioda == -1)
    digitalWrite(3, HIGH); // pierwsza w prawo od srodkowej
    
  if (ktoraDioda < -1)
    digitalWrite(2, HIGH); // skrajna prawa
}

foto.thumb.JPG.554b031ed2b2824f190a6d112866eb6d.JPG

Czy w ogóle mój tok myślenia jest opdowiedni?

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

@badbit fajnie że kombinujesz z różnicą sygnałów, idziesz w dobrą stronę. Choć nie do końca rozumiem po co ta średnia, chyba lepiej działać na staych wartościach (progach), bo nie jestem pewny czy możesz teraz ustalić przybliżoną odległość (czy jest coś blisko/daleko).

Możesz spróbować obliczyć dla każdej diody odległość (cos jak odległość 2 punktów na płaszczyźnie i na tej podstawie dla każdej diody wyznaczyć świecenie (a nawet jasność jak dasz PWM). Możesz też pozbyć się warunków jak zapakujesz dane w tablice - o tym możesz poczytać w sieci, albo przeszukać komentarze pod tym wątkiem 😉 

Edytowano przez Gieneq
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@Gieneq  Dzięki za odpowiedź. Chciałem, żeby nie było " na sztywno";  żeby max wartość była obliczana w zależności od naświetlenia. Muszę sprawdzić, bo to faktycznie może bez sensu.

Udostępnij ten post


Link to post
Share on other sites

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