Cheap prototype assembly?

The MIGHTY is a light, sound, and motion controller. It aimed at people who create replicas of movie and game props.

On board it has:

  • ATMega328 running at 16mhz
  • 12 bit DAC for sound
  • 2W amplifier
  • 5A 5V regulator (I estimate I'll be able to get around 2.5A out of it before heat sinking is required.)
  • MicroSD port w/ 3.3V regulator and buffer
  • Two TLC5947 LED drivers w/ internal oscillators for driving up to 48 LEDs with full brightness control, with additional LED drivers able to be be chained to it, allowing for control of over 200 LEDs

It also has 12 I/O ports to which you can connect switches, potentiometers, servos, radio control receivers, and the power module which is for driving vibration motors with PWM, or lasers.

The MIGHTY is designed to be extremely easy to use. It's Arduino compatible of course, but it is intended to be programmed by writing simple scripts in a basic-like language.

For example, if you add the line:
SERVO[1] = POT[2]

To main.txt, the servo connected to IO port 1 will move as the knob connected to port 2 is turned.

And if you write something like:
IF SWITCH[5].On THEN LED[7] = 0.5

Then that LED will turn on at half brightness when you flip the switch connected to that input.

The language will be interpreted line by line and is designed not to require a stack, since obviously the AtMega328 has very limited ram. It will have some predefined arrays of ints and floats to use for state information however, and there will be a script specifically for initialization. (main.txt will loop forever)

The language will NOT contain a DELAY() statement, as that is a scourge which confuses the hell out of beginners. :slight_smile: Instead it will will have TIMER[]s which count up automatically and which you reset to 0 before you want to begin counting. These will most likely use seconds rather than milliseconds, again to make things easier for beginners to understand.

Also, there will be commands for animating LEDs and servos, which would be used like so:

  1. Set the LED brightness to whatever you want it to start at when say, a button is pressed:
    LED[1] = 0

  2. After that just update it like so:
    LED[1].Update(0.5, 1.0)

And what that would do is increase the brightness by 50% per second until the brightness reaches 1.0. Then it would stop.

Fading out would be almost the same thing:
LED[1] = 1.0
LED[1].Update(0.5, 0)

There will be commands to set the min and max movement of servos and such as well, so you can in that first example make the servo turn only 45 degrees as you rotate the pot 100%.

Hm, let's see, what else...

It's the size of a credit card so it can fit in tight spaces.
And it'll be priced between $100-$150 depending on the volume I can expect to do.

I think that about covers it. I've spent almost 2 months and 1000 hours working on it. And I'm pretty sure the PCB will work the first time, since I've double and triple checked everything. I really don't want to have to pay for a second prototype. :slight_smile: