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 9 roky a 4 měsíci.
-
AutorPříspěvky
-
6.7.2016 v 11:28 #7573
feropero
ÚčastníkJe 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 X100void 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‘);
}7.7.2016 v 22:09 #7575Zbyšek Voda
ÚčastníkDobrý 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"); }8.7.2016 v 22:49 #7579feropero
Účastníkmá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
9.7.2016 v 0:15 #7581BlindP
ÚčastníkTaky 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
11.7.2016 v 12:02 #7598feropero
ÚčastníkNikdo 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 pinuStav 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ějiPř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.11.7.2016 v 23:26 #7689posjirka
Účastníkdej 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.
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.
