Este artigo é uma continuação do antigo anterior (MIC114) onde continuaremos a apresentar as funcionalidades do bonescript versão 0.2.5. Marcos de Lima Carlos.
Funções – Parte II
analogWrite(pin, value, [freq], [callback])
Saída PWM no pino selecionado.
PWM – pulse width modulation ou modulação por largura de pulso. Alguns exemplos abaixo:
O nome analogWrite (tradução literal: escrita analógica) vem de outras bibliotecas que reconhecem que o PWM ligado a um filtro passa-baixa produz um nível de tensão analógica.
Um exemplo de filtro passa baixa
Os pinos válidos são destacados em amarelo com “PWM” nos seus nomes (exceção aos timers)
Argumentos
pin: pino identificador.
value: duty cicle do PWM (percentual de variação entre os estados 0 e 1) com valores entre 0 e 1. (A documentação não diz o quanto de resolução tem a variação. Aqui foi testado até com duas casas decimais. )
freq: frequência do PWM (padrão 2KHz) (Novamente a documentação não especifica a variação de frequência. )
callback: função de retorno.
Valores de Retorno
true caso tenha sucesso.
false caso falhe.
callback(x)
x.err : status da mensagem de erro.
Implementação de Referência
var b = require('bonescript')
b.analogWrite('P9_14', 0.7, 2000, callback);
function callback(x){
console.log(JSON.stringify(x));
}
analogRead(pin, [callback])
Lê a tensão elétrica em um pino de entrada analógica.
Argumentos
pin: pino identificador.
callback: função de retorno.
Valores de Retorno
Numero entre 0 e 1 onde 0 é 0V e 1 é a tensão máxima de entrada (1.8V)
callback(x)
x.value: valor de retorno
x.err: mensagem de erro
implementação de referência
var b = require('bonescript');
b.analogRead('P9_36', printStatus);
function printStatus(x) {
console.log('x.value = ' + x.value);
console.log('x.err = ' + x.err);
}
attachInterrupt(pin, handler, mode, [callback])
Detecta uma mudança numa entrada digital.
Argumentos
pin: pino identificador.
Handler (manipulador): true (verdade) – sempre executa a função de callback, string: avalia a interrupção, passando um objeto com valor (chamada de função) com o estado do pino de entrada e chama a função de callback se for avaliado como verdade (true).
MANIPULADOR - Aqui refere-se ao que acontecerá quando o evento for detectado.
mode: RISISNG(subindo), FALLING(descendo) ou CHANGE(mudança);
callback: função de retorno.
Valor de Retorno
true caso tenha sucesso.
false caso falhe.
callback(x)
x.pin: pino que gerou o evento.
x.output: resultado do tratamento da função (handler)
x.value: estado de entrada
detachInterrupt(pin, [callback])
Remove um manipulador de interrupções.
Argumentos
pin: pino identificador.
callback: função de retorno.
Valores de Retorno
true caso tenha sucesso.
false caso falhe.
callback(x)
x.err : status da mensagem de erro (se houver)
Implementação de referência
var b = require('bonescript');
var inputPin = 'P8_19';
b.pinMode(inputPin, b.INPUT);
b.attachInterrupt(inputPin, true, b.CHANGE, interruptCallback);
setTimeout(detach, 1000);
function interruptCallback(x) {
console.log(JSON.stringify(x));
}
function detach() {
b.detachInterrupt(inputPin);
console.log('Interrupt detached');
}
readTextFile(filename, [callback])
Lê o conteúdo de um arquivo ASCII (texto).
Argumentos
filename: caminho completo do arquivo.
callback: função de retorno.
Valor de Retorno
Retorna o conteúdo do arquivo em uma string.
callback(x)
x.data: conteúdo do arquivo.
x.err: mensagem de erro
Implementação de Referência
var b = require('bonescript');
b.readTextFile('/etc/dogtag', printStatus);
function printStatus(x) {
console.log('x.data = ' + x.data);
console.log('x.err = ' + x.err);
}
writeTextFile(filename, data, [callback])
Escreve um conteúdo de ASCII(texto) num arquivo.
Argumentos
filename: caminho completo do arquivo
data: ASCII string a ser escrita.
callback: função de retorno
callback(x)
x.err: mensagem de erro(se houver)
Implementação de Referência
var b = require('bonescript');
var file = '/sys/class/leds/beaglebone:green:usr3/trigger';
b.writeTextFile(file, 'heartbeat', readStatus);
function readStatus(x) {
console.log(JSON.stringify(x));
b.readTextFile(file, printStatus);
}
function printStatus(x) {
console.log(JSON.stringify(x));
}
Conclusão
Há ainda mais funções na versão 0.25 do bonescript, porém o que está aqui é o que consta no site beaglebone.org. Mais a frente ensinaremos como atualizar a beaglebone e fazer os testes necessários para o funcionamento ideal.
Anexos
Primeiramente falamos sobre os GPIO's isso foi comentado no primeiro artigo da série porém deve ficar claro que as imagens abaixo são referência para todos os programas. A figura 2 está identificando as I/Os digitais
Além disso, há nas placas recursos extras dos quais abordaremos mais tarde como, SPI (Serial peripheral interface - https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus ), I2C (Inter-Integrated Circuit - https://pt.wikipedia.org/wiki/I%C2%B2C ), µART (UART – Universal Assyncronous receiver/transmitter - https://pt.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter ), PRU (Programable real-time unit - http://beagleboard.org/pru ) e entradas analógicas.
Conclusão
Com esse artigo terminamos as parte de funções da biblioteca bonescript. Esses mesmos recursos podem ser acessados através do site http://beaglebone.org