FunShield, en Arduino pedagogiska plattform (13 / 13 steg)
Steg 13: Exempel på komponent Integration
Du är klar! Jag antar att allt som är kvar är att ge dig en skonsam push i rätt riktning. Låt oss ta en titt på exemplet skiss kallas "FS_01_LED.ino":
Först måste vi ange vi vill använda den FunShield bibliotek, och instanciate ett FunShield objekt kallas "fs":
sätter upp och initiera FunShield
#include < FunShield.h >
#include < Wire.h > / / kräver för I2C kommunikation
FunShield fs; Instanciate FunShield instans
Ett par enkla variabler att hjälpa oss:
variabeldeklarationer
int ledde = 0; Kan vara någon ledde från 0 till 7
int fördröjningstid = 1000; Fördröjning i millisekunder
Eftersom FunShield biblioteket hanterar alla setup, kan funktionen setup() vara tomt. Jag brukar ad del kod för att se vad som händer via konsolen:
void setup() {
Serial.BEGIN(9600); Installationsprogrammet för seriell kommunikation för felsökning
Serial.println("FS_01_LED.ino");
}
Och nu till den viktigaste loopen:
void loop() {
LED (ledde, högt); Aktivera LED
Delay(delayTime);
LEDDE (led, låg); Inaktivera LED
Delay(delayTime);
}
Du bör erkänna detta som grundläggande Arduino "blink" skissen, bara använda FunShield LED() funktion i stället för digitalWrite().
Kan sätta i en for-loop så vi kan slå alla lampor på och av.
void loop() {
för (ledde = 0; ledde < 8; ledde ++) {
LED (ledde, högt); Aktivera LED
Delay(delayTime);
LEDDE (led, låg); Inaktivera LED
}
}
Du kan sänka din fördröjningstid värde så det inte tar en full 8 sekunder att korsa lysdioderna.
Nu, hur kunde vi få lampan att vända riktning när den når slutet? En annan for-loop kanske?
void loop() {
för (ledde = 0; ledde < 8; ledde ++) {
LED (ledde, högt); Aktivera LED
Delay(delayTime);
LEDDE (led, låg); Inaktivera LED
}
för (ledde = 6; ledde > 0; ledde--) {
LED (ledde, högt); Aktivera LED
Delay(delayTime);
LEDDE (led, låg); Inaktivera LED
}
}
Meddelande jag börja tillbaka på ledde #6 eftersom ledde #7 var redan upplyst av första för loop. Jag stannar också andra slingan på ledde #1 eftersom den andra for-loop hanterar det också.
Vad händer om vi vill lägga till en hörbar ledtråd som lätta förändringar riktning? Här är där skönheten i biblioteket kommer händig. Utan att behöva leta upp pin-koder. Bara anropa funktionen speaker()
void loop() {
för (ledde = 0; ledde < 8; ledde ++) {
LED (ledde, högt); Aktivera LED
Delay(delayTime);
LEDDE (led, låg); Inaktivera LED
}
högtalare (440, 10); kort pip
för (ledde = 6; ledde > 0; ledde--) {
LED (ledde, högt); Aktivera LED
Delay(delayTime);
LEDDE (led, låg); Inaktivera LED
}
högtalare (880, 10); kort pip
}
Ett sista knep att kasta in. Vad sägs om vi variera hastigheten på LED utifrån trim potentiometer värdet? Piece of cake! Bara ändra variabeln fördröjningstid till trim () -funktionen:
void loop() {
för (ledde = 0; ledde < 8; ledde ++) {
LED (ledde, högt); Aktivera LED
Delay(trim()); Läs potentiometer för att bestämma fördröjningstiden.
LEDDE (led, låg); Inaktivera LED
}
högtalare (440, 10); kort pip
för (ledde = 6; ledde > 0; ledde--) {
LED (ledde, högt); Aktivera LED
Delay(trim());
LEDDE (led, låg); Inaktivera LED
}
högtalare (880, 10); kort pip
}
Wow, det var lätt! Du har till grund för en cool 2-dimension Pong spel. Nu gå ut och ha kul!