8-LED Larson Scanner med Arduino
Minsta reservdelslista:
(1) Arduino Duemilanove (eller motsvarande / kompatibel)
(8) LED av ditt val. Jag använde 5mm T1-3/4 120-180 graders vatten rena 1500mcd ren grön LCD.
(8) 100 ohm 1/8 watt (minst) motstånd. Jag använde (4) 330 ohm 1/4 watt, och (4) 450 ohm 1/4 watt, bara för att det är vad jag hade liggande. Jag ser ingen skillnad i ljusstyrka mellan två.
(1) 10 k potentiometer för att förstora.
(1) projektet bakbord, Lödfritt "push-in" stil.
(11) 4 tums längder av hookup wire , helst fast kärna med konserverad tips. Tvinnad tråd fungerar, men är bara mer irriterande. Jag använde förmonterade breadboardinging ledningar som kom i ett kit.
Jag skrev inte skissen personligen, men ganska modifierat någon annan 's för att passa mina behov. Det finns möjlighet att lägga till en knapp som jag inte använder.
Skiss för Arduino är följande:
CONST int buttonPin = 2;
CONST int ledPin1 = 13.
int buttonState = 0;
int lysdioder [] = {3, 4, 6, 7, 8, 9, 10, 11};
#define NUMBER_OF_LEDS (sizeof(leds)/sizeof(int))
booleska larson [] [NUMBER_OF_LEDS] = {
{HÖG, LÅG, LÅG, LÅG, LÅG, LÅG, LÅG, LÅGT},
{LÅG, HÖG, LÅG, LÅG, LÅG, LÅG, LÅG, LÅGT},
{LÅG, LÅG, HÖG, LÅG, LÅG, LÅG, LÅG, LÅGT},
{LÅG, LÅG, LÅG, HÖG, LÅG, LÅG, LÅG, LÅGT},
{LÅG, LÅG, LÅG, LÅG, HÖG, LÅG, LÅG, LÅGT},
{LÅG, LÅG, LÅG, LÅG, LÅG, HÖG, LÅG, LÅGT},
{LÅG, LÅG, LÅG, LÅG, LÅG, LÅG, HÖG, LÅG},
{LÅG, LÅG, LÅG, LÅG, LÅG, LÅG, LÅG, HÖG},
{LÅG, LÅG, LÅG, LÅG, LÅG, LÅG, HÖG, LÅG},
{LÅG, LÅG, LÅG, LÅG, LÅG, HÖG, LÅG, LÅGT},
{LÅG, LÅG, LÅG, LÅG, HÖG, LÅG, LÅG, LÅGT},
{LÅG, LÅG, LÅG, HÖG, LÅG, LÅG, LÅG, LÅGT},
{LÅG, LÅG, HÖG, LÅG, LÅG, LÅG, LÅG, LÅGT},
{LÅG, HÖG, LÅG, LÅG, LÅG, LÅG, LÅG, LÅGT},
};
#define ramar (sizeof(larson)/(sizeof(larson[0])))
int sensorPin = 0;
void setup() {
pinMode (ledPin1, produktionen);
pinMode (buttonPin, ingång);
för (int ledde = 0; ledde < NUMBER_OF_LEDS; ledde ++) {
pinMode (lysdioder [ledde], produktionen);
}
}
void loop() {
buttonState = digitalRead(buttonPin);
om (buttonState == hög) {
digitalWrite (ledPin1, hög);
}
annat {
lång tid = millis();
för (int ram = 0; ram < ramar; ram ++) {
för (int ledde = 0; ledde < NUMBER_OF_LEDS; ledde ++) {
digitalWrite (lysdioder [ledde], larson[frame][led]);
}
int sensorValue = map(analogRead(sensorPin), 0, 1023, 0, 1000);
medan (sensorValue > = (millis() - tid)) {
sensorValue = analogRead(sensorPin);
}
tid = millis();
}
}
}