Lichtsensorgestuurde led - fade aan

Arduino specifieke Software
Berichten: 5
Geregistreerd: 23 Jun 2015, 20:19

Lichtsensorgestuurde led - fade aan

Berichtdoor Maximus » 23 Jun 2015, 22:36

Über-n00b uitdaging: een simpele ledschakeling met lichtsensor.
Licht = blauw aan/rood uit, donker = rood aan/blauw uit.
De vervolgstap: donker = de rode led een fade aan laten doen. Een losse led kan ik wel laten faden, maar zet ik dezelfde code in de loop van de lichtsensor dan is er geen fade maar gaat de led bij een brightness van +-140 ineens aan.

Deze code werkt met de single led testopstelling:

cpp code
int led = 9;           // the pin that the LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup() {
pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
delay(100);
while (brightness < 255) {
Serial.println(brightness);
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
delay(100);
}
brightness = 0;
}


De code voor de setup met de lichtsensor zónder fade die werkt:
cpp code
int lightPin = 0;  //define a pin for Photo resistor

void setup()
{
Serial.begin(9600); //Begin serial communcation
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
}

void loop()
{
// lees de lichtwaarde uit
int lichtWaarde = analogRead(lightPin);
int Rood = 4;
int Blauw = 6;

if (lichtWaarde < 500) {
//het is donker, dus rode led aan, blauw uit
digitalWrite(Rood, HIGH);
digitalWrite(Blauw, LOW);
}
else {
//het is licht, dus rode led uit, blauwe aan
digitalWrite(Rood, LOW);
digitalWrite(Blauw, HIGH);
}
}


Combineer ik de twee stukken in dit:
cpp code
int lightPin = 0;  //define a pin for Photo resistor

void setup()
{
Serial.begin(9600); //Begin serial communcation
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
}

void loop()
{
// lees de lichtwaarde uit
int lichtWaarde = analogRead(lightPin);
int Rood = 4;
int Blauw = 6;

int brightness = 0;
int fadeAmount = 5;

delay(250);
//Serial.println(lichtWaarde);

if (lichtWaarde < 500) { //het is donker
digitalWrite(Blauw, LOW);

while (brightness < 255) {
analogWrite(Rood, brightness);
Serial.println(brightness);
delay(100);
brightness = brightness + fadeAmount;
}

//digitalWrite(Rood, HIGH);
}
else { //het is licht
digitalWrite(Rood, LOW);
digitalWrite(Blauw, HIGH);
}
}


Zodra het donker is gaat de blauwe led uit, maar de rode led gaat pas branden bij een brightness van 140. Voor zover ik kan zien wordt ie niet brighter maar dan durf ik niet te garanderen. Zodra brightness 255 is bereikt gaat de rode led weer uit en begint het weer opnieuw.
Ik heb getest met verschillende ledjes maar het resultaat blijft hetzelfde. Voor zover ik kan zien lijkt de schakelijk gewoon te kloppen, maar zit er ergens in de code een onbedoeld bij-effect.

Maak ik een denkfout? Probeer ik dingen bij elkaar te stoppen die niet kunnen/passen?

Advertisement

Berichten: 97
Geregistreerd: 05 Nov 2014, 22:04

Re: Lichtsensorgestuurde led - fade aan

Berichtdoor MarcelK » 23 Jun 2015, 23:41

rode output pen 4 is geen pwm-pin, dus kan je geen brightness van regelen. de led is dan gewoon aan of uit
blauw zit op 6, is wel een pwm-pin, daar is de helderheid wel van te regelen.

Berichten: 5
Geregistreerd: 23 Jun 2015, 20:19

Re: Lichtsensorgestuurde led - fade aan

Berichtdoor Maximus » 24 Jun 2015, 07:03

MarcelK schreef:rode output pen 4 is geen pwm-pin, dus kan je geen brightness van regelen. de led is dan gewoon aan of uit
blauw zit op 6, is wel een pwm-pin, daar is de helderheid wel van te regelen.

Zoiets simpels kan het dus zijn. Hartelijk dank!

Gebruikers-avatar
Berichten: 188
Geregistreerd: 23 Dec 2011, 00:12

Re: Lichtsensorgestuurde led - fade aan

Berichtdoor Duality » 06 Jul 2015, 17:29

Wat gebruik je een Arduino uno?
als je op het bord kijkt zie je bij sommige pinnen golfjes staan,
dat zijn pwm pinnen. dus zo kan je ook op andere bordjes herkennen wat pwm pinnen zijn.

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 78 gasten