Arduino Cylon Scanning öga
-Arduino UNO
-Röda lysdioder x11
-1K ohm motstånd x11
-En 10K potentiometer
-Massor av hookup wire
Att göra det mer anpassningsbara, och lägga till lite input för det jag lagt till en potentiometer för att kontrollera hastigheten på skanning. Här är en video:
För att bygga banan tar inte mycket tid eller kunskap. Anslut bara lampa katod till mark på en skärbräda. Sedan ansluta varje LED till ett motstånd på en skärbräda och göra motstånd ansluta till Arduino stiften. Anslut dem i ordning med raden av LED-lampor enligt numrerar av stiften. Börja med stift 2 och ansluta dem i ordning. Anslut sedan marken stiftet på Arduino till marken järnväg på skärbräda att ansluta alla lampor till marken. Då alla lampor är ansluten och dags för potentiometer skall anslutas.
Att ansluta potentiometer ta de yttre två kablar och ansluta en till marken och till 5v. Vilket som spelar ingen roll den enda skillnaden är att du kommer att behöva vända potentiometern ett annat sätt. Sedan den mellersta kabeln du vill ansluta till stift A0 på Arduino. Nu anslutningarna är klar och det är dags att gå vidare till programmering!
Här är koden:
int ledPins [] = {
2,3,4,5,6,7,8,9,10,11,12}. göra en matris med pin-koder
int pinCount = 11; variabel för antal lampor
int timer = 10; fördröjning mellan LED på och av
void setup() {
för (int thisPin = 0; thisPin < pinCount; thisPin ++) {//for loop att installera alla stiften i matrisen ledPins
pinMode (ledPins [thisPin], produktionen);
}
}
void loop() {
för (int thisPin = 0; thisPin < pinCount; thisPin ++) {//for slinga för att gå igenom alla lysdioder i en matris och starta dem.
timer = analogRead(A0) / 2; och fram till slutet av raden i en riktning
digitalWrite (ledPins [thisPin], hög);
digitalWrite (ledPins [thisPin] + 1, hög);
digitalWrite (ledPins [thisPin] + 2, hög);
Delay(timer);
timer = analogRead(A0) / 2; Läsa värdet potentiometer och dividera med två för att få dröjsmål
digitalWrite (ledPins [thisPin], låg);
digitalWrite (ledPins [thisPin] + 1, låg);
digitalWrite (ledPins [thisPin] + 2, låg);
timer = analogRead(A0) / 2;
}
för (int thisPin = pinCount - 1; thisPin > = 0, thisPin--) {//for slinga för att gå igenom alla lysdioder igen i motsatt riktning
timer = analogRead(A0) / 2;
digitalWrite (ledPins [thisPin], hög);
digitalWrite (ledPins [thisPin] - 1, hög);
digitalWrite (ledPins [thisPin] - 2, hög);
Delay(timer);
timer = analogRead(A0) / 2;
digitalWrite (ledPins [thisPin], låg);
digitalWrite (ledPins [thisPin] - 1, låg);
digitalWrite (ledPins [thisPin] - 2, låg);
timer = analogRead(A0) / 2;
}
}