Pages: [1]   Go Down
Author Topic: hulp gevraagd met Led dagrijlichten projectje.  (Read 1144 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ik heb 2 dagrijleds voor in de auto welke ik wil schakelen via een arduino.
Heb ze aangesloten op pwm poort 9 en 10.
Op het moment dat ik stadslicht aanzet van de auto moeten deze dimmen (25%).
Anders moeten ze op 100% branden.
Niet zo heel moeilijk deze code werkt zoals ik wil.
De pushbutton heb ik vervangen door een relais aangesloten op het stadslicht.

Code:
/*
  DRLcontrol
  Using a switch connected to pin 2 to change brightness of 2 drl led lights
  (c) comtech 2014 versie 0.8 BETA
 */
 
const int buttonPin = 2;     // the number of the pushbutton pin
int buttonState = 0;         // variable for reading the pushbutton status
int kleurRgb = 1;     // both are correct
#define LedR 9
#define LedL 10

void setup() {
  pinMode(LedR, OUTPUT);
  pinMode(LedL, OUTPUT);
}


void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // dimm leds :
    analogWrite(LedR, 42); 
    analogWrite(LedL, 42); 
  }
  else {
    // turn LEDs 100% on:
    analogWrite(LedR, 255); 
    analogWrite(LedL, 255); 
  }
}


Maar nu wil ik dat de leds bij het aangaan van 0 naar 100% faden en op het moment dat ze gaan dimmen naar 25% dat ze langzaam terug faden naar 25% en visa versa.
Ik krijg het met een for loop maar niet voor elkaar.
Ze blijven faden van 0 naar 100 en dan weer naar 0 en 100 etc etc.

Heb nu zover deze code daarmee blijft hij aan en uit gaat  smiley-eek

Code:
/*
  DRLcontrol
 Using a switch connected to pin 2 to change brightness of 2 drl led lights
 (c) comtech 2014 versie 0.8 BETA
 */

const int buttonPin = 2;     // the number of the pushbutton pin
int buttonState = 0;         // variable for reading the pushbutton status
int fade = 0;     // both are correct
#define LedR 9
#define LedL 10

void setup() {
  pinMode(LedR, OUTPUT);
  pinMode(LedL, OUTPUT);
}


void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // dimm leds :
    for (fade = 255; fade < 42; fade ++)
    {
      analogWrite(LedL, fade);
      analogWrite(LedR, fade);
      if (fade == 42){      // bail out on sensor detect
        fade = 42;
        break;
      }
      delay(25);
      analogWrite(LedL, fade);
      analogWrite(LedR, fade);
    }   
  }
  else {
    // turn LEDs 100% on:
for (fade = 0; fade < 255; fade ++)
    {
      analogWrite(LedL, fade);
      analogWrite(LedR, fade);
      if (fade == 255){      // bail out on sensor detect
        fade = 255;
        break;
      }
      delay(25);
      analogWrite(LedL, fade);
      analogWrite(LedR, fade);
    }     
  }
}

Wie kan mij helpen??
Logged

Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 68
Posts: 1920
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Allereerst welkom op het forum.

Ik heb niet echt naar je code gekeken o te zien wat ze doet maat men oog viel op dit en dat is zowiezo niet wat jij wil

Code:
for (fade = 255; fade < 42; fade ++)
wat je hier zegt is dat je van 255 tot 42 wilt optellen.
waarschijnlijk wil je aftellen en dan wordt de code

Code:
for (fade = 255; fade < 42; fade --)
Met vriendelijke groet
Jantje
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 217
Posts: 13739
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

of nog waarschijnlijker  smiley-wink
Code:
for (fade = 255; fade >= 42; fade --)
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 68
Posts: 1920
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

of nog waarschijnlijker  smiley-wink
Code:
for (fade = 255; fade >= 42; fade --)
euch .... ja, dat denk ik ook  smiley-eek-blue
Jantje
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

The Netherlands
Offline Offline
Edison Member
*
Karma: 50
Posts: 1673
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hoi.

Jouw code kijkt naar de schakelaar.
Als de schakelaar hoog is (regel 25), worden regels 26 tot en met 39 uitgevoerd.
Anders (regel 40) worden regels 41 tot en met 54 uitgevoerd.

Het probleem is dat er geen andere voorwaarden zijn om die delen uit te voeren.
En dus worden ze steeds maar weer uitgevoerd.
Overigens lees ik in je beschrijving dat de fade steeds heen en weer gaat, maar in je code zie ik dat deze van begin (25 %) tot eind (100 %) loopt, en dan weer naar het begin gaat, of andersom (das afhankelijk van de schakelaar).

Wat je beter kunt doen, is kijken of je de fade al een keer doorlopen hebt.
Wanneer dat het geval is, dan hoef je die niet nog een keer te doen en kun je 'm dus overslaan.

Wat je ook kunt doen, is eindeloos de fade uitrekenen, maar als je aan de boven of ondergrens bent, 'm steeds een stapje terug zetten.
Dan blijft je sketch wel druk, maar de LEDs blijven steken op het nivo dat jij hebt bepaald.

Zoals je ziet, er zijn meerdere mogelijkheden om dit op te lossen.
Soms heeft een iets andere oplossing de voorkeur, zij het om eenvoud van de code, of om efficiëntie van die code.

De delays in je sketch heb ik zogenaamd maar even niet gezien... smiley-roll
Logged

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bedankt voor de tips maar heb het ondertussen maar anders gedaan zonder de for loop .
Mij nog net even te ingewikkeld.
Ben nog niet zo lang met arduino begonnen heb eerst met pic basic gewerkt.

Code:
/*
  DRLcontrol
 Using a switch connected to pin 2 to change brightness of 2 drl led lights
 (c) comtech 2014 versie 1.00
 */

const int buttonPin = 2;     // the number of the button
int buttonState = 0;         // variable for reading the pushbutton status
int brightness = 0;     
#define LedR 9
#define LedL 10

void setup() {
  pinMode(LedR, OUTPUT);
  pinMode(LedL, OUTPUT);
}


void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    analogWrite(LedR, brightness);
    analogWrite(LedR, brightness);
    brightness = brightness - 2;
    // als brightness kleiner is dan 44 niet meer aftellen
    if (brightness < 30) {
      brightness = 30 ;
    }
    // wait for 10 milliseconds to see the dimming effect
    delay(10);     

    analogWrite(LedR, brightness); 
    analogWrite(LedL, brightness);
  }
  else {
    // turn LEDs 100% on:
    analogWrite(LedR, brightness);
    analogWrite(LedR, brightness);
    brightness = brightness + 2;
    // als brightness 254 bereikt stoppen:
    if (brightness > 255) {
      brightness = 255 ;
    }
    // wait for 10 milliseconds to see the dimming effect
    delay(10);     
    analogWrite(LedR, brightness); 
    analogWrite(LedL, brightness); 
  }
}


Logged

Pages: [1]   Go Up
Jump to: