Public Documentation
  • Introduction
  • Getting started
    • Introduction
    • 1. Welcome Page
    • 2. Introduction (Beginner's Guide)
  • Portal Tools
    • Blocko
      • Ůvod do blocka
      • Flip-flop
      • REST-API bloček
    • Grid
      • Úvod do GRID
      • Základní Tlačítko (základy GRID)
      • vylepšený Přepínač (stylování a pokročilé možnosti GRID)
      • text generátor button (messeage type, two elements one widget)
      • graf (pokročilé funkce GRID)
      • Slider (User class v GRIDu)
      • Styly a jejich použití
  • Cloud
    • Cloud
    • Instancies
    • Rest-Api
  • General
    • What we plan
  • Hardware a programování
    • Úvod
      • Nahrání prvního programu
    • Konektivita
      • Specifikace zdroje internetu
      • GSM
      • 6LowPAN
      • Komunikace s portálem
      • Přepínání mezi servery
    • Hardware
      • Základní jednotky
        • IODAG3E
          • Rozhraní a periférie
          • Konektor X a Y
          • Napájení
          • Připojení zdroje k VBAT
          • Paměti
          • Technické specifikace
          • Schémata
        • IODAG3L
      • Rozšiřující moduly
        • GSM shield
        • LED shield
        • Relay shield
        • RFID shield
        • Ultrasonic shield
        • Meteo shield
        • Movement shield
        • PIR shield
        • RGB Displej shield
        • Serial shield
      • Ostatní
        • DevKitG3
          • Schéma
        • TK3G
          • Schéma
        • ZPPG3
          • Schéma
        • WEXP
    • Programování HW
      • Architektura FW
        • Aktualizace FW
        • Autobackup
      • Struktura programu
      • Byzance API
        • Vstupy a výstupy do Portálu
        • Callback Busy
        • Odložený restart
        • Callbacky připojení
        • Uživatelská makra
      • MBED API
        • Vstupy a výstupy
        • Komunikační rozhraní
        • Časování
        • RTOS
      • Knihovny
        • DHT
        • DS1820
        • Dali
        • EdgeStruct
        • I2CWrapper
        • Knock
        • MFRC522
        • MFRC522::MIFARE_Key
        • MPU9150
        • ms5637
        • OneWire
        • PCA9536
        • RGB_matrix
        • RollerDrive
        • SHT21
        • ST7565
        • Servo
        • TCA6424A
        • TLC59116
        • TripleSevenSeg
        • MFRC522::Uid
        • WS2812
        • WakeUp
      • Offline programování
        • Vlastní IDE
        • Upload kódu z GUI
        • Upload kódu z konzole
        • Upload kódu Drag&drop
    • Tutoriály
      • Datum a čas (RTC)
      • Komunikace po sériové lince (UART) s PC
        • Konfigurace sériové linky v PC
        • Programování sériové linky
      • Základní tutoriály
        • Digital Read
        • Analog Read/Write
        • PWM Fade
        • Timer/Ticker
        • State Change Detection
        • Ovládání LED modulu
        • BusOut
        • HC-SR04 Senzor
      • Pokročilé
    • Správa a diagnostika
      • Zdroj restartu
      • LED modul
      • Identifikace zařízení
      • Monitoring parametrů
      • Vytížení zařízení
      • Webové rozhraní
        • Základní přehled
        • Správce firmware
        • Vlákna
        • Definované vstupy
        • Konfigurace MQTT
        • Nastavení
      • Bootloader
        • Režimy bootloaderu
        • Command mód
        • Další vlastnosti bootloaderu
      • Webová konzole
      • Konfigurace zařízení
        • Confighash
      • Omezení konfigurace
        • Konfigurace
        • Binárky
        • Omezení MQTT
        • Lowpan
    • Knowledge base
      • Náhodná čísla
      • Watchdog
      • Paměť RAM
Powered by GitBook
On this page
  • Použitý hardware
  • Schéma zapojení
  • Funkce
  • Code
  1. Hardware a programování
  2. Tutoriály
  3. Základní tutoriály

State Change Detection

PreviousTimer/TickerNextOvládání LED modulu

Last updated 6 years ago

Provedení změny (např. rozsvícení LED) je závislé na tom, kolikrát stisknete tlačítko. Musíte vědět, kdy tlačítko změní stav z vypnuto na zapnuto a napočítat, kolikrát se tato změna stavu stane. Toto se nazývá detekce změny stavu. V tomto tutoriálu se dozvíme, jak kontrolovat změnu stavu, zasíláním zprávy sériovému monitoru s příslušnými informacemi. Např. napočítáme čtyři stavové změny pro zapnutí LED na desce.

Použitý hardware

  • IODA

  • tlačítko

  • LED

  • 10kΩ rezistor

  • kabely

  • nepájivé kontaktní pole

Schéma zapojení

Funkce

Stisknutím tlačítka, nebo přepínače se propojí dva body v obvodu. Když je tlačítko rozepnuto (není stisknuto), nedojde k žádnému spojení mezi oběma kontakty tlačítka, takže kontakt je připojen k uzemnění (pomocí pull-down) a čte jako LOW nebo 0. Když je tlačítko sepnuto (stisknuto), vytváří spojení mezi oběma kontakty, připojuje pin na 3.3 voltů tak, aby kontakt četl jako HIGH, nebo 1. V samotném programu se počítá kolikrát tlačítko bylo stisknuto a hodnoty se přičítají do proměnné buttonPushCounter pokud je tato proměnná dělitelná 4 rozsvítí se LED.

Code

#include "byzance.h"   // Include libraries for IODA
Serial pc(SERIAL_TX, SERIAL_RX);   // Defines the comunication interface if the serial line , SPI, CAN is needen in the program.
int buttonPushCounter = 0;   // counter for the number of button presse
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button
DigitalOut led(LED_RED);   // Set the digital out on pin X01
DigitalIn button(X01);   // Set the digital in on pinX00

void init(){   // The init routine runs only once when you press reset.
  pc.baud(115200);   // Set baud rate.
  Byzance::led_module(false);

}
void loop(){
  pc.printf("\n button: %d",button.read());   // Reads the button value and prints it.
  button.read();   // Read the button value.
  buttonState=button;   // Set the buttonState value from button
  if (buttonState != lastButtonState) {
      // if the state has changed, increment the counter
      if (buttonState == true) {
        // if the current state is true then the button went from off to on:
        buttonPushCounter++;
        pc.printf("\n on");   // Prints "on" on serial monitor.
        pc.printf("\n number of button pushes: ");   // Prints "number of button pushes:" on serial montor.
        pc.printf("\n %d",buttonPushCounter);   // Read buttonPushCounter value and prints it.
      } else {
        // if the current state is false then the button went from on to off:
        pc.printf("\n off");
      }
    }
    Thread::wait(50);
   lastButtonState = buttonState;   // Set the value from ButtonState to lastButtonState.
    // turns on the LED every four button pushes by checking the modulo of the
    // button push counter. the modulo function gives you the remainder of the
    // division of two numbers:
    if (buttonPushCounter % 4 == 0) {
      led = true;
    } else {
      led = false;
    }


}

#include "byzance.h"
Serial pc(SERIAL_TX, SERIAL_RX);   // Defines the comunication interface if the serial line , SPI, CAN is needen in the program.
int buttonPushCounter = 0;   // counter for the number of button presse
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button
DigitalOut led(LED_RED);   // Set the digital out on pin X01
DigitalIn button(X01);   // Set the digital in on pinX00

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

}

