Jump to content

[ ENDED ] Dec 2010 - 43oh Project of the Month Contest

The Dec 2010 - 43oh Project of the Month Contest  

11 members have voted

You do not have permission to vote in this poll, or see the poll results. Please sign in or register to vote in this poll.

Recommended Posts



Entry to the December 2010 contest is open. This is an opportunity for you to show off what you can do with the MSP430. The 43oh community forum has been growing both with good discussions and members. The project section of the forum as well as the Blog has a lot of project ideas you can base your submission on. Feel free to ask questions about the project on the forum.


Previous Contests

November 2010 [ Announce] [ Winner]


Now for the prize:

Winner : A $20 Sparkfun gift certificate. You can finally get that thingy you were eyeing on.

Runner up :[J]bremnant has been kind enough to donate a pristine unopened Launchpad kit. Although you may already have one, having another Launchpad can be quite handy like a project you may not want to take apart or recreate[J]oby's SPI Ninja. Thanks [J]bremnant for sponsoring this month's contest giveaway.


To submit your entry, make an entry into this thread with the following:

1 - A small description of your project.

2 - A picture or video of your setup

3 - Code.

4 - Schematic(rough/hand drawn is fine as long its legible)


About judging the winner :

A week before the contest ends, a poll will be created with all the project entries. Only members of the forum will be allowed to vote.

The contest will roll over to the next month if there are fewer than 5 projects(four or less).


A few simple rules to follow:

- You must be a member of the 43oh forum at least a week before your submission.

- One entry from each member will be permitted.

- Your project can be anything based around the MSP430. You may interface the MSP430 to another controller.

- You may reuse code from anywhere as long as you give credit to the original author.

- You must submit code and schematics of your project with a proper description.

- You can submit your MSP430 project, if it was created before the annoucement of the contest.

- You must have at least 5 posts in the forums, for your entry to be considered when the voting begins.

Link to post
Share on other sites
  • 3 weeks later...

looks like everyone is waiting for someone else to submit 1st again.

me be the 1st then.


ez430 based ezprobe






this is a simple logic probe project based on TI Launchpad. i took advantage of a free offer on a couple of ez430s from TI in september 2010. they are very handy and fun in trying out small code snippets and watch the led blink. they had since been laying around my desk and i have to come up with something for them. and i want to stop people coming up and ask to borrow my "memory stick".


well, this is no memory stick, 16bit MCU w/ multi-channel ADCs, adaquate 2K programming memory and runs up to 16Mhz. all packed up with the debugging programming interface board in a nice usb device package.



my main design goal is to limit my intervention to the original ez430. in that i don't want do alter it too much physically and i want to retain it's programming / debugging function for other target board projects. all this while serve additional useful purposes.


this is a linux project, as usual, i had given attention with my best knowledge to make provisions so that it can be built under windows. however i do not have the time and resources to try out everything under windows.


most of my electronics projects are done on very small breadboards and i usually work on tight spaces (kitchen table, half a borrowed desk, etc). there are many instances that i need to check circuit logic levels and i've been using a multimeter (size of a brick) to check things out. it always annoys me as my projects are much smaller than my multimeter and i found it always gets in my way. i need an alternative, a small logic probe will do.


the ez430 is perfect for this task. to begin with, it's already shaped like a probe, i just need to add a nail and some leds. as i mentioned earlier, i want to make this project simple and non-destructive. and i made use of what's available already.


instead of building the project on a pcb / pref-board, i build this on a target msp430f2012 board, employing the 14 pin header thru holes as my prototyping area. this is where the tiny leds goes. i do not want to drill holes on the plastic casing, i don't want to run too many wire nor add additional contact points. all i need is a probe io contact and a button input for function select, plus gnd and vcc. the usb connection looks perfect for this task. i will power the probe via the usb (the programmer circuit will regulate a around 3v potential for me) and use the D+ and D- usb connects for my probe and switch.


since the ez430 is slave / client device, upon initialization, it won't do a thing except a pull-up on D+ (to indicate it's a "hi-speed" usb). i use the floating D- as my probe io and D+ as my tactile button input (i don't even need to setup a pull-up resistor for that, it's already there)


features and application


* supply from circuit via usb connector

* 3 operating modes rotating between logic read, pulse output, pwm output

* long button press (about 1.5 sec) rotates through the 3 operating modes

* p1.0 original green led as mode indicator, off - probe, on - output, blink - pwm


logic probe


* logic probe red - hi, green - low, none - floating

* logic probe red / green blinks on continous pulse reads > 100hz

* 4 yellow leds shows detected frequencies in 8 steps, blinking yellows indicate hi-range (i.e. step 5-8)

* shows detected pulse frequences for 100hz+, 500hz+, 1khz+, 5khz+, 10khz+, 50khz+, 100khz+, 500khz+

* for non-continous single pulse bursts, the red / green leds stays on and subsequent pulse counts are displayed incrementally on the leds, will count up to 8 pulse


continuous pulse output, frequency setting


* indicated by p1.0 original green led on

* 4 yellow leds shows output pulse frequencies in 9 steps, blinking yellows indicate hi-range (i.e. step 5-8)

* pulse frequencies output for 100hz, 500hz, 1khz, 5khz, 10khz, 50khz, 100khz, 500khz, 1mhz

* short button press rotates the 9 different frequency settings.


continuous pulse output, pwm setting


* indicated by p1.0 original green led blinking

