Skocz do zawartości

Kurs Arduino - #4 - Przetwornik ADC


Pomocna odpowiedź

Bardzo dobry tutorial 😉 Mam jednak parę pytań, bo nie wszystkie przykłady udało mi się wykonać:

Dlaczego przy fotorezystorze trzeba używać rezystora 1k? Co się stanie jeśli go nie użyję? Czy jeśli nie mam pod ręką rezystora 1k to muszę jakoś kombinować łączyć inne rezystory, czy może użycie innego (1,2k) da podobny efekt?

Link do komentarza
Share on other sites

Synergia, vernun, wszystkie kody, które działają na tym etapie są dobre. Grunt to zabawa i nauka na przykładach. Czas na dopracowywanie programów jeszcze przyjdzie.

Piotrek2525, dokładnie - chodzi o dzielnik napięcia, tak jak napisał MateuszW.

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

W jaki sposób zmniejszać / zwiększać dokładność wyświetlania napięcia po przecinku dla zmiennej float? Np. 1.5V, 1.56V, 1.567V.

Jeśli chcesz zwiększyć dokładność to lepiej użyć typu o podwójnej dokładności (double). Dla zaokrąglenia można użyć funkcji z biblioteki : round, ceil, floor, w zależności o co Ci konkretnie chodzi. W razie wątpliwości zawsze pomaga google

Link do komentarza
Share on other sites

Witam, mam taki problem, używając czujnika temperatury LM35, odczytuje jego wskazania i wyświetlam na "Monitorze szeregowym", lecz dane ukazują mi się w 3 linijkach (jak na obrazku):

Chciałbym aby wyświetlana informacja była w jednej linijce (kwestia estetyki):

kod:

int czujnik;

int tempPin = 1; //wy analogowe A1

 

void setup() {

Serial.begin(9600); //ustawienie pred transmisji danych a<>pc

}

void loop() {

czujnik = analogRead(tempPin);

float mV = ( czujnik/1024.0)*5000;

float celcjusz = mV/10;

 

Serial.println("temperatura pokoju wynosi: ");

Serial.println(celcjusz);

Serial.println("st. C");

delay(10000);

}

mianowicie, gdy próbuję zrobić tak jak przedstawiono to w kursie #3:

Serial.println("Witaj! " + odebraneDane + "!");

moja wersja:

Serial.println("temperatura pokoju wynosi: " + celcjusz + "st.C");

to wyrzuca mi błąd, że wartość we FLOAT nie jest prawidłowa. Czy tylko STRING da się tak wypisać? Jak temu zaradzić?

Z góry dziękuję za wszelkie wskazówki i pomoc!

Link do komentarza
Share on other sites

tomekk93,

Sprawdź ten artykuł, powinno pomóc.

Generalnie możesz wykonać rzutowanie (FloatToString()) albo coś takiego

Serial.print("temperatura pokoju wynosi: ");
Serial.print(celcjusz);
Serial.println(" st.C");

albo nawet:

String vKomunikat = "temperatura pokoju wynosi: "+celcjusz + " st.C";
Serial.println(vKomunikat);

znaczniki poprawione 🙂

Link do komentarza
Share on other sites

MateuszW dziękuję, do tego zagadnienia nie doszedłem, a widzę popełniłem spory błąd przez to. Wszystko działa tak jak chciałem 🙂

działa to jak powinno, po zabiegu wyglądającym w ten sposób:

Serial.print("temperatura pokoju wynosi: ");

Serial.print(celcjusz);

Serial.print(" st. C\n")

Pozdrawiam!

Link do komentarza
Share on other sites

tomekk93,

Nie ma sprawy ale pamiętaj w programowaniu istnieje wiele rozwiązań jednego problemu (jedne lepsze od innych), trzeba wybrać jakie Ci odpowiada 🙂

Pozdrawiam.

  • Lubię! 1
Link do komentarza
Share on other sites

int odczytanaWartosc = 0;//Odczytana wartość z ADC
float napiecie = 0;//Wartość przeliczona na napięcie w V

void setup() {
 Serial.begin(9600);//Uruchomienie komunikacji przez USART
}

void loop() {
 odczytanaWartosc = analogRead(A5);//Odczytujemy wartość napięcia
 napiecie = odczytanaWartosc * (4.5/1023.0); //Przeliczenie wartości na napięcie
 Serial.println(napiecie);//Wysyłamy zmierzone napięcie
 delay(200);//Czekamy, aby wygodniej odczytywać wyniki  
}

Użyłem tego kodu na moim mikrokontrolerze by widzieć jakie jest obecnie napięcie płynące z czujnika odległości sharp.

Użyłem do niego 3 baterie AA 1,5V

Kod mi coś nie działa prawidłowo. Wyświetla mi się napięcie 4,5 ale potem słabnie powoli do 0 i znowu rośnie mimo że nie macham nawet ręką nad nim. A gdy odłączam czujnik to wyskakuje mi że mam jakieś napięcie pod tym pinem mimo że nic nie jest podłączone.

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.