Jag skulle vilja ha två röda LED som blinkar med frekvens varierbart mellan 10 sekunder och 1 minut och med varierbar lystid. Drivna med en liten batteripack.
Ställde en fråga till Copilot:
Jag önskar alltså följande: Två lysdioder som blinkar mellan var 5:e sekund och 1 minut, justerbar tid. Blinkningens längd mellan 0,5 - 2 sekunder och dimningens avtagande mellan 0,1 och 1 sekund. Till detta behövs 3 trimpotentiometrar om jag förstått det rätt.
Svaret jag fick:
Perfekt, då sätter vi ihop en lösning som uppfyller dina krav! Du har rätt att vi kommer att behöva 3 trimpotentiometrar för att justera blinktiden, blinkningslängden och dimningens avtagande tid. Här är en fullständig lösning med två lysdioder och en Arduino.
Komponenter:
Två lysdioder (LED)
Två motstånd (220 ohm)
Tre trimpotentiometrar
En mikrocontroller (Arduino)
Ett litiumjonbatteri eller en batterihållare med AA-batterier (3,7V eller 5V)
En strömförsörjning (batteripack)
Steg-för-steg instruktioner:
Kopplingsschema:
Anslut anoden (den längre pinnen) på varje lysdiod till PWM-kapabla digitala pinnar på Arduino (t.ex. Pin 9 och Pin 10).
Anslut katoden (den kortare pinnen) på varje lysdiod till mark (GND) genom ett motstånd (220 ohm).
Anslut trimpotentiometrarna enligt följande:
För blinktiden:
Anslut en av potentiometerns yttre ben till 5V på Arduino.
Den andra yttre benet till GND.
Den mittersta benet (sveparen) till en analog ingång på Arduino (t.ex. A0).
För blinkningslängden:
Anslut en av potentiometerns yttre ben till 5V på Arduino.
Den andra yttre benet till GND.
Den mittersta benet (sveparen) till en analog ingång på Arduino (t.ex. A1).
För dimningens avtagande tid:
Anslut en av potentiometerns yttre ben till 5V på Arduino.
Den andra yttre benet till GND.
Den mittersta benet (sveparen) till en analog ingång på Arduino (t.ex. A2).
Anslut batteripacken till Arduinos strömförsörjningspinne (VIN) och mark (GND).
Arduino-kod:
int ledPin1 = 9;
int ledPin2 = 10;
int potPinTime = A0;
int potPinDuration = A1;
int potPinFade = A2;
int potValueTime = 0;
int potValueDuration = 0;
int potValueFade = 0;
int delayTime = 0;
int blinkDuration = 0;
int fadeTime = 0;
int brightness = 0;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(potPinTime, INPUT);
pinMode(potPinDuration, INPUT);
pinMode(potPinFade, INPUT);
}
void loop() {
potValueTime = analogRead(potPinTime); // Läs potentiometerns värde för blinktid
potValueDuration = analogRead(potPinDuration); // Läs potentiometerns värde för blinkningslängd
potValueFade = analogRead(potPinFade); // Läs potentiometerns värde för dimningstid
delayTime = map(potValueTime, 0, 1023, 5000, 60000); // Mappa potentiometerns värde till ett tidsintervall (5 sekunder till 1 minut)
blinkDuration = map(potValueDuration, 0, 1023, 500, 2000); // Mappa potentiometerns värde till ett tidsintervall (0,5 till 2 sekunder)
fadeTime = map(potValueFade, 0, 1023, 100, 1000); // Mappa potentiometerns värde till ett tidsintervall (0,1 till 1 sekund)
// Blink och dimma första lysdioden
digitalWrite(ledPin1, HIGH); // Tänd första LED
delay(blinkDuration); // Vänta blinkdurationen
for (brightness = 255; brightness >= 0; brightness--) { // Dimma LED från full styrka till av
analogWrite(ledPin1, brightness);
delay(fadeTime / 255); // Dimningshastighet
}
delay(delayTime - blinkDuration); // Vänta tiden som är inställd med potentiometern
// Blink och dimma andra lysdioden
digitalWrite(ledPin2, HIGH); // Tänd andra LED
delay(blinkDuration); // Vänta blinkdurationen
for (brightness = 255; brightness >= 0; brightness--) { // Dimma LED från full styrka till av
analogWrite(ledPin2, brightness);
delay(fadeTime / 255); // Dimningshastighet
}
delay(delayTime - blinkDuration); // Vänta tiden som är inställd med potentiometern
}
Denna lösning ger dig möjlighet att justera blinktiden mellan 5 sekunder och 1 minut, blinkningslängden mellan 0,5 och 2 sekunder, och dimningens avtagande tid mellan 0,1 och 1 sekund med hjälp av trimpotentiometrarna.
Låter detta OK? Och hur får man in koden in i Arduino-kretsen?
/ B