CryptoEscudo

CryptoEscudoNos últimos tempos tem havido um zum-zum muito grande a volta das crypto-moedas, fala-se muito sobretudo acerca do BitCoin.

Soube na semana da passada da existência de um projecto chamado CryptoEscudo, basicamente alguém se lembrou de criar a crypto-moeda portuguesa com fé que esta pode ser a solução para os problemas do nosso pais.

Recomendo vivamente a visita ao site do CryptoEscudo pois é extremamente interessante a ideia. Eu próprio já alinhei no esquema, e recentemente fiz a uma pré-release de um pequeno programa para tornar a tarefa de “mining” um pouco mais simples a todos os utilizadores

Podem encontrar o código e os binários aqui: https://github.com/killercode/CryptoEscudoMinerTools/

E já agora podem fazer os vossos donativos em CESC, aqui: http://geek-press.com/donations.html

Jogo de Damas Open Source

Olá a todos!

No passado mês estive a desenvolver um pequeno jogo de damas em C++ para a Unidade Curricular de Programação Por Objectos da Universidade Aberta.
Achei que era um projecto interessante para avançar e fazer um jogo de damas completo.

Para já apenas permite Jogador Vs Jogador, mas gostava de no futuro adicionar melhoramento nos algoritmos de detecção de jogadas obrigatórias (o que foi usado agora serve para desenrascar mas precisa mesmo de melhorias), adicionar capacidade de jogo em rede com um chat, Jogador Vs AI e um substancial melhoramento no interface gráfico!
A quem esteja curioso com o projecto pode consultar a source e os binarios em https://github.com/killercode/damas

Sintam-se a vontade para colaborar e/ou comentar :)

checkers

Arduino + WebCam = Volumetria

Um dos projectos que tenho trabalhado ocasionalmente nos ultimos meses foi arranjar maneira de medir volumes com material “low-cost”!

Pensei no desafio e comecei a meter mãos ao trabalho e consegui resultados surpreendentes a usar um webcam comum e um arduino com um sensor.

Para começar vamos falar do hardware:

– Arduino + Sharp Distance Sensor GP2Y0A02 (20-150cm)  : Devo dizer que pensei que era o mais simples mas falhei redondamente.

Para conseguir resultados aceitaveis (cerca de 1 centimetro de desvio em distancias perto do limite do sensor) tive de seguir um conjunto de procedimentos manhosos isto porque o sensor tende a retornar montes de ruido e assim não temos resultados precisos.

Primeiro faço 10 leituras do valor e determino a media, seguindamente determinamos o limite superior e inferior de valores a partir desta primeira media, exluimos os valores que ultrapassam este valor capturamos mais uns 10 valores e fazemos a media de tudo.

Devo dizer que isto resultou muito bem

 

float GetAverage(float * _values, uint8_t size)
{
	float avg = 0;
	for(int i = 0; i< size; i++)
	{
		avg += _values[i];
	}
	avg = avg / size;

	float setMax = avg * 1.15;
	float setMin = avg * 0.85;
	float precisionAvg;
	int counter = 0;
	for(int i = 0; i < size; i++)
	{
		if((setMin < _values[i]) && (_values[i] < setMax))
		{
			precisionAvg += _values[i];
			counter++;
		}
	}
	return precisionAvg / counter;
}

Para conseguir volumetria usei a biblioteca Emgu e uns quantos filtros para conseguir encontrar os contornos do objecto com base numa mascara. Ou seja temos de ter uma mascara do ambiente de fundo para poder fazer a exclusão do que ja la estava e ficarmos apenas com o novo objecto na imagem. Usamos uns quantos truques de image processing, uns calculos trigonometricos e voilá aqui esta o resultado