Skocz do zawartości
Komentator

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?

Udostępnij ten post


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.

Udostępnij ten post


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.

Udostępnij ten post


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

Udostępnij ten post


Link to post
Share on other sites

bocian, dzięki za sugestię, do następnej części dodam więcej informacji na ten temat 🙂

Udostępnij ten post


Link to post
Share on other sites

MateuszW, niedługo 😉

Udostępnij ten post


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!

Udostępnij ten post


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 🙂

Udostępnij ten post


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!

Udostępnij ten post


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

Udostępnij ten post


Link to post
Share on other sites

tomekk93, MateuszW, pamiętajcie Panowie, aby programy umieszczać w tagach 🙂

Udostępnij ten post


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.

Udostępnij ten post


Link to post
Share on other sites

To że pin niepodłączony do niczego ma napięcie to normalne, indukują się szumy, nic nie wpływa na potencjał, voilla.

  • Lubię! 1

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!

Gość
Napisz odpowiedź...

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