pinMode()

Page

Stránky / Arduino / C++ pre Arduino / Funkcie API /

Funkcia slúži na nastavenie konkrétneho pinu, aby sa správal ako vstup alebo výstup. Arduino má (podľa verzie dosky) rozdielny počet pinov. Typické Arduino Uno má 14 digitálnych vstupov, ale v prípade potreby môžete využiť ako digitálne vstupy aj analógové piny.

Syntax

void pinMode(uint8_t pin, uint8_t mode);

Parametre

  • pin - Číslo pinu, ktorého mód chcete nastaviť.
  • mode - Mód je jedna z nasledujúcich hodnôt.
    • INPUT - Pin bude nastavený ako vstup.
    • OUTPUT - Pin bude nastavený ako výstup.
    • INPUT_PULLUP - Pin bude nastavený ako vstup a súčasne bude pripojený aj interný pull-up rezistor, ktorý bude držať nastavenú hodnotu VCC.

Návratová hodnota

  • void - Nevracia žiadnu hodnotu.

Príklady

Pre prvý príklad nemusíme siahať ďaleko. Najzákladnejší program Arduina Blink obsahuje dostatok kódu na ukážku použitia tejto funkcie. Vo funkcii setup sa nastavuje pin 13 ako výstupný. Prečo práve pin 13? Pretože skoro každé Arduino má na ňom pripojenú LED diódu a tak nie je potrebné nič ďalšie pripájať.

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

Druhý príklad ukazuje využitie módu INPUT_PULLUP na čítanie stavu tlačidla na pine 2 a zobrazenie stavu na pine 13. Logika pinu 2 je opačná. Hodnota HIGH je tam vtedy, keď je tlačidlo nestlačené. Pri jeho stlačení sa na ňom objaví hodnota LOW.

void setup() {
  //configure pin2 as an input and enable the internal pull-up resistor
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);
}

void loop() {
  //read the pushbutton value into a variable
  int sensorVal = digitalRead(2);

  if (sensorVal == HIGH) {
    digitalWrite(13, LOW);
  } else {
    digitalWrite(13, HIGH);
  }
}

14.06.2016


Menu