Arduino for beginners – functions

When we create a function, it must be given a name. The naming convention for functions is the same as for variables:

•The function name can be made up of alphanumeric characters (A to Z; a to z; 0 to 9) and the underscore (_).
•The function name may not start with a number
•A function name must not be used that is the same as a language keyword or existing function.

A function must have a return type. If teh example function does not return anything, it will have a return type of void.

The function body is made up of a variety of statements placed between braces {}.

1) each function must have a unique name,
2) the function name is followed by parentheses ()
3) functions have a return type, e.g. void,
4) the body of a function is enclosed in opening and closing braces {}.

To call the function, you use the function name followed by opening and closing parentheses and then put a semi colon after it.

There are advantages of using functions is that they avoid having to write the same code over and over again. Every time you call a function, we are just reusing code that has been written once.

If you were to write code that say performed the same task 5 times then if you wished to update this for some reason you would have to modify the code in 5 places but if you were to use a function and call it 5 times then all you have to do is modify the function. Functions can be used to break a sketch up into pieces which make it easier to understand.

We are using the following circuit in the example later

Arduino Uno and RGB LED_bb
Code Examples

We will take some of the code we created in previous tutorials and adapt this to use functions instead

 

int redled = 11;
int blueled = 10;
int greenled = 9;
 
 
void setup() 
{
pinMode(redled, OUTPUT); //set the LED pin as an output
pinMode(blueled, OUTPUT); //set the LED pin as an output
pinMode(greenled, OUTPUT); //set the LED pin as an output
}
 
void loop() 
{
int i = 1;
AllOff();
delay(1000);
 
while(i<=3)
{
switch (i) 
{
case 1:
RedOn();
delay(1000);
break;
case 2:
BlueOn();
delay(1000);
break;
case 3:
GreenOn();
delay(1000);
break;
default: 
break;
}
i++;
}
}
 
void AllOff()
{
digitalWrite(redled, HIGH); // red led off
digitalWrite(blueled, HIGH); //blue led off
digitalWrite(greenled, HIGH); //green led off
}
 
void RedOn()
{
digitalWrite(redled, LOW); // red led on
digitalWrite(blueled, HIGH); //blue led off
digitalWrite(greenled, HIGH); //green led off
}
 
void BlueOn()
{
digitalWrite(redled, HIGH); // red led off
digitalWrite(blueled, LOW); //blue led on
digitalWrite(greenled, HIGH); //green led off
}
 
void GreenOn()
{
digitalWrite(redled, HIGH); // red led off
digitalWrite(blueled, HIGH); //blue led off
digitalWrite(greenled, LOW); //green led on
}