Monthly Archives: November 2014


December is my pink month!

Congratulations to the Capital Teens for winning 2nd Place Champion, 2nd Place Robot Performance and qualifying for the VA-DC Championship Tournament.

Congratulations to McNair Robotics for winning 1st Place Champion and a score of 509.   I am always impressed with this team.  The Capital Teens achieved a 383 score on the table.

It is now time to go pink.  At the beginning of the season, I made a bet with my team.  If they qualified for the VA-DC Championship Tournament, I would die my hair pink for the tournament.   Last year they got to paint my toe nails.  Ten girls, ten toes.

I would also like to thank VA-DC FLL and the Chantilly Tournament team for a wonder experience.

Help your team succeed faster, sign up for the preview.  If you get prompted for a code, use the code ROBO.  StartingPoints is a web-based team management toolkit designed by experienced FLL coaches.



EV3 FLL Master Program

A Master Program allows you to combine all your missions in one program.  It is a big time saver and reduces stress.  The starting team just presses one button to move to the next program versus hunting and pecking through the menu structure.  A good master program allows you to navigate backwards and forward over runs.

Building a simple Master Program


A simple master program uses the wait block and my blocks.  For information on My Blocks, see the EV3 help.  Word of warning, kids love picking icons for their My Blocks.  They will spend hours if allowed.  It works by waiting for the middle button to be released before running the next program.  If you have a young or inexperienced team, I would recommend this master program.  It is simple to understand and program.

Building a Robot Nerd Master Program that displays the program and allows you move forward and back.


I know, what the hell is this.  It looks complicated.  If you team understands loops and switches, then it is actually simple.  The big concept is the variable block, which stores a value in memory. To teach the concept of memory and variable block, assign one team member to be the memory block.  You ask and give her a new number.  This worked for teaching this concept to my team.

The Robot Nerd Master Program displays the active program and allows you move forward and back over the programs.

Getting Started

  1. Create my blocks for each program you want to include in your master.  See the EV3 help for instructions on creating a my block.
  2. Create new program.

Variable Block

master1-countAdd a Variable Block as the first block. Set it to number and write.  Name it count and set the value to 1.  The variable tracks the active  program to run in memory.  You add or subtract 1 to move between programs.

Unlimited Loop

master2-loopAdd a loop and set the exit condition to “unlimited”.  The loop runs listening for actions inside.  The rest of the blocks will be inside the unlimited loop.

Displaying the Active Program

So the starting team can see the program that they are going to run, we want to display the active program.   We read the count value and pass it to a switch.  The switch reads the numbers and runs the block in the corresponding case statement.



  1. Add a variable block and set it read.
  2. Add a Switch that takes a number input.
  3. Connect the Count variable and switch block, the yellow wire.
  4. Add a case (the plus button) for each program you want to run. In this example 4.
  5. Number the switches, 1-4 in this example.  Set the first one to the default.
  6. Add a display block to each switch. I recommend adding numbers to the label.

If you were to run this now, it would display “1. Door”.  We set the variable to 1.


123 Lego – Running the first mission

The next step is triggering a program to run and then increment the Count variable by 1.


Running the Program

To achieve this, we add a switch block triggered by the brick button (Brick Button – Compare – Brick Buttons).  We set the switch brick button properties to the middle button and state to 2, indicating the middle button was pressed and released.

Like the display logic, read the Count variable and pass it into a switch.  Instead of the display, the associated My Blocks (the program) is in the case statement.

Automatically Moving Forward to the next program

Next we want to increment the count variable by 1 so will move to the next program.  There is a catch, we do not want to increment the count variable if it is set to the last program.   In this case, we don’t want to go from 4 to 5.  This requires some comparison logic.

  1. Read the Count Variable
  2. Compare the Count Variable to the number of your last run.  If the count variable does not equal the max value, 4 in this example.  The Compare block will pass a true or false.
  3. Pass the compare results (true or false) to the switch.  If the is true (Count does not equal 4), run the true case.
  4. In the true case, read the Count variable.
  5. Increment the Count Variable by 1
  6. Write the new Count Variable.


Moving Back a Program