V hlavní části programu loop() načítáme hodnotu tlačítka a vypisujeme jí na seriový monitor. Hodnotu tlačítka také zapisujeme do proměnné buttonState.

pc.printf("\n button: %d",button.read());   // Reads the button value and prints it.
  button.read();   // Read the button value.
  buttonState=button;   // Set the buttonState value from button

V další části loop() počítáme kolikrát bylo tlačítko stisknuto. Také každé stisknutí vypisuje na seriový monitor.

if (buttonState != lastButtonState) {
      // if the state has changed, increment the counter
      if (buttonState == true) {
        // if the current state is true then the button went from off to on:
        buttonPushCounter++;
        pc.printf("\n on");   // Prints "on" on serial monitor.
        pc.printf("\n number of button pushes: ");   // Prints "number of button pushes:" on serial montor.
        pc.printf("\n %d",buttonPushCounter);   // Read buttonPushCounter value and prints it.
      } else {
        // if the current state is false then the button went from on to off:
        pc.printf("\n off");
      }
    }
    Thread::wait(50);
   lastButtonState = buttonState;   // Set the value from ButtonState to lastButtonState.
    // turns on the LED every four button pushes by checking the modulo of the
    // button push counter. the modulo function gives you the remainder of the
    // division of two numbers:

Pokud je počet stisknutí dělitelný 4 LED se rozsvítí.

    if (buttonPushCounter % 4 == 0) {
      led = true;
    } else {
      led = false;
    }

V hlavičce programu je nutné importovat knihovny a . pomocí

Poté nasleduje několik konstruktorů definující objekty , proměnné a objekty

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.Zde vypneme a inicializujeme rychlost sériové linky.

Byzance Hardware API
Mbed API
led modul
sériové linky
digitálního vstupu a výstupu