Making an LED flash
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.
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.
You need to let ROBOTC know that we have the Parallax Boe Bot Shield attached, so navigate to the Controller Board tab and under Optional Plugin Shields and select the parallax Boe Bot Shield from the selection box next to the 0.
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 select Digital Out from the drop down list next the text field.
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); } } |



