Skip to content

Brad and I created Mind over Melon. Ever since I was a boy, I've dreamed of exploding things with my mind. At LVL1, we now have the technology to make this dream come true. Using a hacked Star Wars Force Trainer, Arduinos, XBees and a solenoid valve, we've developed Mind over Melon. It's a game where you focus your mind to an intense level of concentration; and explode a watermelon. It's a combination of David Cronenberg's classic sci-fi film "Scanners" and Gallagher.

We will be welcoming new players to try Mind over Melon this Saturday at Bernheim CONNECT. Please come out and pop some melons with your mind.

Here I am on WHAS Great Day Live playing Mind Over Melon. I suspect this mind-controlled watermelon explosion is a television first.

 

1

Sign up for the workshop HERE: http://lvl1arduinobeyond.eventbrite.com/

Workshop is BYOA (bring your own arduino).

Another Arduino workshop at LVL1!

On August 26th, from Noon to 4pm, we're going to cover software on the Arduino.

This is different from other workshops we've done on Arduino.  We'll cover the IDE, built-in Libraries, their uses and pitfalls.  We'll go over the current Arduino sheild ecosystem, investigate embedded C best-practices, and more!

This workshop will be strictly BYOA (bring your own Arduino), and will run about 4 hours.  Feel free to stick around afterwards to ask any questions we didn't cover.  Buy your Arduino from Radioshack, Sparkfun, or any number of other online vendors.  Bring your laptop and a USB cable, and we'll make the Arduino sing.

Here's a detailed list of topics covered:

  • What is a Microcontroller?
  • What training wheels does Arduino provide?
  • What are sheilds?
  • What are libraries?
  • Getting into the IDE
  • Blinkenlights
  • Built-in Peripherals
  • Pitfalls
  • Basic embedded C techniques
  • Going beyond Arduino
If there's any particular topic you'd like to dive deep into, email me at BradLuyster@gmail.com

Cross-posted from my personal blog: http://www.meatandnetworking.com/code/introducing-arduino-simple-task-scheduler/

Get the code here: https://github.com/Zuph/AVRQueue

Introducing the Arduino Simple Task Scheduler.  This is part of the balloon flight computer code I wrote for White Star, with some more polish. This library allows you to create a schedule queue of functions to be executed at specified times, on specified intervals.  For example, say you're trying to log some sensor data and update a display in the same program. With the task scheduler, you can simply write a function to gather sensor data, write a function to update the display, add them to your queue, and let the library handle the rest.

This isn't really useful for blinking LEDs, but it's great for complex systems. For example, the balloon computer was gathering sensor data, sending short reports, sending long reports, monitoring vertical speed, monitoring GPS Status, monitoring flight state, managing ballast, and managing a backup high-frequency radio at the same time.  Halfway through development, it was obvious that we would need to integrate a watchdog timer to keep other systems from freezing the flight computer.  If all of these tasks had been occurring simultaneously, spread throughout spaghetti code, it would have been very difficult to add watchdog resets in all the right places.  With the task queue, I simply defined another function that reset the watchdog, and put it in the queue.  Two minutes, tops!

You can find extensive documentation and examples in the Github project.  To install, just copy the "Arduino" directory contents to the "Libraries" folder of your Arduino IDE install.  Restart your IDE, and it should pop right up.  Here's a really simple example program:

#include <Queue.h>

void setup() {
    pinMode(13, OUTPUT);
    Serial.begin(9600);
    Serial.println("Alive");

    Queue myQueue;
    myQueue.scheduleFunction(testFunction, "Test", 5000, 1000);

    while(1) {
        myQueue.run(millis());
        delay(10);
    }
}

int testFunction(unsigned long now)
{
    Serial.print("Hello: ");
    Serial.println(now);
}

 

 This will print "Hello: X" where X is the number of milliseconds since startup, starting 5 seconds after startup, and repeating every 1 second.
The Arduino library has some limitations, so I've also included an AVR "library" (just a couple of source files to include in your project).  This one's a little easier to tweak to your specific application, and doesn't suffer some of the same drawbacks as the Arduino library.  That said, the Arduino library will be find for almost every project out there!  The limitations are listed in more detail at the Github site.
If you find any bugs, let me know! Submit a Github issue, fork, fix and submit a pull request, or contact me directly!  If you find this useful, let me know!  It isn't a lot, but I hope it's well documented, and easy to use/read/understand.

SIGN UP HERE http://digitalarduino.eventbrite.com

We will build and program an electronic game and in the process learn LED's, tri-color LED's, pushbutton switches, speakers and Arduino programming.

More info here: http://wiki.lvl1.org/Digital_for_Arduino

I am teaching.  I hope you can come.  Put your Arduinos and Freeduinos to good use!

Brian