Bitlash 1.0 (RC1) available at

The RC1 version of Bitlash 1.0 is available for download at

Bitlash is a development and prototyping tool for those situations where you need to bang some bits on the Arduino but writing a sketch in C is premature. The Bitlash command language is very similar to Arduino C and includes a large repertiore of the familiar Arduino C functions so you can hack your hardware from the serial command line or even over the internet via telnet.

You can store command sequences in EEPROM and autostart them at bootup, making the automation and maintenance of small applications very easy.

This version, patched as required by bug reports, will ship as 1.0 shortly after the currently-pending Arduino 0016 release goes gold.

Here is a quick roundup of changes in this version:

? Bitlash for Arduino now ships as an Arduino library with example sketch files. Just drop the library folder into hardware/libraries, upload the bitlash-demo.pde sketch, and off you go. ? New "switch" statement provides easy state machine dispatch. ? The "run" command now takes an optional time-between-calls argument. ? This version is tested and working on Arduino 0014, 0015, and 0016-RC3. ? This version is tested and working with Sanguino using Sanguino 1.4 + Arduino 0014 and 0016-RC3. ? Preliminary support for the Arduino MEGA is coded and compiles, ready for testing.



Kudos to you! This is very nice :sunglasses:

Thanks for the kind words :)

I'd love to hear how it works on those sweet little Gator boards.

Best regards,


Working on porting it ;)

@billroy, i'm following bitlash; i think it is very interesting. Do you show it also in arduino site?

Hi, nathanvi, and thanks for your note.

Are you suggesting a reference page in the wiki? If so, it's a good idea. I'll put it on the list for the next doc update.

Thanks, and best regards,


I think it could be stay into Development tools at "Others" or into Interfacing with software

It's a good product: in my opinion it has to be more visible.

PS: Sorry for my bad english...

Thanks for your suggestions; as you probably guessed I have been having difficulty finding a good place to fit Bitlash into the documentation taxonomy.

Let me give your suggestions a look and also request others to suggest ideas for the best place. Any thoughts?

(Your english is fine.)



great news bollroy :)

Bitlash over TCP/IP for the WiFi shield would allow large programs to be written in php and hosted on a remote server making the Arduino one clever little remote control and sensing device.

Will you be doing a version for the Wifi shield?

Wi-fi shield: which one? ;)

Seriously, J_R, you raise a fair question so it's worth saying a word about supporting Bitlash on new hardware.

First of all, Bitlash may just work on a new device, possibly with small tweaks, provided the software interface looks like the Arduino Serial() interface. You'll have to tuck your chip initialization and support library in somewhere. Start in src/bitlash.h and send me a note when you get stuck.

In the unfortunate case where more work is required to make it go, the author is of course favorably disposed to assist most vigorously in cases where a sample of the board can be provided for testing.

If you have a pointer to the software interface provided by your wi-fi shield of choice I'm happy to take a look to see how hard it might be.



Would it be possible to explicitly tell bitlash which libraries to include? It seems like it is including the lot right now, which might be too much if still running on e.g. a 168.

Hello and thanks for your note. Although the current version does fit into the ATMega168 with a tiny bit of room to spare, it is tight.

I have some experience producing smaller versions of Bitlash; in fact I have one that fits nicely in 8K with the V-USB stack on the Tiny85, but at half the code space there are substantial compromises in what it can do. It is a different beast.

I'm afraid it is not so simple a matter as to include or drop libraries, although such point optimizations can help. Rather, whole features must come or go as a chunk: for example, the storing of macros to eeprom or support for software serial output. This is not straightforward to put on a switch, but it can be done.

Fortunately, I believe that you will find that for many applications the Bitlash Demo application is all you need. And in the case where you need to integrate significant code, the '328 is a nice backup plan.

(If space is tight, start with the Bitlash Demo, not the Bitlash Clock Demo, to save a few bytes.)

Best regards,


The WiFi shield is designed to work with the 168 but I think it works with others as well.

