Cesar Gimenes

Programação, Eletrônica, Golang, UNIX e muito mais papo nerd

go usando time e canais

Pacote time Eu sou o primeiro a torcer o nariz para o pacote time, principalmente pela maneira como a formatação de datas é feita, mas um recurso muito interessante é poder criar um canal que retorna a cada X tempo e assim podemos executar ações periódicas. Veja como isso é feito Primeiro criamos um canal que vai retornar a cada X tempo, no caso do exemplo 300 milissegundos.

Go plugins

Plugins A possibilidade de criar plugins é um novo recurso da versão 1.8 que por enquanto funciona apenas no Linux. Um plugin basicamente é uma biblioteca externa que pode ser carregada dinamicamente, o uso é bem simples. O mesmo recurso deve ser incluso no macOS na versão 1.9 e provavelmente em outras plataformas. Por enquanto para todos poderem experimentar sugerimos subir um container Docker. O comando abaixo abre um container Docker com uma maquina virtual pronta para executar a versão 1.

GitHub a rede social do programador

Talk is cheap. Show me the code. - Linus Torvalds em uma mensagem para a linux-kernel mailing list em 25/08/2000 Lone Gunman Durante a maior parte da minha carreira eu trabalhei sozinho ou em equipes muito pequenas, é fácil manter controle de versão quando se esta sozinho, qualquer sistema vai funcionar desde que ele não entre na sua frente e seja minimamente eficiente, eu programo desde os anos 90 e já passei por tudo, desde copiar todo o projeto para um outro diretório, ou zipar o projeto com a data da mudança, CVS, SVN, e agora Git.

NASA OpenMCT com Intel Edison

Já criei vários sistemas de telemetria e de vez em quando era necessário escrever um dashboard para exibir os dados, eu estava planejando criar um dashboard mais flexível e configurável que eu pudesse usar em vários projetos quando esbarrei com o OpenMCT. O OpenMCT é um frontend para qualquer coisa capaz de gerar dados de telemetria, assim eu posso me focar no backend que para mim é a parte mais divertida e a única coisa que preciso fazer é criar um “telemetry provider” para o OpenMCT, que basicamente significa responder corretamente a algumas chamadas de websocket.

Assembly, assembler e linguagem de maquina

#Assembly, assembler e linguagem de maquina. São coisas diferentes! São três coisas diferentes mas relacionadas e as pessoas vivem confundindo, então vamos a explicação. Assembly É uma linguagem de programação composta por mnemônicos simples. Ela reflete um para um as instruções da plataforma que estiver sendo usada. Escrevendo código Assembly você sabe exatamente o que o processador esta fazendo e tem acesso a recursos que podem não estar disponíveis em linguagens de mais alto nível… falando nisso podemos chamar Assembly de uma linguagem de baixo nível, nesse caso não é ruim, quer dizer apenas mais perto do hardware.

Zero Configuration Networking

Zeroconf Eu estou sempre criando e carregando dispositivos diversos na minha rede com varias finalidades diferentes. Por dispositivos diversos quero dizer que eles podem mesmo ser qualquer coisa, pode ser por exemplo um SBC para fazer alguma coisa relacionada a IoT, pode ser uma maquina virtual para testar algum software que não quero testar nos sistemas principais, e pode facilmente ser uma VM descartável que vou subir só para fazer um teste rápido e descartar em seguida.

Instalando ffmpeg no Intel Edison

Os tutoriais que encontrei para instalar o ffmpeg no Edison envolvem adicionar repositórios e instalar usando opkg update e install. Isso é ruim porque muitas vezes esses repositórios estão desatualizados e a instalação muitas vezes quebra com outras coisas que estão funcionando. Mas tem uma forma muito mais simples de instalar qualquer coisa no Edison, é só explorar o fato do processador ser um 80x86 puro sangue, então é só encontrar a versão compilada estaticamente para i386 e seu software vai funcionar out of box.

Go transformando imagem PNG em código C

Já tem algum tempo eu estava desenvolvendo um projeto usando a DISCO-F746NG, uma placa bem interessante e com muitos recursos. Um dos recursos mais legais é o LCD-TFT com 4.3” e multi-touch. E a programação da placa é feita usando mbed que é um ambiente bastante bom apesar de eu torcer o nariz para ele. Apesar de muitas qualidades essa placa não tem recursos muito avançados para tratamento de imagem via hardware, para desenhar você simplesmente escreve na memória de vídeo… no bom e velho estilo dos anos 90 gravando pixel a pixel :D

Go com Intel Edison Lendo valor analógico

Este é mais um post da serie falando sobre Go com Intel Edison, e estou usando bastante do que já falei em outros posts como tratamento de sinais por exemplo. Para gerar o sinal analógico vamos usar um potenciômetro, ou melhor RAS, Rotary Angle Sensor :D. O estilo do código é muito parecido com o que fizemos para gerar sinais PWM, mas agora a operação é de leitura. Lendo valores analógicos com MRAA.

Go com Intel Edison controlando saída PWM

PWM ou Pulse Width Modulation tem uma gama enorme de aplicações, usamos para controlar servos, definir o brilho de LEDs, potência de motores, regular tenção, efeitos sonoros e por ai vai. PWD com MRAA Como de costume poderíamos ter chamado diretamente as funções da MRAA, mas daí o código fica muito mais confuso, uma pratica melhor é dividir o programa em múltiplos arquivos. Primeiro o cabeçalho pwm.h que vai ser usado para incluir as funções C no código Go.