Things happen and sometimes you want to go back a program.  You could exit out of the master, restart it or hunt and peck to find your program.  Here’s an idea, let’s add some logic that allows you to go back.  To do this, all you need to do is subtract 1 from the Count Variable when it is not equal 1.

In the code below, you press the left button.  If the Count Variable is not 1, is subtracts 1 and updates the Count Variable.



Moving Forward a Program

You are at a tournament and realize your runs are over 2.5 minutes and need to skip over a program.  Just like moving back, all we need to do is increment the Count variable by 1.  This logic already exist, we just need to trigger it with the right button.  You could make this logic a My Block.



Coast your motors

In a master program, if a run program ends when the motors ending with a stop, the motors lock.  You cannot roll the robot or adjust a motorized arm.  For example, the starting team can not roll the robot into position or position the arm.  This is simple to resolve, just set the last move or motor blocks to coast in your run My Blocks.  This unlocks the motors.

Beware of Master Program Ghost

shutterstock_203925415The program worked perfect when run as a standalone program but does strange things in the master.   I call this ghost.

I cannot explain why this happens but it is like the motor rotation sensors drift.  The issue is similar to the gyro drifting (which is more of a demon than a ghost).  We did figure out that adding a Motor Rotation Sensor and setting it to reset for each motor is our ghost buster.










FLL World Class Challenge Project Prototyping with Ardunio and NFC Shield

For the World Class Challenge, my girls decided on a question – How to improve the way someone learns a life skill with technology.  To explore the question, they met with experts and each had to learn a new life skill.   They learned how to sew a button, do laundry and even unclog a toilet.

With inspiration from the question, meetings with experts and the Orion story they selected to focus on using NFC technology to help someone learn new routines.  NFC is near field technology and is in most phones, including the new iPhone 6.

One night at dinner, I was telling the Orion story.  Orion uses NFC technology to automated many of his daily routines.  For example, his phone is his alarm and the only way to turn it off is to tap the NFC tag in his bathroom.  This requires him to get out of bed.  Once he taps the bathroom NFC, his phone guides is morning bathroom routine.  Reminding him to floss and brush his teeth.  Once in his car, he taps his car NFC and Google calculates his commute, turns on Pandora and turns off WIFI.  This story fascinate my daughter because it was cool.  At the meeting, she shared the story and the focus on NFC for learning life skills was born.

The team met with Orion and he educated them on NFC.  He also led a session on using the Ardunio  ( and how it could be used to build a NFC reader.   After a few weeks of playing and getting the extra parts they needed, they now have two prototypes.  A website and phone functionality that delivers content based on the NFC tag scanned.  This is used on backpacks and lockers to remember what to take to school and class.  I know my wife would appreciated this solution, there is nothing worse than getting the text asking her to bring my daughters lunch or instrument to school.

They also have a location-based tags as a concept.  You can tag a tag on the wall using your phone and the Tapit app (their solution) and you will be navigated to where you need to be in the school based on your current location and schedule.   Turns out many middle school students struggle learning their schedule and navigating the school at first.

To determine the school routines that created the most challenges for middle school students, they surveyed their friends.  They did verbal surveys and used a website I had not heard of, to collected student challenges.

They also surveyed over 20 teachers, asking how much time is lost taking attendance and due to tardies or people not having all their items for class.  I must say, the results of this survey were interesting.  On average, each class period losses 4 minutes of instructional time due to tardies and students not being prepared for class.  This is 8 hours per student per month.  I know the survey was not on a large scale or scientific but kids lose a day a month due to poor school routines.

Even through it is not associated with their question, the team wanted to look at automating collecting attendance with NFC.  Based on their teacher survey, it takes about 2 minutes on average per period to take attendance.  To automate attendance, they built a NFC reader prototype using the Ardunio.  It currently reads the NFC card and displays the person’s name and plays a note.  It is currently not linked to the internet but could be.  I think this is one of the coolest prototypes they have done and I may encourage them to do a Kick Starter Campaign.  I loved the fact that the logic they use for programming their robot (loops, logic and switches) is what they used to program the Ardunio.  As I told them, the programming concepts they use for their robot are universal and it is nice to have a reference that backups this point.