I don't think the guys who built it have samples to give away and they've still to get client/server mode working at the same time. So that could be a wee while off since they have jobs and contribute in their spare time.

I think they've sold a few dozen units so its early days. I personally wouldn't have any use for bitlash but others looking for an easy way of controlling the Arduino wirelessly over the www might once the use of the shield becomes more prolific.

Thanks for quick reply. Yes. I understand. I am super greatful for bitlash as it is. I'll use it with a 328 for now and just dropping the libraries manually from the directory before compiling. No probs.

It actually feels a little like the interactivity I had with microcontrollers back in the '80:s when we had FORTH running in a similar environment. Back then the processor was a Mitsubishi 747 (a onechip ~6502 clone that had some eprom).

Bitlash port to the Gator is done! Works great!

Bill, did you get the PM I sent you with a patch to correct a bug?

Bravo! I see your post over on the Google group. Nice work.

I tripped on that very bug about twelve hours after you found it - ugh and thanks.


hi i seem to be having problems getting bitlash to work with arduino16 (well any arduino ide in fact)

it is having problems with the librarys or something.
i followed the install instructions too.
it is throwing back this whenever i try and upload to a board:

bitlash-api.c:103: error: conflicting types for 'initBitlash'
/bitlash.h:302: error: previous declaration of 'initBitlash' was here
bitlash-api.c: In function 'initBitlash':
bitlash-api.c:104: warning: implicit declaration of function 'beginSerial'
bitlash-api.c:105: warning: implicit declaration of function 'displayBanner'
hardware\libraries\src/bitlash.h: In function 'void setup()':

hardware\libraries\src/bitlash.h:302: error: too many arguments to function 'void initBitlash()'

error: at this point in file

can u see wats going on?

any other sketch uploads fine and serial is fine both ways on several devces.

That's a puzzler. I just re-downloaded and tested on a fresh copy of Arduino-0016 and it works fine here.

The error it's throwing is (implausibly) seeming to indicate the TINY85 define is engaged, which is shouldn't be in the Arduino IDE, of course.

When library issues arise it's usually a good thing to delete the generated library .o file and try again. In this case you'd delete bitlash.o in the hardware/libraries/bitlash directory and press the recompile button. If that works, try uploading.

Grasping at straws, I might suggest you re-download and unzip again if you haven't already tried that.

Anything else unusual about your config?


it was as fresh as the test u did O_o and it was the same on 2 computers i'll try it again on another fresh install on xp (the other 2 was 2k and win7) and see how it goes. will get back to u..


ok i think i see where i went mad. i had only put the src folder in the hardware/libraries folder -_- i should have put the whole bitlash folder in there XD

wen i started the IDE 1st time it kicked out:

In file included from bitlash.cpp:32:
/src/bitlash-cmdline.c:43: warning: only initialized variables can be placed into program memory area
/src/bitlash-cmdline.c:231: warning: only initialized variables can be placed into program memory area
In file included from bitlash.cpp:36:
/src/bitlash-functions.c:72: warning: only initialized variables can be placed into program memory area
/src/bitlash-functions.c:75: warning: only initialized variables can be placed into program memory area
In file included from bitlash.cpp:38:
/src/bitlash-parser.c:55: warning: only initialized variables can be placed into program memory area
/src/bitlash-parser.c:109: warning: only initialized variables can be placed into program memory area
/src/bitlash-parser.c:297: warning: only initialized variables can be placed into program memory area
/src/bitlash-parser.c:298: warning: only initialized variables can be placed into program memory area
/src/bitlash-parser.c:364: warning: only initialized variables can be placed into program memory area
/src/bitlash-parser.c:365: warning: only initialized variables can be placed into program memory area

so i closed and reopened it, and the errors didn't return so i surmised it was 1st run initializing. then i opened the bitlash_demo.pde and compiled it. it seems to be ok, no errors sent back. :)

seems i confused ure instructions XD