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 to post
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 to post
Share on other sites
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 to post
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 to post
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 to post
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 to post
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 to post
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 to post
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.