A biblioteca Pins fornece meios simples para trabalhar com pins AVR de entrada e saída digitais. O utilizador pode criar uma variável associada a um pin e fazer qualquer operação com essa mesma variável. Desta forma não é necessário lidar directamene com nomes de registos e indíces de bits como quando se programa acedendo directamente aos registos. Os portos e indíces dos pins têm de ser especifiados apenas uma vez de forma a tornar as alterações fáceis de implementar.
Configura um pin como saída. Parâmetros:
Configura um pin como entrada sem resistência “pull-up” ligada. Parâmetros:
Configura um pin como entrada com resistência “pull-up” ligada. Parâmetros:
Define o pin de saída para “high”. Parâmetros:
Define o pin de saída para “low”. Parâmetros:
Inverte o estado do pin de saída. Parâmetros:
Define o estado do pin de saída. Parâmetros:
Obtém o valor do pin. Parâmetros:
Lê o valor do pin através do filtro de debounce. A filtragem demora pelo menos 8 ms e pode demorar até 100 ms, dependendo do debouncing. se este não acaba, false é devolvido. A função utiliza delay. Parâmetros:
Exemplo de como obter e definir o valor de um pin. O valor do pin PC0 é invertido e copiado para o pin PC3.
#include <homelab/pin.h> pin output_pin = PIN(C, 3); pin input_pin = PIN(C, 0); int main(void) { bool value; // Configuring pin as an output pin pin_setup_output(output_pin); // Configuring pin as an input pin with pull-up pin_setup_input_with_pullup(input_pin); // Endless loop while (true) { // Getting an input pin value value = pin_get_value(input_pin); // Setting an output pin value pin_set_to(output_pin, !value); } }
led_on, led_off, button_read commands example
#include <homelab/pin.h> // Homelab buttons and LEDs are predefined in the library int main(void) { // Set LED pin as output pin_setup_output(led_green); // Set Button S1 pin as input pin_setup_input(S1); // Endless loop while (true) { // If button is pressed, turn on LED, if not pressed, turn LED off. if(button_read(S1) == true) led_on(led_green); else led_off(led_green); } }