Tutorials/Arduino Projects/Mobile Robotics/BoeBot/Flash an LED

From ROBOTC API Guide
Jump to: navigation, search

To demonstrate how you can use an LED with the Arduino, we are going to have the Arduino make the LED flash.

Configuring ROBOTC

First thing you need to do is make a new source file in ROBOTC. Once you have done that you need to tell ROBOTC what type of Arduino you are using. Since you are using the Parallax Boe Bot Shield, you will be using the Arduino UNO. To specify the board go to Robot > Platform Type > Arduino Types > Standard Arduino then click on Arduino UNO.

Arduino board type menu

Now that ROBOTC knows what board you are using, it is time to configure the pins on the Arduino. To do this we open the Motors and Sensors Setup window by opening the Robot drop-down menu and clicking on Motors and Sensors Setup.

Opening the Motors and Sensors Setup window

Now we want to let ROBOTC know that we have the Parallax Boe Bot Shield attached, so we navigate to the Controller Board tab and under Optional Plugin Shields, we want to select the parallax Boe Bot Shield from the selection box next to the 0.

Parallax Boe Bot Sheild configured

Now we want to tell ROBOTC to configure digital pin 5 as a Digital Output and name it led1. To do this we navigate to the Digital 0-13 tab. in the text field next to "dgtl5" type in led1, then next the text field select Digital Out from the drop-down list.

Digital pins configured

Now that everything is configured we click OK. The Motors and Sensors Setup window will close and your source code file should contain the following code.

#pragma config(CircuitBoardType, typeCktBoardUNO)
#pragma config(PluginCircuitBoard, typeShieldParallaxBoeBot)
#pragma config(UART_Usage, UART0, uartSystemCommPort, baudRate200000, IOPins, dgtl1, dgtl0)
#pragma config(Sensor, dgtl5,  led1,           sensorDigitalOut)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//


Programming task main()

Now that the configuration is done, it is time to add the code to make the LED flash. To do this we want the Arduino to set the output to high, pause for a moment, set the output to low, pause again then repeat. The first step to doing this is to crate a task main() to run everything.

#pragma config(CircuitBoardType, typeCktBoardUNO)
#pragma config(PluginCircuitBoard, typeShieldParallaxBoeBot)
#pragma config(UART_Usage, UART0, uartSystemCommPort, baudRate200000, IOPins, dgtl1, dgtl0)
#pragma config(Sensor, dgtl5,  led1,           sensorDigitalOut)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//
 
task main()
{
 
}

Now we want the pin to be set High and pause for a second. To do this we use the following code.

//turn the LED on
SensorValue[led1] = true;
 
//wait 1 second
wait1Msec(1000);

We now need to turn the LED off then pause again. By setting the value to false instead of true in the above code, the LED will turn off. Using that information, the following code will turn the LED on for one second, then turn it off and wait another second before continuing.

//turn the LED on
SensorValue[led1] = true;
 
//wait 1 second
wait1Msec(1000);
 
//turn the LED off
SensorValue[led1] = false;
 
//wait 1 second
wait1Msec(1000);

We want this to happen indefinitely so we surround the previous code with a while(true) loop, and insert the code into the task main() and end up with the program

#pragma config(CircuitBoardType, typeCktBoardUNO)
#pragma config(PluginCircuitBoard, typeShieldParallaxBoeBot)
#pragma config(UART_Usage, UART0, uartSystemCommPort, baudRate200000, IOPins, dgtl1, dgtl0)
#pragma config(Sensor, dgtl5,  led1,           sensorDigitalOut)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//
 
task main()
{
  while(true) //repeat indefinitely
  {
    //turn the LED on
    SensorValue[led1] = true;
 
    //wait 1 second
    wait1Msec(1000);
 
    //turn the LED off
    SensorValue[led1] = false;
 
    //wait 1 second
    wait1Msec(1000);
  }
}