michal98 napisał(a):
Napięcie mierzysz za pomocą ADC ?
tak, tak je mierzę
Jeśli tak to wyślij wartość adc przez rf i zamień na napięcie dopiero w odbiorniku.
nie da rady, ten string nie chce się zamienić na float w odbiorniku,
poza tym po przesłaniu danych ADC na odbiorniku widnieją one nie w pełnym zakresie,
zaczynają się od około 100 do 999, wyżej nic nie widać a poniżej 100 wyświetlają się cyfry
i litery
------------------------ [ Dodano po: kilkunastu sekundach ]leonos2000 napisał(a):
Nie używałem tej funkcji, ale służy do tego funkcja atof(). Tu masz jak ją obsługiwać:
http://msdn.microsoft.com/pl-pl/library/hc25t012.aspxpróbowałem atof(), nie działa mi w arduino IDE
------------------------ [ Dodano po: 1 minucie ]kiclaw napisał(a):
Z tego co pamiętam to strtof, wyczaj działanie na
http://www.cplusplus.com/reference/cstdlib/strtof/strtof() też nie działa, też próbowałem
pomyślałem więc, żeby przesłać te dane z ADC w innej postaci, a więc podzielić kazdy wynik na 2,
wynik, który mnie interesuje jest napięciem z ADC więc analogRead()*(5.0/1023.0) i mam napięcie,
teraz wystarczy podzielić daną liczbę na 2 części, tą przed przecinkiem/kropką i dwucyfrową po,
mój pomiar nigdy nie będzie miał wyniku dwucyfrowego przed kropką, zresztę nie pozwala na to arduino
bo mierzy do 5.0, ale też nie mam takiej potrzeby, napięcie będę mierzył do 1.6-2.0V,
użyłem takiego rozwiązania żeby wyciągnąć dwie liczby z pomiaru napięcia
//************************to jest kod od strony transmitera
void loop(){
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
//*****************************tutaj jest wyciąganie 2 liczb z wyniku napięcia float
if(voltage <= 0.99){firstnumber = 0;}
else if(voltage >= 1.00){firstnumber = 1;}
delay(50);
if(firstnumber == 0){secondnumber = voltage*100;}
else if(firstnumber == 1){secondnumber = (voltage-1.00)*100;}
//*********************************a tutaj podstawianie ich do stringa
int napięcie;
int a = firstnumber;
String napięcieA = napięcie + a;
Serial.println (napięcie1);
int b = secondnumber;
String napięcieB = napięcie + b;
Serial.println(napięcieB);
String calosc = napięcieA + napięcieB;
//Serial.println(calosc);
calosc.toCharArray(Msg,(calosc.length()+1));
for (int i = 0; i <= calosc.length(); i++) {
Serial.print(Msg[i]);
vw_send((uint8_t *)Msg, strlen(Msg));
vw_wait_tx();
}
//********************************
kiedy wysyłam te 2 liczby (będące odzwierciedleniem mojego wyniku napięcia) są one odczytywane przez odbiornik
i drugie arduino, i odpowiadają pomiarowi napięcie, a więc jak napięcie jest 0.98 to wynik tych dwóch liczb mam
0 i 98 a jak wynik napięcie jest 1.23 to liczby są 1 i 23 czyli działa,
jednakże powstają dwa problemy,
jeden taki, że liczby widać, jednak są one otoczone przez jakieś dodatkowe 'ogonki', inne znaki bliżej lub dalej od wyniku, który mnie
interesuje, próbowałem to wyczyścić, ale jak to robię od strony odbiornika to nawet jak proszę o wyświetlenie
w Serial.print jednej zmiennej to i tak podaje cały ciąg, a jak czyszczę kod od nadajnika, to dostaję
jakieś dziwne nie odpowiadające pomiarowi cyfry na odbiorniku,
a ja chcę wyświetlić tylko te dwie liczby w Serial.print (jednocyfrową z przodu, potem kropkę i liczbę dwucyfrową po kropce)
any idea?