Mark Easley
Published © GPL3+

MSP430 Mini Flashlight / LED Gizmo

Make a super easy LED device. Use bright LEDs for a flashlight or headlamp, or colorful LEDs for a fun accent to clothing or backpacks

BeginnerShowcase (no instructions)1,328
MSP430 Mini Flashlight / LED Gizmo

Things used in this project

Hardware components

MSP-EXP430G2 MSP430 LaunchPad
Texas Instruments MSP-EXP430G2 MSP430 LaunchPad
×1
LED (generic)
LED (generic)
×4
Mini breadboard
×1
Coin cell Breakout board with Switch
×1

Software apps and online services

Energia
Texas Instruments Energia

Hand tools and fabrication machines

Scissors
IC puller

Story

Read more

Code

LEDAccent.ino

C/C++
This is some starter code for the project. You can make additional LED patterns by making custom functions to turn the LEDs on and off in sequence. You can control up to 8 LEDs with the MSP430G2553 or similar microcontroller, but you can also use less.
/*
  LED Accent
  Create an LED gizmo for your headwear or backpack
  
  Hardware Required:
  * MSP-EXP430G2 LaunchPad (to program MSP430)
  * MSP430G2553 or MSP430G2454
  * Mini Breadboard
  * 8 LEDs
  * Coin cell breakout from Adafruit https://www.adafruit.com/products/1871
  * CR2032 coin cell
  
  The idea will be to program the MSP430G2553 microcontroller with the 
  LaunchPad and then embed it on the mini breadboard and powered by 
  the coin cell. The MSP430 will control up to 8 LEDs. Trim the LED legs
  for a slimmer form factor when placed on the breadboard.  
  
  This example code is in the public domain.
*/

  
// the setup routine runs once at the beginning of code excecution
void setup() {                
  // initialize the digital pin as an output.
  pinMode(2, OUTPUT);  // + LED 1
  pinMode(3, OUTPUT);  // - LED 1
  pinMode(4, OUTPUT);  // + LED 2
  pinMode(5, OUTPUT);  // - LED 2
  pinMode(6, OUTPUT);  // + LED 3
  pinMode(7, OUTPUT);  // - LED 3
  pinMode(8, OUTPUT);  // + LED 4
  pinMode(9, OUTPUT);  // - LED 4
  pinMode(10, OUTPUT); // -
  
  pinMode(11, OUTPUT); // + LED 5
  pinMode(12, OUTPUT); // - LED 5
  pinMode(13, OUTPUT); // + LED 6
  pinMode(14, OUTPUT); // - LED 6
  pinMode(15, OUTPUT); // + LED 7
  // 16 is RESET
  // 17 is TEST
  pinMode(18, OUTPUT); // - LED 7
  pinMode(19, OUTPUT); // + LED 8
  
  // set the simulated GND pins low
  digitalWrite(3, LOW);
  digitalWrite(5, LOW);
  digitalWrite(7, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW); 
  digitalWrite(12, LOW);
  digitalWrite(14, LOW);
  digitalWrite(18, LOW);
}

// the loop routine runs over and over again forever:
void loop() {
  allOn(1000);
  allOff(1000);
  allOn(1000);
  allOff(500);
  oneByOne(500);
  
}

void allOn(int delaytime) {
  digitalWrite(2, HIGH);  // LED 1 ON
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);  // LED 2 ON
  digitalWrite(5, LOW);
  digitalWrite(6, HIGH);  // LED 3 ON
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);  // LED 4 ON
  digitalWrite(9, LOW);
  digitalWrite(11, HIGH); // LED5 ON
  digitalWrite(12, LOW);
  digitalWrite(13, HIGH); // LED 6 ON
  digitalWrite(14, LOW);
  digitalWrite(15, HIGH); // LED 7 ON
  digitalWrite(18, LOW);
  digitalWrite(19, HIGH); // LED 8 ON
  delay(delaytime); // delay 1 second
}

void allOff(int delaytime) {
  for(int i=2; i<20; i++) {
    digitalWrite(i, LOW);  // LED 1 ON
  }
  delay(delaytime); // delay 1 second
}

void oneByOne(int delaytime) {
  for(int i=2; i<20; i++) {
    digitalWrite(i, LOW);  // LED OFF
  }
  digitalWrite(2, HIGH);  // LED 1 ON
  digitalWrite(3, LOW);
  delay(delaytime);
  for(int i=2; i<20; i++) {
    digitalWrite(i, LOW);  // LED OFF
  }
  digitalWrite(4, HIGH);  // LED 2 ON
  digitalWrite(5, LOW);
  delay(delaytime);
  for(int i=2; i<20; i++) {
    digitalWrite(i, LOW);  // LED OFF
  }
  digitalWrite(6, HIGH);  // LED 3 ON
  digitalWrite(7, LOW);
  delay(delaytime);
  for(int i=2; i<20; i++) {
    digitalWrite(i, LOW);  // LED OFF
  }
  digitalWrite(8, HIGH);  // LED 4 ON
  digitalWrite(9, LOW);
  delay(delaytime);
  for(int i=2; i<20; i++) {
    digitalWrite(i, LOW);  // LED OFF
  }
  digitalWrite(11, HIGH);  // LED 5 ON
  digitalWrite(12, LOW);
  delay(delaytime);
  for(int i=2; i<20; i++) {
    digitalWrite(i, LOW);  // LED OFF
  }
  digitalWrite(13, HIGH);  // LED 6 ON
  digitalWrite(14, LOW);
  delay(delaytime);
  for(int i=2; i<20; i++) {
    digitalWrite(i, LOW);  // LED OFF
  }
  digitalWrite(15, HIGH);  // LED 7 ON
  digitalWrite(18, LOW);
  delay(delaytime);
  for(int i=2; i<20; i++) {
    digitalWrite(i, LOW);  // LED OFF
  }
  digitalWrite(19, HIGH);  // LED 8 ON
  delay(delaytime);
  for(int i=2; i<20; i++) {
    digitalWrite(i, LOW);  // LED OFF
  }
}

Credits

Mark Easley

Mark Easley

65 projects • 137 followers
Texas Instruments LaunchPad SW Engineer

Comments