Skocz do zawartości

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?

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.

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

  • 3 tygodnie później...

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!

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 🙂

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!

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
  • 1 miesiąc później...
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.

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