RP2350-Zero/GPIO

Zo stránky 3D liga wiki
Verzia z 11:21, 3. september 2026, ktorú vytvoril Sebastian (diskusia | príspevky) (Vytvorená stránka „=== Digitálny vstup/výstup === Toto je najzákladnejšia funkcia každého pinu – pin má iba dva možné stavy: * '''HIGH''' – napätie (na RP2350-Zero typicky 3,3 V) * '''LOW''' – 0 V Predtým, než pin použiješ, treba mu povedať, či bude vstup alebo výstup – na to slúži <code>pinMode()</code>: * <code>OUTPUT</code> – pin bude dávať napätie do danej súčiastky a bude ju ovládať (napr. LED) * <code>INPUT</code> alebo <code>INPUT_PULLUP</…“)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
Prejsť na navigáciu Prejsť na vyhľadávanie

Digitálny vstup/výstup

Toto je najzákladnejšia funkcia každého pinu – pin má iba dva možné stavy:

  • HIGH – napätie (na RP2350-Zero typicky 3,3 V)
  • LOW – 0 V

Predtým, než pin použiješ, treba mu povedať, či bude vstup alebo výstup – na to slúži pinMode():

  • OUTPUT – pin bude dávať napätie do danej súčiastky a bude ju ovládať (napr. LED)
  • INPUT alebo INPUT_PULLUP – pin bude prijímať napätie a čítať ho ako bity 0-0.8V -> logická 0, 2V-5V -> logická 1 (napr. tlačidlo)

Digitálny výstup – 3-farebný LED modul

Na zapnutie/vypnutie slúži digitalWrite(pin, HIGH) alebo digitalWrite(pin, LOW). LED modul má tri samostatné piny (červená, zelená, modrá), takže ich ovládame nezávisle – kombináciou zapnutých farieb vieš okrem R/G/B poskladať aj napr. žltú (R+G) alebo bielu (R+G+B):

const int PIN_LED_R = 10; // uprav podla realneho zapojenia
const int PIN_LED_G = 11;
const int PIN_LED_B = 12;

void setup() {
  pinMode(PIN_LED_R, OUTPUT);
  pinMode(PIN_LED_G, OUTPUT);
  pinMode(PIN_LED_B, OUTPUT);
}

void loop() {
  // cervena
  digitalWrite(PIN_LED_R, HIGH);
  digitalWrite(PIN_LED_G, LOW);
  digitalWrite(PIN_LED_B, LOW);
  delay(500);

  // zelena
  digitalWrite(PIN_LED_R, LOW);
  digitalWrite(PIN_LED_G, HIGH);
  digitalWrite(PIN_LED_B, LOW);
  delay(500);

  // modra
  digitalWrite(PIN_LED_R, LOW);
  digitalWrite(PIN_LED_G, LOW);
  digitalWrite(PIN_LED_B, HIGH);
  delay(500);

  // vsetko vypnute
  digitalWrite(PIN_LED_R, LOW);
  digitalWrite(PIN_LED_G, LOW);
  digitalWrite(PIN_LED_B, LOW);
  delay(500);
}

Poznámka: kód počíta s tým, že HIGH = zapnutá farba (tzv. common cathode zapojenie). Ak má tvoj modul spoločnú anódu (common anode), bude to presne naopak – LOW zapne, HIGH vypne.

Digitálny vstup – touch senzor

Tlačidlo alebo spínač funguje presne opačne – program z pinu číta pomocou digitalRead(). Problém je, že keď nie je stlačené, pin "visí vo vzduchu" a jeho hodnota by bola náhodná (tzv. floating pin). Preto sa väčšinou používa INPUT_PULLUP – RP2350 si interne pripojí pin cez odpor na HIGH, a spínač len skratuje pin na GND, keď je aktivovaný. Výsledok: neaktivované = HIGH, aktivované = LOW (teda "naopak", ako by si možno čakal).

Príklad na touch senzore (GPIO7):

const int PIN_TOUCH = 7;

void setup() {
  pinMode(PIN_TOUCH, INPUT_PULLUP);
  Serial.begin(115200);
}

void loop() {
  int stav = digitalRead(PIN_TOUCH);

  if (stav == LOW) {
    Serial.println("Senzor je aktivovany");
  } else {
    Serial.println("Senzor nie je aktivovany");
  }

  delay(200);
}

Poznámka: ak by si senzor zapojil bez INPUT_PULLUP (teda ako obyčajný INPUT) a bez vlastného rezistora, hodnoty by mohli "blikať" náhodne aj bez aktivácie – to je typický príznak floating pinu.