Making an LED flash
To demonstrate how you can use an LED with the Arduino, we are going to have the Arduino make an LED flash.
|
Configuring ROBOTC
Before we can do anything, we need to create a new source file in ROBOTC.Once we have done that you need to tell ROBOTC what type of Arduino you are using. Since you are using the Arduino LEGO base, we 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.
Now we want to let ROBOTC know that we have the DFRobot Motor Shield attached, so we navigate to the Controller Board tab and under Optional Plugin Shields, we want to select the DFRobot Motor from the selection box next to the 0. (Be sure not to select DFRobot Motor (Old) by mistake)
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 to 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, typeShieldDFRobotMotor) #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 in any code is to crate a task main() to run all of the commands.
#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 to command the pin to be set on High (turning the LED on) 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 pin will go back to Low, and 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); } } |



