Archive for the ‘C++’ Category

Machine learning for the maker community

Wednesday, April 27th, 2016


At Arduino Day, I talked about a project I and my collaborators have been working on to bring machine learning to the maker community. Machine learning is a technique for teaching software to recognize patterns using data, e.g. for recognizing spam emails or recommending related products. Our ESP (Example-based Sensor Predictions) software recognizes patterns in real-time sensor data, like gestures made with an accelerometer or sounds recorded by a microphone. The machine learning algorithms that power this pattern recognition are specified in Arduino-like code, while the recording and tuning of example sensor data is done in an interactive graphical interface. We’re working on building up a library of code examples for different applications so that Arduino users can easily apply machine learning to a broad range of problems.

The project is a part of my research at the University of California, Berkeley and is being done in collaboration with Ben Zhang, Audrey Leung, and my advisor Björn Hartmann. We’re building on the Gesture Recognition Toolkit (GRT) and openFrameworks. The software is still rough (and Mac only for now) but we’d welcome your feedback. Installations instructions are on our GitHub project page. Please report issues on GitHub. (more…)

A revisit to open frameworks

Saturday, May 5th, 2012

Remember this?

A good tutorial by Sparkfun will help us make the above display. Before we begin let us take a few questions on Open Frameworks.

Q> What is Open Frameworks?

openFrameworks is a very handy software library written in C++ that is written for the sole purpose of reducing the software development overhead faced by designers and artists that would like to create pieces that use various media (graphics, sound, video, electronics, etc.).

Q> Why Open Frameworks when there is Processing?

Because there are some things that oF is well suited for that Processing just can’t handle. oF is much better at creating projects that use a lot of 3D Graphics, computer vision libraries like OpenCV or projects that involve the real-time manipulation of video. Also, while Processing requires a Java backend, oF is simply a set of C++ libraries, meaning that developers comfortable with C++ will be right at home.

Q> Where can I find more data and examples on Open Frameworks?

You can start by reading this article.

Try it, it works!


A Wall of 250 Canon Cameras Flashing Their Lights In A Matrix

Wednesday, August 3rd, 2011

Japanese band Androp realized for it’s latest single “Bright Siren” a 250 Flash light-based interactive Matrix.

Japan musicians Androp built a backdrop of 250 Canon cameras and programmed all their flashes to fire off in a sort of digital stop-motion screen.

The “Making of” after the break.


FireFly 1.006 Announced, With Built-In Arduino Code Generator

Friday, July 8th, 2011

We have previously talked about FireFly, a set of software tools dedicated to bridging the gap between Grasshopper (a free plug-in for Rhino), the Arduino micro-controller, the internet and beyond. Now it comes with its 1.006 new features like the Arduino Code Generator, Upload to I/O Board, UDP and OSC Listeners and Transmitters, XML Search, and State Detection.

The Arduino Code Generator attempts to convert any Grasshopper definition into Arduino compatible code (C++) on the fly.  It works by detecting components that are ‘upstream’ from the Uno/Mega Write component.  The Code Generator checks the component ID against a library of custom C++ functions which then get added to the code if there is a match. The code can be simultaneously saved as a .pde (Arduino Sketch) file to be opened in the Arduino IDE.

In addition, there is also a new Upload to I/O Board component which allows you to upload any sketch (could be from the Code Generator or any other sketch) directly to your Arduino board from within the Grasshopper environment. A lot of stuff happens behind the scenes with this component.  Essentially it creates a dynamic MakeFile and calls a shell application to convert the .pde file into a .cpp (C++) file and then into .hex code (machine readable code) to be uploaded to the microcontroller. Note: WinAVR is required to be installed on your machine in order to properly upload sketches to your board.  You can download the latest version here.

via [lifearchitects]

David C. en Barcamp Castellon

Saturday, April 16th, 2011

Para aquellos que aún están en duda de si asistir a la Barcamp Castellón el último fin de semana de Abril. Tengo el placer de anunciar que los organizadores han tenido a bien invitarme y … no he podido resistirme a la tentación de acercarme a la Comunidad x 2 (la Comunidad Valenciana y la Comunidad de Arduino).

La Barcamp se organiza como parte de la iParty 12, que son las Jornadas para la difusión del software libre en Castellón.

Un año más vuelve la iParty, posiblemente la fiesta del software libre más añeja de España. Esta edición, ya van doce, se celebrará los días 28, 29 y 30 de abril y 1 de mayo de 2011 en el pabellón polideportivo de la Universitat Jaume I. Por supuesto, estáis todos invitados.

Como parte del evento, el jueves 28 de Abril habrá un taller de introducción a Arduino de tres horas de duración. Yo estaré presente el sábado 30 y el domingo 31. Voy a traer mi problema del mes en el bolsillo: bootloaders de siguiente generación. Si alguien viene sobrado de vitamina C++, nos sentamos juntos un rato y nos damos una dosis 🙂

Para que la organización esté al tanto de cuantos vamos a ser, es conveniente visitar la web de Jottit donde apuntarse. Para los que sea la primera vez que la usan, arriba a la derecha hay un link para registrarse … el password empieza por “ard” y termina por “uino”, todo en minusculas.

Para preguntas a la organización, se puede seguir el foro aquí.

Ah! y muchas gracias a Jose Manuel Escuder Martinez por el esfuerzo de preparar el evento, choca los 5!


choca los cinco

(cc) 2011 High is Five, D. Cuartielles



Samsa II, The Hexapod

Tuesday, March 29th, 2011

[pabloxid] shared an Hexapod project on the forum based on an Arduino MEGA 1280 and 18 Dynamixel AX-12 motors:

SAMSA is based on the Wiring board, with an ATmega128 microcontroller, and SAMSA II on the Arduino Mega, with an ATmega1280. Both are pretty similar, tough the ATmega1280 has 8 KB SRAM, twice the ATmega128. For SAMSA II the Arduino IDE was not used. The software was written directly in C++, using some libraries from both Arduino and Wiring.

SAMSA II has also two additional microcontrollers. One is an old Arduino Mini (ATmega168) located in the head, tasked with handling the sensors. The other is an ATmega8 and is integrated in the display. The firmware in the display was replaced with another one, freeing the main microcontroller from handling the display pixel by pixel, storing the frame buffer, etc.

The head’s microcontroller is responsible for sampling, filtering and processing sensor’s data. The data from the Sharp distance sensor and the lateral IR sensors are combined in a single “super smart distance sensor”. This microcontroller also decodes the data coming from the 38 KHz IR receiver, used for the Remote Control.

These two additional microcontrollers further reduce the load on the main microcontroller, allowing for more sophisticated behaviours.