Close

Jak po stisku tlačítka zapsat a odentrovat hodnotu do serial boxu.

Úvodní stránka Fórum Hardware Arduino Jak po stisku tlačítka zapsat a odentrovat hodnotu do serial boxu.

  • Toto téma obsahuje celkem 5 odpovědí. Do diskuze (4 diskutující) se naposledy zapojil uživatel posjirka a poslední změna proběhla před 8 roky.
Aktuálně je na stránce zobrazeno 6 příspěvků - 1. až 6. (celkem z 6)
  • Autor
    Příspěvky
  • #7573
    feropero
    Účastník

    Je tady borec který mě poradí s problémem:
    Mám tlačítko po stisku se chci dopracovat že se do serial boxu
    zapíše a od entruje 1x hodnota X100

    void loop() {

    if (digitalRead(11) == LOW)

    {

    // pokud zapíšu X100 přímo do boxu a dám send je to v pořádku
    //toto mě nefunguje
    Serial.write(‚X100‘);
    Serial.write(‚\r‘);
    Serial.write(‚\n‘);
    }

    #7575
    Zbyšek Voda
    Správce

    Dobrý den,
    moc nerozumím vašemu popisu.
    Jestli chcete odeslat „X100“, za kterým následuje nový řádek, tak stačí napsat:
    Serial.println("X100");
    Když to dáte dohromady s tím tlačítkem, v nejjednodušším případě vypadá kód takto:

    if (digitalRead(11) == LOW){
        Serial.println("X100");
    }
    #7579
    feropero
    Účastník

    mám toto
    void process_line() {
    char cmd = Serial.read();
    case ‚X‘: pocetPulsu =Serial.parseInt();

    po zadání např X200 a enter do serial boxu jedu a funguji

    ale pokud chci na zadání použít tlačítko
    a dám navrhované
    if (digitalRead(11) == LOW){
    Serial.println(„X100“);
    }
    nebo
    Serial.print(„X“);Serial.println(„100“);//coz by melo byt stejné
    nebo
    Serial.print(„X“);Serial.print(„100“);Serial.print(‚\r‘);Serial.print(‚\n‘);

    nic se neděje jen se to vypíše do serial okna

    #7581
    BlindP
    Účastník

    Taky to nechápu, Serial.print(„X100“) odešle DO PC X100. Pro odeslání Z PC do arduina použij ten serial monitor.
    Nepotřebuješ spíš tohle?

    
    if (digitalRead(11) == LOW){
    pocetPulsu = 100;
    }
    

    BP

    #7598
    feropero
    Účastník

    Nikdo mě nechápe

    potřebuji zadat hodnotu X100 třemi způsoby
    1. z processing
    2. ručně z řádku serial box
    3. fyzickým tlačítkem buttonem na pinu

    Stav je že
    loop jede ve smyčce čeká na hodnotu Serial.read() X100 která přijde z processingu nebo zadaná ručně z serial box ( řádek a odeslaná tlačítkem pošli(send)

    potud mě to funguje kdy se z procesingu nebo z ručního zadání X100 provede se provede akce 100x

    ale pokud chci na zadání použít fyzické tlačítko button
    a dám navrhované
    if (digitalRead(11) == LOW){
    Serial.println(„X100“);
    tak se X100 jen zobrazí ve výpisu text v počítači na serial
    navic se zobrazí v serial okně několikrát výpis X100
    ale to je pravděpodobně tlačítkové bounce to budu řešit později

    Při fungujícím zadání z processingu nebo z okna boxu se X100 v serial okně nezobrazuje a ani to není potřeba
    protože mě nejde o zobrazování ale o akci udělat 100x akci.

    #7689
    posjirka
    Účastník

    dej sem prosím celý kod a hlavně ZAPOJENÍ. Připadá mi, že :
    – buď používáš víc než 1 Arduino na 1 seriové lince (to by teoreticky ani nemělo jít)
    – nebo se snažíš poslat si příkaz sám sobě uvnitř arduina.

    Předpokládejme, že je to ten druhý případ. V tu chvíli bych oddělil vykonání příkazu od čtení seriové linky. Vy tvoř funkci “ void provedAkci(int pocet) “ … a tu zavolej z funkce “ process_line() “ s počtem opakování.
    Druhý přístup uděláš po stisku tlačítka = zavoláš tu samou funkcis tím samým počtem akci.
    Pro to několikanásobné „stiknutí talčítka“ stačí použít podmínku aby po stisku reagoval na další stisk třeba až po 0,5s (pomocí funkce millis() si zjistíš aktuální strojový čas a po stisku s ho zapíšeš do proměnné. Tu pak porovnáš s aktuálním millis() a pokud bude rozdíl větší než třeba 500 tak reaguj znovu.

    Zkus si ten tvuj prvotní dotaz přečíst třeba po měsící. Myslím že ani ty sám sebe nepochopíš. Prostě člověk v 1 chvíli má myšlenku a zdá se mu, že na světě jen přeci jen ta jedna jediná varianta a nic jiného, tak proč se zdržovat nějákým složitým popisem. To nění kritika. každý z nás takto začínal a po čase pochopil, že je to prostě jinak a je třeba dávat ÚPLNÉ a CELISTVÉ informace. Jinak se mezi ssebou lidi zbytečně štěkají a k řešní to nepřispěje.

Aktuálně je na stránce zobrazeno 6 příspěvků - 1. až 6. (celkem z 6)
  • Pro reakci na toto téma se musíte přihlásit.