Digital Read

Tento příklad ukazuje, jak monitorovat stav stisknutí tlačítka přes sériovou linku mezi IODA a PC.

Použitý hardware

  • IODAG3E

  • tlačítko

  • kabely

  • 10kΩ rezistor

  • nepájivé kontaktní pole

Schéma zapojení

Tlačítko SW1 připojíme mezi pin X01 a zem GND, dále připojíme pullup rezistor R1 o nominální hodnotě 1K mezi pin X01 a pin 3V3.

Funkce

Ve stavu, kdy je tlačítko rozepnuto, z pinu 3V3 do pinu X01 neprotéká teoreticky žádný proud (prakticky velmi malý proud). To z toho důvodu, že pin X01 je nastaven jako Digital Input a má velmi vysoký vstupní odpor. V takovém případě je na napětí na pinu X01 rovno napětí 3V3. V případě, že stiskneme tlačítko, začne protékat proud z pinu 3V3 přes rezistor R1 do země (pinu GND). V takovém případě je na X01 stejný potenciál jako na pinu GND, tedy napětí rovno 0V.

Code

#include "byzance.h"  // Include Byzance Hardware API and Mbed APU 

/**DigitalReadSerial
* This example shows you how to monitor the state of a switch
* by establishing serial communication between
* IODA and your computer over USB.
*/

Serial pc(SERIAL_TX, SERIAL_RX);
DigitalIn button(X01);   // Set the digital input pin.

void init(){   // The init routine runs only once on the begin of the program
  pc.baud(115200);   // Set baud rate.
}

void loop(){   // the loop routine runs forever :

  if(button.read() == 0){
    pc.printf("button is pushed \n"); 
  }else{
    pc.printf("button is not pushed \n");
  }

  Thread::wait(100);   // Wait for 100ms.
}

V hlavičce programu je nutné importovat knihovny Byzance Hardware API a Mbed API. pomocí

#include "byzance.h"

Poté nasledují dva konstruktory definující objekt sériové linky a objekt digitálního vstupu.

Serial pc(SERIAL_TX, SERIAL_RX); 
DigitalIn button(X01);   // Set the digital input pin.

Při každém spuštění programu se nejprve provede funkce init(), která primárně slouží k inicializaci všech objektů a proměnných.V tomto případě pouze inicializujeme rychlost komunikace sériové linky.

void init(){   // The init routine runs only once on the begin of the program
  pc.baud(115200);   // Set baud rate.
}

V samotném programu, tedy v nekonečné smyčce loop(), poté kontrolujeme stav stisknutí tlačítka pomocí funkce read() a na základě toho rozhodujeme, kterou zprávu vypsat do sériové linky.

if(button.read() == 0){
    pc.printf("button is pushed \n"); 
  }else{
    pc.printf("button is not pushed \n");
  }

V poslední části kódu je vlákno programu uspáno na 100 milisekund.

 Thread::wait(100);   // Wait for 100ms.

Last updated