Hur man använder en Potentiometer för att skapa en variabel hastighet "Knight Rider" med LED (3 / 3 steg)
Steg 3: Och nu för koden...
Återigen ett mycket speciellt tack till Reddit användaren ripred3 för koden här.Vi sätter upp en global uppsättning heltal att hålla pin-koder.
Vi kan sedan loopa igenom dessa lättare vid körning.
Märke vi använder några av analoga stiften som binär utgångar
men vi hoppar över den som vi använder för indata (A0 för läsning av potten).
Stiften heter som börjar inte med ett "A" är digitala-endast stiften.
Vi hoppa över 0 och 1 eftersom det är vanligt att lämna dem gratis eftersom de är
följetongen sända och ta emot stiften på ATMEGA328 chip och är användbara
att använda för felsökning utgång till en seriell monitor, men jag avvika:
int led_pins [15] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
void setup() {
pinMode (A0, indata); ställa in PIN-koden för att läsa potentiometern
nu måste vi ställa in vår LED stift som resultat:
int i;
för (jag = 0; jag < 15; i ++) {
pinMode (led_pins [i], produktionen);
Som standard varje LED till off. Detta förutsätter anoder av lysdioder är anslutna
till produktionen stift (med en 330 ohm motstånd i mellan för strömbegränsning)
och andra sidan av alla lysdioder (katod) är anslutna till marken.
digitalWrite (led_pins [i], låg);
}
}
void loop() {
Vi sätter upp en variabel till index i vårt utbud av pin-koder. Vi kommer som standard det 0 (först
LEDDE) och låta sitt utbud gå från 0 till 14 inclusive (femtonde värdet i vår matris).
heltal index = 0;
Vi behöver också en variabel att berätta vilken riktning vi "studsar" lysdioderna.
Vi ska börja med 1 och använda -1 för att gå åt andra hållet:
int riktning = 1;
samtidigt (1) {
int värde = analogRead(A0); få positionen från 0 till 1023
Vi använder detta värde som antalet millisekunder till fördröjning mellan vidare till mellan LED'S.
Det finns 1000 millisekunder i en sekund så det ger oss ett bra utbud av dröjsmål från 1/1000 till en
lite mer än 1 sekund.
Men först måste vi vända på "nuvarande" LED (den som indexeras av "index"):
digitalWrite (led_pins [index], hög); tur LED pin-hög, '1', + 5v, alla samma sak...
Nu fördröjning för en tid i förhållande till potentiometern. Funktionen "delay()" väntar nummer
millisekunder ge vi innan det återvänder så detta fungerar perfekt:
Delay(Value);
Stäng av strömmen ledde innan framåt:
digitalWrite (led_pins [index], låg);
Vi avancera vårt index nummer så på nästa pass vi pratar om nästa LED:
index += riktning;
Vi inspekterar vårt index för att se om vi är på väg att gå förbi någon ände. Om vi har nått antingen
slutet vi kommer helt enkelt multiplicera riktning med -1 varje gång vi når ena änden eller andra och detta
att växla det från 1 och -1, redo för nästa pass:
om ((index == 0) || (index == 9)) {
riktning * = -1;
}
}
}
Och där har du det. Nu bör du kunna kontrollera din rörliga LED med potentiometern.