Skip to content

Čítanie tlačidiel

Martin Robomaze edited this page Jun 7, 2021 · 6 revisions

V tomto programe si vyskúšame čítať vstup z tlačidiel. Na konci článku je celý program.

Čítanie tlačidiel

Na čítanie tlačidiel si musíme najprv do programu načítať knižnicu robot/button.h

#include <robot/button.h>

Potom si vytvoríme objekt tlačidla.

Button tlacidlo1(buttonIndex);

Kde buttonIndex je číslo tlačidla. Hodnoty sú od 0 do 5.

Hodnotu tlačidla vieme zistiť funkciou isPressed(), ktorá nám vráti:

  • true ak je tlačidlo stlačené
  • false ak tlačidlo nieje stlačené
bool tlacidloStlacene = tlacidlo1.isPressed();

Komunikácia s počítačom

Šrobko vie komunikovať s počítačom pomocou sériového portu. Sériový port inicializujeme takto:

Serial.begin(rychlostPrenosu);

Rýchlosť prenosu je zvyčajne 9600.
Keď chceme niečo poslať počítaču, použijeme príkaz Serial.println()

Serial.println("sprava");

Podmienky

Na vyhodnotenie vstupu z tlačidlá budeme potrebovať podmeinky. Pomocou nich vieme programu povedať čo má robiť ak sa niečo stane.
Tu je jeden príklad podmienky

if (vyraz) {
  // Kod, ktory sa vykona ak je podmenka splnena.
}

Do podmienky píšeme logický výraz. Tu je niekoľko typov logických výrazov:

  • a == b a je rovné b
  • a < b a je menšie ako b
  • a <= b a je menšie alebo rovné b
  • a > b a je väčšie ako b
  • a >= b a je väčšie alebo rovné b
  • a != b a sa nerovná b

Ak chceme niečo vykonať pri nesplnení podmienky, použijeme if-else

if (vyraz) {
  // Ak podmienka plati.
} else {
  // Ak podmienka neplati.
}

Ak chceme mať viacero podmienok za sebou, môžme napísať:

if (vyraz1) {
  // Ak podmienka plati.
}
if (vyraz2) {
  // Ak podmienka plati.
}
if (vyraz3) {
  // Ak podmienka plati.
}
.
.
.

Ale efektívnejšie to je napísať pomocou else if:

if (vyraz1) {
  // Ak vyraz1 plati.
} else if (vyraz2) {
  // Ak vyraz1 neplati a vyraz2 plati.
} else if (vyraz3) {
  // Ak vyraz1 a vyraz2 neplati a vyraz3 plati.
} else {
  // Ak ziadna podmienka neplati.
}

Písanie programu

Najprv si načítame potrebné knižnice.

// Pridanie kniznic srobka.
#include <Arduino.h>
#include <robot/types.h>
#include <robot/motors.h>
#include <robot/button.h>

Potom si vytvoríme potrebné premenné.

HeadPosition position;
Motors motors;

Button b1(0);
Button b2(1);

Vo funkcií setup() si spustíme komunikáciu s počítačom.

// Program zbehne raz.
void setup() {
    Serial.begin(9600);
}

Vo funkcií loop() čítame vstup z tlačidlá a otáčame hlavou.

// Program sa opakuje.
void loop() {
    if (b1.isPressed()) {
        Serial.println("tlacidlo 1 je stlacene");

        position.headX = 90;
        motors.moveHead(position);
    } else if (b2.isPressed()) {
        Serial.println("tlacidlo 2 je stlacene");

        position.headX = -90;
        motors.moveHead(position);
    } else {
        position.headX = 0;
        motors.moveHead(position);
    }
}

Celý program

// Pridanie kniznic srobka.
#include <Arduino.h>
#include <robot/types.h>
#include <robot/motors.h>
#include <robot/button.h>

HeadPosition position;
Motors motors;

Button b1(0);
Button b2(1);

// Program zbehne raz.
void setup() {
    Serial.begin(9600);
}

// Program sa opakuje.
void loop() {
    if (b1.isPressed()) {
        Serial.println("tlacidlo 1 je stlacene");

        position.headX = 90;
        motors.moveHead(position);
    } else if (b2.isPressed()) {
        Serial.println("tlacidlo 2 je stlacene");

        position.headX = -90;
        motors.moveHead(position);
    } else {
        position.headX = 0;
        motors.moveHead(position);
    }
}

Clone this wiki locally