Stap 9: Arduino functies
De volgende sketch vervaagt LED van rood naar groen naar blauw naar rood naar groen en zo verder...//RGB LED - fading between colors //pin connections int red = 9; int green = 10; int blue = 11; void setup(){ pinMode(red, OUTPUT); pinMode(blue, OUTPUT); pinMode(green, OUTPUT); } void loop(){ for (int brightness=0;brightness<256;brightness++){ analogWrite(red, 255-brightness); analogWrite(green, brightness); delay(10); } for (int brightness=0;brightness<256;brightness++){ analogWrite(green, 255-brightness); analogWrite(blue, brightness); delay(10); } for (int brightness=0;brightness<256;brightness++){ analogWrite(blue, 255-brightness); analogWrite(red, brightness); delay(10); } }
De schets boven werkt, maar er een heleboel herhaalde code is. We kunnen vereenvoudigen door het schrijven van onze eigen helper functie die verdwijnt van de ene kleur naar een andere kleur. Hier is wat de functie als zal kijken:
VOID fader (int color1, color2 int) {}
voor (int helderheid = 0; helderheid < 256; helderheid ++) {}
analogWrite (color1, 255-helderheid);
analogWrite (color2, helderheid);
Delay(10);
}
}
Laten we onderzoeken deze functie-definitie stuk voor stuk. De functie heet "fader" en duurt twee argumenten. Elk argument is gescheiden door een komma en een type in de eerste regel van de functie-definitie heeft verklaard:
VOID fader (int color1, color2 int) {}
We zien dat de argumenten fader accepteert allebei ints, en we de namen "color1" en "kleur2" als dummy variabelen voor onze functie-definitie gebruiken. De "leegte" verwijst naar het gegevenstype dat de functie retourneert, aangezien onze functie niet terugkrijgt iets (het voert gewoon opdrachten), zetten we het retourtype om te vervallen. Mochten we een functie maakt die twee getallen vermenigvuldigd en het product geretourneerd kan definiëren we het als volgt:
int vermenigvuldiger (int Getal1, getal2 int) {}
int product Getal1 = * getal2;
retourneren product;
}
Merk op hoe we hebt gedeclareerd int als het retourtype hier in plaats van leegte.
De ingewanden van de functie is spul wij voordien hebt gezien. Dat geldt ook voor lus die wij in onze laatste schets waren herhalen, maar de pin nummers zijn vervangen de color1 en kleur2 variabelen. Als we eisen:
Fader (rood, groen);
van de de Arduino loop, de Arduino evalueert de fader functie met color1 = rood en kleur2 = groen.
Om deze alle samen we de schets die met behulp van deze functie als volgt kunnen herschrijven, dit werkt precies hetzelfde als de schets aan de bovenkant van deze stap.
//RGB LED - fading between colors //pin connections int red = 9; int green = 10; int blue = 11; void setup(){ pinMode(red, OUTPUT); pinMode(blue, OUTPUT); pinMode(green, OUTPUT); } void loop(){ fader(red,green); fader(green,blue); fader(blue, red); } void fader(int color1, int color2){ for (int brightness=0;brightness<256;brightness++){ analogWrite(color1, 255-brightness); analogWrite(color2, brightness); delay(10); } }