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:

Circuito PWM 

Controle de Motor PWM 

 

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

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

 

Figura – 2 – 65 possíveis entradas e saídas. Na primeira parte do texto quando falamos de PWMs e timers foi colocada uma figura (1) para ilustrar os 8 PWMs e os 4 timers que a placa possui. Repare que os mesmos pinos podem ter inúmeras funções.
Figura – 2 – 65 possíveis entradas e saídas. Na primeira parte do texto quando falamos de PWMs e timers foi colocada uma figura (1) para ilustrar os 8 PWMs e os 4 timers que a placa possui. Repare que os mesmos pinos podem ter inúmeras funções.

 

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