* same as previous operation mode, except pwm values are show (and be setup) instead of frequency

* 4 yellow leds shows output pwm percentages in 9 steps, blinking yellows indicate hi-range (i.e. step 5-8)

* pwm percentages for 0%, 12.5%, 25%, 37.5%, 50%, 62.5%, 75%, 87.5%, 100%

* short button press rotates the 9 different pwm settings.



[EDIT] you'll need the schematic / source code / construction notes, etc to evaluates this project. find below



[ADMIN] Project Thread: viewtopic.php?f=9&t=280

Link to post
Share on other sites

Hey guys.

My submission for this month's contest is my Launchpad/MSP430G TV output project.



Many of you are already familiar with the project, but here's a short description:


My goal was to push the limitations of the G-series microcontroller. A lot of people (not in this forum) scoffed at the 128B RAM, 2KB flash, and single timer. I wanted to do something that would make people put down their Arduinos and give Launchpad another look. I'm still pretty novice, so this was a big challenge for me.


To display video, the MSP430 must output proper sync timings and image data. For h-sync, I attached TimerA to a pin and triggered sync pulses at a regular interval. The TimerA_CCR0 ISR contains software loops that handle v-sync.


To display the image, I used the USI to spit out 16 bit chunks of image data at a time. Software delays handle the reloading of the USI at the proper time. In hindsight, I may have been wise to use the USI interrupt to reload the USI, but a big change like that means a lot debugging. A couple of cycles of timing misalignment results in very visible image distortion.


The 192

Link to post
Share on other sites

MSP430G2221 jar-of-fireflies


A classic project, re-told on the MSP430 Launchpad's MSP430G2221.








(I've just finished this project and published the details, but it was already mentioned on 43oh back when I started it http://www.43oh.com/2010/10/msp430_firefly_throwies/ So, perhaps it's ineligible for the competition - no problem).


Forum page here: viewtopic.php?f=9&t=287#p2230)

Link to post
Share on other sites

My entry into the 43oh PoM contest is my photo-sensitive noise maker, the "glitchamin". (forum thread here: viewtopic.php?f=10&t=95, blog post here: http://blog.suspended-chord.info/?c=17)


Here's a basic run-down: This project is an instrument you can play without touching it (for the most part), kind of like a theremin. It consists of a CdS cell, a resistor, two potentiometers, and an audio output. I believe the schematic is easy enough to glean from the code and the pictures, but if not, let me know.


Basically, it works by sampling the ADC pin connected to the CdS cell, along with the two potentiometers, and creates a duty cycle out of that, which is then outputted as square waves to the audio out pin. The net effect of this is some cool, glitchy, electronic sounding stuff.


Anyways, here's the code:

// LaunchPad-based "glitchamin"
// A photo-sensitive theremin-like noise maker
// Based upon my previous work, the Arduino glitchamin
// (info at http://suspended-chord.info/portfolio/micros/glitchamin-arduino-2010/)
// written by suspended-chord/gatesphere (http://suspended-chord.info/)
// Released under the GPLv3.
// version 2 (20100924): Actually works like it's supposed to now.

#define __MSP430G2231__

#define PHOTOCELL INCH_0 // photocell divider on P1.0/A0
#define CUTTER INCH_1    // cutter pot on P1.1/A1
#define CYCLE INCH_2     // cycle pot on P1.2/A2

#define SPEAKER BIT5     // speaker on P1.5

#define DELAY 5 // adjust for best sound

int analogRead(unsigned int pin);
long map(long x, long in_min, long in_max, long out_min, long out_max);

void main() {
 volatile unsigned int val, cutter, cycle, i, j;
 WDTCTL = WDTPW + WDTHOLD; // kill wdt+
 P1OUT = 0x00;

 ADC10CTL0 = ADC10ON + ADC10SHT_0 + SREF_0; // ACD10 on, 4 clock cycles per sample, Use Vcc/Vss references

 // change frequency to ~15.25mhz (DCO(15,3))
 BCSCTL1 |= (BIT0 + BIT1 + BIT2 + BIT3);
 DCOCTL &= ~(BIT7);
 DCOCTL |= (BIT6 + BIT5);

 for (; {
   val = analogRead(PHOTOCELL);
   cutter = map(analogRead(CUTTER), 0, 1023, 15, 2);
   cycle = map(analogRead(CYCLE), 0, 1023, 1, 1000);
   val = (val/cutter) * DELAY;

   for (i = 0; i < cycle; i++) {
     P1OUT |= SPEAKER;
     for (j = 0; j < val; j++);
     P1OUT &= ~SPEAKER;
     for (j = 0; j < val; j++);

int analogRead(unsigned int pin) {
 ADC10CTL1 = ADC10SSEL_2 + pin;// Select MCLK and pin
 ADC10CTL0 |= ENC + ADC10SC; // enable and start conversion
 while (1) {
   if ((ADC10CTL1 ^ ADC10BUSY) & ((ADC10CTL0 & ADC10IFG)==ADC10IFG)) { // ensure conversion is complete
     ADC10CTL0 &= ~(ADC10IFG +ENC); // disable conversion and clear flag
 return ADC10MEM;

long map(long x, long in_min, long in_max, long out_min, long out_max)
 return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;


Here are some pictures:





And here is a sample track. Careful, it's annoying and loud :P


Link to post
Share on other sites
This topic is now closed to further replies.
  • Create New...