Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 8 cze 2025, o 20:48


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
    Autor Wiadomość
    PostNapisane: 10 lis 2017, o 22:11 
    Offline
    Nowy

    Dołączył(a): 04 maja 2014
    Posty: 7
    Pomógł: 0

    Dzień dobry.
    Chciałem sterowac przez serial monitor kilkoma silnikami. Np wpisuje w serial monitor silnik1 200 i ustawia mi arduino silnik pierwszy z pwm 200 jak napiszę silnik2 100 to ustawi silnik 2 na PWM100. A jak wpiszę Silnik1 lewo to pojedzie w lewo.

    Teraz Dane odczytuje przez
    if(Serial.available() > 0)
    dane = Serial.readStringUntil('\n');

    Jak mogę spowodować że Arduino znajdzie spację i podzieli mi słowa na
    Dane1=pierwszy wyraz
    Dane2=drugi wyraz po spacji

    Wtedy mógłbym porównywac w programie słowa i wpisywac dane w odpowiednie miejsce programu. I tylko tego podziału nie umiem zrobić.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 lis 2017, o 21:30 
    Offline
    Nowy

    Dołączył(a): 04 maja 2014
    Posty: 7
    Pomógł: 0

    Czyli jak rozwiązałem problem w pętli programu użyłem takiego oto skryptu
    if (Serial.available() > 0) //odczyt bufora i wrzucenie danych do tablicy
    {
    char c = (char)Serial.read();
    if (c == '\n') {
    cmd[cmdIndex] = 0;
    exeCmd();
    cmdIndex = 0;
    } else {
    cmd[cmdIndex] = c;
    if (cmdIndex < 99) cmdIndex++;
    }
    }

    oraz poza pętlą główną programu
    void exeCmd() {

    if (cmd[0] == 's') // prędkosć
    { dane = atof(cmd + 2);
    v= int(dane);
    }

    Jest pewien problem funkcja działą poprawnie ale jeśli Dane są zapisane jako string, a ja bymchciał mieć tą wartosć jako int. Wysyłam s 200 i wychwytuje mi prędkosć 200 ale nie moge liczby wrzucić w zmienną int musi być string żeby na serial monitorze arduino mi wysłało to co wysłałem do niego. Teraz pytanie jak mogę przekonwertować zapisaną liczbę 200 jako string na int.

    Podane v=int (dane) nie działa



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 lis 2017, o 22:29 
    Offline
    Nowy

    Dołączył(a): 04 maja 2014
    Posty: 7
    Pomógł: 0

    Dzięki wielki za pomoc. Naprawdę mega mi pomogłeś. Z tamtych pierwszych skryptów nie skożystałem bo jakoś nie dokońca mogłem je ogarnąć a ten mój wydaje mi się mega prostu do obróbki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO