Převede napětí na pinu analogového vstupu v rozmezí 0 - 3.3V do digitální podoby a interpretujep ho číslem na škále 0-4095. Rozlišení převodníku je 2.44 mV.
Příklad každou sekundu čte analogovou úroveň z pinu X00;
#include"byzance.h"#defineSUPPLY_VOLTAGE3.3Serialpc(SERIAL_TX,SERIAL_RX); //USBSerial pc(0x1f00, 0x2012, 0x0001, false); //AnalogInain(X00);voidloop(){pc.printf("voltage on pin X00 is %d V\n",ain.read()*SUPPLY_VOLTAGE); Thread::wait(1000);}
Funkce AnalogOut umožňuje definovat analogový výstup, který pomocí digitáně analogového převodníku dokáže na základě vstupní hodnoty této funkce měnit hodnotu napětí na výstupním pinu v rozsahu 0 - 3.3V . Velikost napětí na výstupu je škálováno zápisem v rozsahu 0 - 1, kdy 1 je maximální napětí 3.3V.
Příklad střídavě nastavuje na pinu Y23 analogovou úroveň 3.3 V a 1.625 V.
#include"byzance.h"Serialpc(SERIAL_TX,SERIAL_RX); //USBSerial pc(0x1f00, 0x2012, 0x0001, false); //AnalogOutaout(Y23);voidloop(){ aout =1.0; //setting supply voltage on pin Y23 Thread::wait(200); aout =0.5; //setting half of supply voltage on pin Y23 Thread::wait(1000);}
Příklad vyhodnocuje logickou úroveň tlačítka USR a výsledek vypíše do sérové linky.
#include"byzance.h"Serialpc(SERIAL_TX,SERIAL_RX); //USBSerial pc(0x1f00, 0x2012, 0x0001, false); //DigitalIndin(USR);voidloop(){if(din.read() ==1)pc.printf("button is pressed\n");elsepc.printf("button is not pressed\n"); Thread::wait(1000);}
Třída umožňuje nastavit na digitálním výstupu logickou úroveň.
Příklad demonstruje blikání modrou LED. V každém otočení smyčky je hodnota na logickém vstupu negována.
#include"byzance.h"DigitalOutdout(LED_BLUE);voidinit(){ Byzance::led_module(false); //disable LED module for Byzance}voidloop(){ dout =!dout; //read the value, invert it and store again Thread::wait(1000);}
Obousměrný digitální pin, kombinace digitálního vstupu a digitálního výstupu.
DigitalInOutdiout(pin_name);// configure as outputdiout.output();// set HIGHdiout =1;// configure as inputdiout.input();// read value of pinpc.printf("diout value = %d \n",diout.read());
Funkcí BusIn lze vést libovolný počet digitálních vstupů jako bus, což umožňuje přečíst digitální hodnotu těchto vstupů jako jedno číslo.
Příklad demonstruje využití vstupní sběrnice. Každých 0,5 sekundy je stav sběrnice přečten a vypsán na obrazovku. Stav sběrnice lze měnit pomocí tlačítka USR a pinů X01 a X02.
#include"byzance.h"Serialpc(SERIAL_TX,SERIAL_RX); //USBSerial pc(0x1f00, 0x2012, 0x0001, false); //BusInswitches(X01,X02,USR); //bus is defined X01, X02 and USR buttonvoidinit(){switches.mode(PullDown); //set all pins as pull-down}voidloop(){switch(switches.read()){ //switch according to bus state case0x0:pc.printf("X01-DOWN X02-DOWNW USR-not-pressed\n"); break;case0x1:pc.printf("X01-UP X02-DOWN USR-not-pressed\n"); break;case0x2:pc.printf("X01-DOWN X02-UP USR-not-pressed\n"); break;case0x3:pc.printf("X01-UP X02-UP USR-not-pressed\n"); break;case0x4:pc.printf("X01-DOWN X02-DOWN USR-pressed\n"); break;case0x5:pc.printf("X01-UP X02-DOWN USR-pressed\n"); break;case0x6:pc.printf("X01-DOWN X02-UP USR-pressed\n"); break;case0x7:pc.printf("X01-UP X02-UP USR-pressed\n"); break; } Thread::wait(500);}
Třída BusOut definuje z libovolného počtu digitálních výstupů výstupní sběrnici. Na sběrnici je pak možné jednoduše zapisovat.
#include"byzance.h"Serialpc(SERIAL_TX,SERIAL_RX); //USBSerial pc(0x1f00, 0x2012, 0x0001, false); //BusOutleds(LED_BLUE,LED_RED,LED_GREEN); //bus is defined by all RGB LEDvoidinit(){ Byzance::led_module(false); //disable LED module for Byzance}voidloop(){for(uint8_t i =0; i <8; i++){ //for each combination on bus leds = i; //write color on bus Thread::wait(1000); }}
PortIn má stejnou funkci jako BusIn, je o dost rychlejší ale méně flexibilnější
Serialpc(SERIAL_TX,SERIAL_RX); //USBSerial pc(0x1f00, 0x2012, 0x0001, false); //// Argumentem konstruktoru je číslo portu a číslem určené piny tohoto portuPortInp2(port2,0x0000003F); // pin 21 - 26 voidinit(){ //Nastavení módu portup2.mode(PullNone); }voidloop(){int pins =p.read();if(pins){ //alespoň jeden vstup z portu má hodnotu jednapc.printf("At least one switch is turned on"); }}
Třída PwmOut umožňuje na pinu vytvářet pulzně šířkovou modulaci, regulovat její periodu a šířku jejich pulsů.
Příklad ukazuje využití pulsně šířkové modulace pro ovládání modré LED diody. Efekt dýchání je dosažen postupným zvyšováním střídy a následným opětovným snižováním v rozsahu 0 až 1.
#include"byzance.h"PwmOutled(LED_BLUE); //bus is defined by all RGB LEDvoidinit(){ Byzance::led_module(false); //disable LED module for Byzanceled.period_ms(1); //set frequency to 1kHz (period 1ms)}voidloop(){ //breathe infloat value=0.0;while(value <1.0){ led = value; //write duty cycle value +=0.01; //increase value Thread::wait(10); //wait for 10ms } //breathe out value =1.0;while(value >0.0){ led = value; //write duty cycle value -=0.01; //decrease value Thread::wait(10); //wait for 10ms }}
Třída InterruptIn umožňuje uživateli okamžitě reagovat na změnu logické úrovně libovolného pinu (na náběžnou i sestupnou hranu) a na základě této změny zavolat libovolnou funkci.
Příklad demonstruje využití přerušení od vzestupné i sestupné hrany. Na vzestupnou hranu je rozsvícena modrá LED (stisk tlačítka) a na sestupnou hranu je LED opět zhasnuta. Tím je docíleno toho, že dioda svítí po celou dobu stisku tlačítka.
#include"byzance.h"Serialpc(SERIAL_TX,SERIAL_RX); //USBSerial pc(0x1f00, 0x2012, 0x0001, false); //InterruptInbutton(USR); //InterruptIn on USR buttonDigitalOutled(LED_BLUE); //blue LED control is invertedvoidpushed_button(){ led = LED_MODULE_ON; //on pushed button, turn on blue LED}voidreleased_button(){ led = LED_MODULE_OFF; //on released button, turn off blue LED}voidinit(){ Byzance::led_module(false); //disable LED module for Byzancebutton.rise(&pushed_button); //attach pusehed_button function on rising edgebutton.fall(&released_button); //attach released_button function on falling edge}voidloop(){ //we dont have to do nothing here, everything is done automaticallypc.printf("im running!\n"); Thread::wait(1000);}