NOSSAS REDES SOCIAIS -

BeagleBone – A IDE Cloud9 - Parte I (MIC114)

Este é o segundo artigo da série onde falaremos sobre a IDE (Integrated Development Environment ou Ambiente Integrado de Desenvolvimento) da Cloud9 para programação em JavaScript e execução on-time do software. A Cloud9 é uma empresa que fabrica IDE via browser com recursos de programação para execução e depuração via browser. O site da Cloud9 é http://www.c9.io  A seguir, veremos alguns exemplos simples de operação da IDE através de scripts iniciais para melhor assimilação do conteúdo. 

 

Colocando a Mão na Massa

Primeiramente com a BeagleBone ligada na porta USB client acesse o seguinte endereço no seu navegador: http://192.168.7.2:3000

Segundo as recomendações do site http://beagleboard.org  você precisa executar os seguintes passos:

1. Fechar qualquer arquivo que estiver aberto.

2. Clicar no simbolo “+” no canto superior esquerdo para abrir um arquivo. Repare que ele abrirá um arquivo do tipo Untitled(active).

3. Colocar o seguinte código no corpo de editor.

var b = require('bonescript');

 

var state = b.LOW;

 

b.pinMode("USR0", b.OUTPUT);

b.pinMode("USR1", b.OUTPUT);

b.pinMode("USR2", b.OUTPUT);

b.pinMode("USR3", b.OUTPUT);

setInterval(toggle, 1000);

 

function toggle() {

if(state == b.LOW) state = b.HIGH;

else state = b.LOW;

b.digitalWrite("USR3", state);

}

 

4. Salve o Arquivo clicando no ícone de salvar conforme imagem abaixo:

 


 

 

 

5. Execute o código clicando no em “Run” ou debug conforme a imagem abaixo:

 


 

 

 

 

6. Observe o LED “USR3” piscar.

7. Clique em stop para párar a execução conforme a imagem abaixo:

 


 

 

 

8. Pronto!

 

Esses são os passos iniciais necessários para que você entenda como funciona a IDE do cloud9. Dentro da documentação inicial eu ressalto os seguinte item que é importante:

Se o leitor desejar colocar o script para que o mesmo seja executado ao inicializar o sistema é necessário copiar o script para a par /var/lib/cloud9/autorun/ 

 

Funcionalidades da Biblioteca BoneScript – Parte I

A biblioteca BoneScritpt é feita em nodejs. O BoneScript foi feito de forma a ser de simples programação no estilo Arduino-Like porém para programação em javascript. A IDE da Cloud9 tem o objetivo de facilitar o uso de javascript na BeagleBone, tornando mais simples a operação.

Aqui nós faremos um descritivo das funções para que você possa utilizar as funções da biblioteca BoneScript sem muitas complicações. Por opção, seguirei a sequencia que está disponível no site:

http://beagleboard.org/Support/BoneScript/ 

Algumas outras funções foram atualizadas no repositório github do BoneScript. Acesse o link abaixo para ver o conjunto de funções adicionadas na API:

https://github.com/jadonk/bonescript 

A versão do bonescript que iremos documentar é 0.2.5

 

getPlataform([callback])

Argumentos

callback: retorno da função

 

Valores Retornados

name: nome da placa.

serialNumber: numero serial da placa.

version: versão da placa

bonescript: versão do bonescript

 

callback(x) (Callback – O termo callback, ou traduzido “chamada de retorno”, é uma chamada assíncrona, ou seja, que não necessita rodar em uma ordem temporal cronológica, executada imediatamente ao término de uma função. O termo callback será mantido porque em português já se utiliza esse termo para javascript há tempos. )

x: o mesmo do valor retornado.

 

Implementação de referência

// instancia o objeto bonescript em b

var b = require('bonescript');

 

b.getPlataform(printData);

 

function printData(x){

console.log( 'nome = ' + x.name);

console.log( 'versão = '+ x.version);

console.log( 'numero de série = '+ x.serialNumber);

console.log( 'versão bonescript = '+ s.bonescript);

}

 

