Wednesday, July 27, 2011

Controlando múltiplos botões com somente uma porta analógica do Arduino

As vezes quando precisamos controlar um grupo de botões isso pode tomar a maior parte das portas digitais e limitar a capacidade do dispositivo. Nesses casos em que não temos portas digitais suficientes, uma boa solução é utilizar uma porta analógica para gerenciar uma série de botões e resistores.

Controlling multiple buttons with only one Arduino's analog port

Sometimes when we need to handle a set of buttons it may take most part of digital ports and limit the device capabilities. In these cases that we don't have enough available digital ports, a good solution is to use an analog port to handle a series of buttons and resistors.

Sunday, June 5, 2011

Controlando o Arduino com .Net

A última versão da ebl-arduino (r52) trás para os usuários do Arduino uma forma fácil de trocar comandos e dados entre PC e Arduino usando .Net, sendo também fácil de ser portado para outras linguagens e transportes (TCP e assim por diante).

Controlling Arduino with .Net

The lastest ebl-arduino release (r52) brings to Arduino's users an easy way to exchange comands and data between PC and Arduino using .Net, being also easy to port to another languages and transports (TCP and so on).

Wednesday, March 2, 2011

Arduino Volt-Ammeter - Final Part - Printed circuit board

After all job of building the prototype and making the sketch work, it's the time to build the circuit. It's not the objective to explain in detail how to make printed circuit boards, but only a superficial explanation about it, besides, of course, to present the project changes to make it works out of Arduino board.

Arduino Volt-Ammeter - Part 1 - Breadboard

I was looking for a real device project to get out from "blinking leds" of Arduino's tutorials and build a device that could be useful in some way. I always thought confuse to have to use two voltmeters, besides the excess of wires around, I already burnt almost all current scales from my voltmeters, to measure current and voltage simultaneously.

Sunday, February 27, 2011

ReadWriteLock in C++ for Windows using Mutex and Event

As well as Java has its ReentrantReadWriteLock, C# has its own ReaderWriterLock. What about a class that implements the concurrency control for read and write operations in C++ for Windows.

Friday, February 25, 2011

STL Allocator with low-fragmentation heap

The STL provides a series of data structure, like std::list or std::vector, known as containers. These containers are capable to change their sizes during application run-time, for that it uses dynamic allocators, or simply allocators. The STL already provides a standard allocator for general use, however it's also possible to write your own allocator to be used with containers. The disadvantage of using the standard allocator is because they uses new/delete, the same as malloc/free, which has performance implications that could not be ignored.

Thursday, February 24, 2011

Memory management in Windows applications

Contrary to what a lot of people thinks, an application written in C/C++ does not necessarily have to be faster than one made in Java or C#, because these platforms, since they were already designed to be *slower*, usually already has built-in the best methods for most commons application tasks. Among these methods, one of the most important to highlight is the memory management through heap space.

Monday, February 7, 2011

Event-Based Library for Arduino

After I worked in my first Arduino programs, maybe because I worked for a good time with languages like Java and C#, I have found that is a job a little outdated. Tasks like to handle push of buttons or turn a LED on smoothly through PWM, although of being easy to understand, require a reasonable volume of code to become consistent, especially when is necessary that various components work simultaneously.

Event-Based Library - Biblioteca de eventos para Arduino

Depois de feito meus primeiros programas para o Arduino, talvez por ter trabalhado durante um tempo em linguagens como Java e C#, tenho achado a sua programação um pouco antiquada. Tarefas como gerenciar apertos de botões ou fazer um LED acender suavimente atrávés de PWM, apesar de serem simples de se compreender, requer um volume razoável de código para ficarem consistentes, ainda mais quando é necessário que vários componentes funcionem simultâneamente.

Monday, January 24, 2011

ReadWriteLock em C++ no Windows com Mutex e Event

Assim como o Java possui o ReentrantReadWriteLock, o C# possui ReaderWriterLock. Que tal então uma classe que implementa o controle de concorrência para leitura e escrita em C++ nas aplicações Windows.

Monday, January 17, 2011

Volt-Amperímetro com Arduino - Parte Final: Circuito impresso

Depois de todo o trabalho construindo o protótipo e fazendo o código funcionar, chegou a hora de construir o circuito. Não é o objetivo explicar detalhadamente como fazer circuitos impressos, mas somente uma passada superficial sobre o assunto, além, é claro, apresentar as modificações no projeto para que ele funcione fora da placa do Arduino.

Monday, January 10, 2011

Volt-Amperímetro com Arduino - Parte 1: Protoboard

Estava procurando algum projeto de um dispositivo real para sair das "blinking leds" dos tutoriais de Arduino e montar um dispositivo que fosse útil de alguma forma. Sempre achei confuso ter que colocar dois voltímetros, além do excesso de fios espalhados, inclusive ja queimei a maioria das escalas de corrente dos meus voltímetros, ao medir corrente e voltagem simultâneamente. Por isso me interessei por um projeto de voltímetro e amperímetro digital, além de ser o companheiro ideal para fontes reguláveis caseiras de testes em bancada.

Tuesday, January 4, 2011

STL Allocator com low-fragmentation heap

O STL provê uma série de estruturas de dados, como o std::list ou std::vector, normalmente chamados de containers. Esses containers possuem a capacidade de mudar de tamanho durante a execução do aplicativo, para isso ele se utiliza dos alocadores dinamicos, ou simplesmente allocators. O STL ja provê os alocadores padrão para uso geral, porém também é possível desenvolver um alocador para ser usado com os containers. A desvantagem dos alocadores padrão é que se utilizam diretamente de new/delete, assim como malloc/free, o que acarreta implicações no desempenho que não devem ser ignoradas.

Saturday, January 1, 2011

Gerenciamento de memória em aplicações Windows

Ao contrário do que muitos pensam, um aplicativo feito em C/C++ não tem obrigatoriamente que ser mais rápido que outro feito em Java ou C#, pois essas plataformas, por já serem concebidas para serem mais *lentas*, normalmente já trazem embutidos os melhores métodos para a maioria das tarefas comuns dos aplicativos. Entre esses métodos, um dos mais importantes a destacar é o gerenciamento de memória através de heap space.