Stap 13: Voorbeeld van integratie van de Component
Je bent klaar! Ik denk dat dat all that's left is om u een zacht duwtje in de goede richting. Neem een blik bij de schets van de voorbeeld genaamd "FS_01_LED.ino":
Eerste plaats moeten wij om aan te geven dat wij gebruik wilt maken van de bibliotheek van de FunShield, en instanciate een FunShield-object aangeduid als "fs":
// sets up and initialize FunShield#include <FunShield.h> #include <Wire.h> // Require for I2C communication FunShield fs; // Instanciate FunShield instance
Een paar eenvoudige variabelen om ons te helpen:
// variable declarationsint led = 0; // Can be any led from 0 to 7 int delayTime = 1000; // Delay time in milliseconds
Aangezien de FunShield-bibliotheek alle de setup verwerkt, kan de Setup functie leeg zijn. Ik meestal ad enkele code om te zien wat er gaande is via de console:
void setup() { Serial.begin(9600); // Setup serial communications for troubleshooting Serial.println("FS_01_LED.ino"); }
En dan nu de hoofdlus:
void loop(){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off delay(delayTime); }
U moet herkennen dit als de fundamentele Arduino "blink" schets, enkel met de FunShield LED() functioneren in plaats van digitalWrite().
Kunt brengen in een for-lus zodat wij alle de LEDs in- en uitschakelen draaien kunnen.
void loop(){ for(led=0; led<8; led++){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off } }
U kunt lager van de waarde van uw delayTime , dus het duurt niet een volledige 8 seconden te doorkruisen de LEDs.
Nu, hoe kunnen we de LED aan richting omkeren wanneer het einde is bereikt? Een ander for-lus misschien?
void loop(){ for(led=0; led<8; led++){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off } for(led=6; led>0; led--){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off } }
Aankondiging begin ik terug op de led #6, omdat onder leiding van #7 werd reeds aangestoken door de eerste lus. Ik stop ook de tweede lus op led #1 omdat de andere for-lus het zo goed behandelt.
Wat als we willen toevoegen een hoorbare aanwijzing als de richting van het licht verandert? Hier is waar de schoonheid van de bibliotheek handig komt. Geen behoefte aan het opzoeken van pincodes. Bel de speaker() -functie
void loop(){ for(led=0; led<8; led++){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off } speaker(440, 10); // short beep for(led=6; led>0; led--){ LED(led, HIGH); // turn LED on delay(delayTime); LED(led, LOW); // turn LED off } speaker(880, 10); // short beep }
Een definitieve truc te gooien in. Hoe zit we variëren de snelheid van de LED op basis van de waarde van de trim potentiometer? Fluitje van een cent! Verander de delayTime variabele gewoon aan de versiering -functie:
void loop(){ for(led=0; led<8; led++){ LED(led, HIGH); // turn LED on delay(trim()); // read potentiometer to determine delay time. LED(led, LOW); // turn LED off } speaker(440, 10); // short beep for(led=6; led>0; led--){ LED(led, HIGH); // turn LED on delay(trim()); LED(led, LOW); // turn LED off } speaker(880, 10); // short beep }
Wow, dat was makkelijk! Hebt u de basis voor een koele 2-dimensie Pong spel. Nu uitgaan en veel plezier!