pinMode(pin, direction, [mux],[pullup],[slew],[callback]) - (Apesar dessa função estar marcada como depreciada na documentação no site http://beagleboard.org ela consta na documentação do github do desenvolvedor.)

Argumentos

pin : pino na BeagleBone.

direction: direção do pino na placa. INPUT, INPUT_PULLUP (Opção não implementada segundo a documentação.) ou OUTPUT.

mux: indice para o mux (Opção não implementada segundo a documentação. )

pullup: 'pullup', 'pulldown' ou 'disable' (Opção não implementada segundo a documentação. )

slew(variação): 'fast' (rápido) ou 'slow' (lento) – (O termo “Slew” indica a variação de um estado para outro (0 ou 1) – Nota didática)

callback – retorno da função

 

Valores retornados

true – se verdadeiro

false – se falso

 

callback(x)

x.value – retorna o valor

x.err – status da mensagem de erro

 

Implementação de Referência

var b = require('bonescript')

b.pinMode(“P8_13”, b.OUTPUT, 7, 'pullup', 'fast', printStatus);

function printStatus(x){

console.log('value=' + x.value);

console.log('err=' + x.err);

}

 

getPinMode(pin,[callback])

Pega os dados do pino

 

Argumentos

pin: pino do qual se deseja pegar o status

callback: retorno da função.

 

Valores de Retorno

mux: índice do modo mux.

Options: array com nome dos modos (Modos: configuração que cada pino pode exercer. )

slew: 'fast' ou 'slow' (mesmo da função anterior)

rx: 'enabled' (habilitado) ou 'disabled' (desabilitado)

pullup: 'disabled', 'pullup' ou 'pulldown'

pin: string identificadora do pino.

name: nome do pino

err: status da mensagem de erro

 

callback(x)

x: valor de retorno

 

Implementação de Referência

var b = require('bonescript');

b.getPinMode("P8_13", printPinMux);

function printPinMux(x) {

console.log('mux = ' + x.mux);

console.log('pullup = ' + x.pullup);

console.log('variação = ' + x.slew);

if(x.options)

{

console.log('opções = ' + x.options.join(','));

}

console.log('pino = ' + x.pin);

console.log('nome = ' + x.name);

console.log('erro = ' + x.err);

}

digitalWrite(pin, value, [callback])

Configura um pino digital para nível HIGH(alto, 1) ou LOW(0, baixo).

Nota da Documentação: Os quatro LEDs USRx(leds que já vem na placa) podem ser habilitados para operar como pinos digitais, dando ao leitor a possibilidade de testar a saída do software.

 

Figura 1 – Nota dos Leds USRx
Figura 1 – Nota dos Leds USRx

 

Argumentos

pin: identificador do pino.

value: valor de saída: HIGH ou LOW.

callback: função de retorno.

 

Valores de Retorno

true se obtiver sucesso

false se falhar

 

callback(x)

x.err : status da mensagem de erro.

 

Implementação de Referência (O exemplo acima possui o callback implementado, porém ele nunca será executado por que esse pino não retornará erro. O leitor poderá colocar um pino diferente na linha 3 e testar o retorno. )

var b = require('bonescript');

b.pinMode('USR0', b.OUTPUT);

b.digitalWrite('USR0', b.HIGH, retorno);

function retorno(x){

console.log('erro'+x.err);

}

 

digitalRead(pin, [callback])

Lê o status de um pino digital.

 

Argumentos

pin: identificador do pino.

callback: função de retorno.

 

Valor de Retorno

HIGH para níveis lógicos 1, alto

LOW para níveis lógicos 0, baixo.

 

callback(x)

x.value: valor retornado

x.err: status da mensagem de erro (se houver)

 

Implementação de Referência

var b = require('bonescript');

b.pinMode('P8_19', b.INPUT);

b.digitalRead('P8_19', printStatus);

function printStatus(x) {

console.log('x.value = ' + x.value);

console.log('x.err = ' + x.err);

}

 

shiftOut(dataPin, clockPin, bitOrder, val, [callback])

Desloca um byte para um pino de Entrada/Saída digital sincronizando com outro pino de Entrada/Saída digital.

 

Argumentos

dataPin: pino para dados seriais.

clockPin: pino para o clock.

bitOrder: ordem do bit do byte. b.MSBFIRST ou b.LSBFIRST

val: valor do byte a ser escrito

callback: função de retorno

 

Valor de Retorno

true se obtiver sucesso

false em caso de falha.

 

callback(x)

x.err : status do erro da mensagem (se houver)

 

Implementação de Referência

//

// Demonstrate shiftOut with a 7 segment display

//

 

// read in the BoneScript library

var b = require('bonescript');

 

// define used pins

var sData = "P9_18";

var sClock = "P9_22";

var sLatch = "P9_17";

var sClear = "P9_15";

 

// define other global variables

var digit = 0;

var segments = [ 0xC0, 0xF9, 0xA4, 0xB0, 0x99,

0x92, 0x82, 0xF8, 0x80, 0x90 ];

 

// configure pins as outputs

b.pinMode(sData, b.OUTPUT);

b.pinMode(sClock, b.OUTPUT);

b.pinMode(sLatch, b.OUTPUT);

b.pinMode(sClear, b.OUTPUT);

 

// initial states

b.digitalWrite(sData, b.LOW);

b.digitalWrite(sClock, b.LOW);

b.digitalWrite(sLatch, b.LOW);

b.digitalWrite(sClear, b.HIGH);

 

// call function to start updating the LED shift register

doUpdate();

 

// function to update the LED shift register

function doUpdate() {

// shift out the character LED pattern

b.shiftOut(sData, sClock, b.MSBFIRST,

segments[digit], doLatch);

 

// update the digit for next time

digit = (digit + 1) % 10;

}

 

function doLatch() {

// latch in the value

b.digitalWrite(sLatch, b.HIGH, doLatchLow);

}

 

function doLatchLow() {

b.digitalWrite(sLatch, b.LOW, scheduleUpdate);

}

 

function scheduleUpdate() {

// update again in another 25ms

setTimeout(doUpdate, 25);

}

 

Essa implementação de referência foi retirada da documentação. Essa função é utilizada com um hardware adicional para visualização em um display de 7 segmentos.

 

 

 

 mic0114 0005

 

Piscando um LED na BeagleBone

Para finalizar essa introdução, iremos piscar um LED interno da BeagleBone explicando passo a passo o programa para que o leitor possa entender o que ocorre.

 

Código de Referência

// Exemplo 01 – Piscando um led na beagle bone

var b = require('bonescript');

var led = “USR0”; // led que irá piscar

var estado = 0;

 

// configurando o pino como saída

b.pinMode(led, b.OUTPUT);

 

piscar = function(){

b.digitalWrite(led,estado);

console.log('o estado é: '+estado); // escrever o estado no console a cada 1 segundo

if (estado==0)

{

estado = 1;

}else{

estado = 0;

}

}

 

tempo = setInterval(piscar, 1000); // tempo em milisegundos

 

Não se esqueça de salvar o código antes de executar! Caso contrário não funcionará.

 

Conclusão

Nesta primeira parte vimos o modo de operação básico da IDE Cloud9, algumas funções e por fim um exemplo de como piscar um led interno da placa.

 

BUSCAR DATASHEET

 


N° do componente 

(Como usar este quadro de busca)

 

Opinião

Novembro chegando (OP197)

Novembro é o mês de encerramento das aulas e com isso, diferentemente do que muitos pensam, as atividades estudantis não terminam. Alguns curtirão suas férias, mas outros ficam para exames e mais ainda, precisam terminar seus TCCs.

Leia mais...

Político
é mais fácil encontrar um mulher resignada a envelhecer do que um político resignado a se retirar da cena.(Es más fácil encontrar a uma mujer resignada a envejecer que a um político resignado a retirarse de La escena.)
Amado Niervo (1870 1919) - Pensando - Ver mais frases


Instituto Newton C Braga
Entre em contato - Como Anunciar - Políticas do Site

Apoio Social
Lions Clube de Guarulhos Sul SOS Mater Amabilis
Advertise in Brazil
If your business is Electronics, components or devices, this site is the correct place to insert your advertisement (see more)