Arduino

USB-Rubber Ducky scripts on Arduino/Leostick

The other day I was at Jaycar and saw that they are now selling small USB sticks that are arduino compatible. It is called the LeoStick and is made by Freetronics down in Melbourne. Seeing that it could pretend to be a USB HID device (ie keyboard/mouse) I wondered if I could do the sort of thing that the USB Rubber Ducky from Hak5 can do As it turns out the answer is YES :)

Freetronics DMD - Screen transitions

I was driving past one of those led advertising signs sitting on the side of the road the other day and thought to myself ‘I can do that’ So I’ve hooked up 6 of the freetronics DMD modules (in a 2x3 layout) and got down to coding up a way to do it. In the end I got it working by adding support for multiple buffers into my DMD library - github.com/cjd/DMD Since I have the ability to have multiple buffers I can now transition between buffers presentation-style. There are 8 transitions - wipe left/right/up/down, box in/out and cross in/out The following video demonstrates some of the transitions It is my sons first birthday in a few days so I thought it nice to create a moving sign for his party :) [youtube_sc url=“s4Qjski-WMY”]

Freetronics DMD - Games

I had a little while free and so ported a bunch of games I wrote for the Peggy2 to work with a pair of DMD’s In doing so the games now run at 32x32 and are controlled by a Wii nunchuck. The games are snake, pong, breakout and race. The Arduino code is available at DMD_games.zip The two screens are daisy-chained but as the cable connecting them is quite short the top one is upside-down. To get this working the modified [intlink id=“55” type=“post”]DMD library[/intlink] is setup to handle rows of displays where odd-numbered rows are upside down. See this diagram for how it is laid out (for 2x2 case)

Freetronics DMD - updated library

I recently got two Dot Matrix Displays from Freetronics - They are 32x16 LED panels that can be daisychained via SPI. It came with a quick library which worked okay but could do with a few enhancements ;) My modified library supports multiple displays (tested with 2x1 and 1x2 layout - but should work with other layouts) It also supports multiple fonts, marquee text, scrolling the display around and grayscale (grayscale sort of works - but not well :( ) I have updated the examples included in the original library to use these new functions.

MusicXML/MIDI for Arduino

For a recent project I wanted to add music.

Being that I am not musically talented in any way I figured the best way to do this was to generate the music from a midi file.

To help with this I wrote a converter that would take a MusicXML file and output an include file.

It simply reads the XML and outputs an array where each note is stored in two uint16 values - the first is the note name as a defined in pitches.h (ie NOTE_C4), the second is the duration in milliseconds. The entire array is stored in PROGMEM so as to not use up too much ram on the AVR.

Peggy 2 multi-game sketch v0.2

I’ve done a lot more work on the multi-game sketch for my Peggy2 - mostly to add functionality and fix up a few ‘issues’ See the original post here for more details on what is included Download it from here When compiled it uses 13808 bytes so there only a bit of room to spare. I’ve added a two player version of pong (use up/down buttons to control player two - I’ve made a separate plug-in controller for player two to make things easier to use) I’ve fixed up the ‘breakout’ clone so it actually can be considered a ‘game’ :-) I also added a ‘demo’ game which just lights up all leds with a nice grayscale pattern than can be moved around via the direction buttons (press select to stop the motion) The other main thing is that it now has sound! With the release of arduino-0018 they added a function ’tone’ to generate square waves on a digital pin. I connected a piezo speaker (from a headphone) to ADC5 and generated the tones on that pin. There is intro music at the game select screen, music when displaying the score and various bips and beeps while playing the games. To make the music I wrote a small perl script to convert MusicXML files to a suitable include file (will be documented in a separate post) Adding the music and extra games meant I was hitting the space limits in the AVR so there is a bit of ‘dodgyness’ in the code so that it would fit.

Peggy 2 multi-game sketch v0.1

I had such fun writing the simple ‘snake’ game for my peggy 2 that I wrote a bunch of other games for it as well.

At the moment there is Snake, Breakout, Pong and Race.

You can download the sketch as peggy2_games_0.1.zip

When compiled it takes up 11432 bytes (it includes the ‘Tone’ library as I have started adding sound to the sketch - connect speaker to ADC5 to hear it)

Peggy 2 Character display

As mentioned in the [intlink id=“13” type=“post”]Peggy 2 Snake[/intlink] post I wrote a bunch of small utility functions to display a string on the peggy 2.

Each character is stored as a 24-bit number (held in a 32bit uint32) where each 4 bits indicates the on/off status for a row of 4 pixels. This results in allowing for a 4x6 pixel character

For example the character for the number ‘0’ is stored as 0x699996 which when spread out looks like: