LED Flash Challenge – Semester 2, 2015/2016

We’re beginning the RoboSumo project with a little competitive puzzle called the LED Flash Challenge. We’re not attaching a formal assessment weighting to this challenge, but we’ll be keeping a close eye on which teams finish in what order.

Yes, it’s a race.

In today’s lab (and for some of you part of the next lab) you’ll be working with your team to complete two tasks:

  1. Build a simple breadboard circuit for the MSP430 microcontroller and program it to blink an LED on and off.
  2. Add a second LED to the circuit and reprogram the MSP430 to transmit a specific binary sequence as flashes from the two LEDs.

The first task is very prescriptive, which means that we’ll basically tell you exactly what to do, but to complete the second task you’ll need to start thinking for yourselves.

You’ll need a team number to complete this challenge. Your tutor will assign your team a unique number within the range shown below:

  • 1-12: Ted and Richard’s teams (groups A1,A2 in KEG-036)
  • 13-18: David’s teams (group B1 in KEG-004)
  • 19-24: Emmas’s teams (group B2 in KEG-012)
  • 25-30: Damon’s teams (group C1 in KEG-014)

Part 1: Blinking LED

This task is relatively straightforward and shouldn’t take you too long to get working. You’ll find complete instructions here:

Instructions for Blinking LED example

NOTE: In some places, those instructions may refer to the MSP430G2553 microcontroller, whereas you’re using the MSP430G2452 microcontroller. These two microcontrollers are extremely similar, so you should be able to follow the instructions without any difficulty. Just remember that anywhere it refers to MSP430G2553, replace that with MSP430G2452 and you should be fine.

Once your LED is blinking, there are four things you need to understand before moving on:

  1. How one of the pins (P1.0) was turned into a digital output.
  2. How the LED is turned on
  3. How the LED is turned off
  4. How to delay the program for a specified number of microseconds, so that the rate of the LED blinking can be controlled

Once you understand these four things, you have finished this part of the task (the easy part) and it’s time to move on to the LED Flash Challenge.

Part 2: LED Flash Challenge

In this part, you’re going to modify your circuit to create a simple optical transmitter, which transmits a digital message (a sequence of 1s and 0s) as a series of LED flashes. I’ll demonstrate this to you in the lecture.

The message that you’ll transmit will be 2 bytes long (a byte is 8 bits, or 8 ones and zeros) and it will contain your team number (byte 1) followed by a second number calculated by subtracting your team number from 255 (byte 2).

For example, if your team number is 101…

  • byte1 = 101
  • byte2 = 255 – 101 = 154
  • byte1 + byte2 = 255

You and your team mates should take a few minutes to read about binary numbers and digital i/o on the MSP430 here.

Specifically, you need to do the following:

  1. Modify the code to create a second digital output pin.
  2. Extend the circuit by adding a second LED (with current limiting resistor) to that digital output pin.
  3. Convert your team number into 8-bit binary. This is byte 1 of your message.
  4. Calculate the required value of byte 2 (so that byte1+byte2 = 255).
  5. Each byte will be transmitted as a sequence of ones and zeros, preceded by a start bit (1) and followed by a stop bit (0). That means your complete transmission will be 20 bits long. You need to calculate this sequence on paper first.
  6. To transmit a 1, turn LED1 off and LED2 on for 500ms.
  7. To transmit a 0, turn LED2 off and LED1 on for 500ms.
  8. To ensure the sequence is read correctly, transmit a long sequence of zeros (for about 5 seconds) before you transmit your message.

Let’s consider that example team number 101 again. As explained above, byte 1 is 101 and byte 2 is 154.

  • Before transmitting the sequence, send a “0” for about 5 seconds.
  • The first bit of the sequence is the start bit for byte 1 which is “1”.
  • Written as a binary number, 101 (one hundred and one) is 0b01100101. The “0b” prefix indicates that it is a binary number and is not part of the number value. The byte is transmitted least significant bit first, i.e. in the following order: “1,0,1,0,0,1,1,0”.
  • The next bit is the stop bit for byte 1, which is “0”.
  • The next bit is the start bit for byte 2, which is “1”.
  • Written as a binary number, 154 is 0b10011010, so the next 8 bits are “0,1,0,1,1,0,0,1”.
  • The final bit is the stop bit for byte 2, which is “0”.
  • To summarise, the complete 20-bit sequence for team 101 would be as follows (data bits for each byte are highlighted in bold):

    “1,1,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0,0,1,0″

    The validator for checking your transmission is a web application which I have posted at the following location:

    I will set up an official validation station in KEG-036 where you can record your result once your circuit is working. Other tutors may set up validation stations in the other rooms, but that will depend on available cameras and light levels.

    You are welcome to try the validator on your own laptop / PC. In principle, it should work on any modern PC with a webcam and up-to-date browser. However, since video capture is relatively new in HTML, I recommend using the current release of Google Chrome which is what I tested it in.

    Your tutor will be able to clarify anything you don’t understand about this.

    Advertisements
This entry was posted in Uncategorized. Bookmark the permalink.

One Response to LED Flash Challenge – Semester 2, 2015/2016

  1. Pingback: Blink a LED – Feb 5th 2016 | roboannie

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s