Nou mensen,
Ik heb mijn sketch aangepast zodat de input_pullup nou een "gewone input" is geworden. Verder heb ik de HIGH's naar LOW gezet omdat als de sensor in rust is, deze 5V uit stuurt en als hij aktief is 0V. Dit werkt nu prima. I zal mijn code even toevoegen.
/*
Trapverlichting met 13 keer inbouw led-spot en ldr om alleen in te schakelen als het donker genoeg is
*/
//LED aansluiting toewijzen
int led1 = 2; // leds 1 t/m 13, toewijzen aan variabele van het type integer met de naam led1 t/m led13
int led2 = 3; // en waardes 2 t/m 10, 13, 44 t/m 46
int led3 = 4;
int led4 = 5;
int led5 = 6;
int led6 = 7;
int led7 = 8;
int led8 = 9;
int led9 = 10;
int led10 = 13;
int led11 = 44;
int led12 = 45;
int led13 = 46;
// sensor aansluiting toewijzen
int b_up = 50; //sensor onderaan de trap, toewijzen aan variabele van het type integer met de naam b_up en waarde 50
int b_down = 51; //sensor bovenaan de trap, toewijzen aan variabele van het type integer met de naam b_down en waarde 51
//helderheid led toewijzen
int brightness = 0; // helderheid led, toewijzen aan variabele van het type integer met de naam brightness en waarde 0
int brightness2 = 255; // helderheid2 led, toewijzen aan variabele van het type integer met de naam brightness2 en waarde 255
//variables
static unsigned active = 0; //wanneer het systeem aktief wordt (standaard ingesteld op 0)
//setup
void setup() {
//Ledpins instellen als output
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);
pinMode(led11, OUTPUT);
pinMode(led12, OUTPUT);
pinMode(led13, OUTPUT);
//Sensoren instellen als input
pinMode(b_up, INPUT); //
pinMode(b_down, INPUT); //
}
//loop
void loop() {
//Variabelen instellen gebasseerd op de staat van de sensoren
int up = digitalRead(b_up); // uitlezen staat van sensor onderaan trap
int down = digitalRead(b_down); // uitlezen staat van sensor bovenaan trap
int sensorValue = analogRead(A0); // uitlezen waarde van lichtsensor op A0 en bewaren in variabele sensorValue
float voltage = sensorValue *(5.0/1023.0); // waarde van sensorValue(0 tot 1023) omzetten in 0 tot 5 en bewaren in variabele voltage
if(voltage <=2){ // wanneer waarde van lichtsensor(voltage) is lager dan of gelijk aan 2, dan..
if (up == LOW) { // kijken of de onderste sensor is geaktiveerd, dan..
if (active == 1 ) {LedOff();} // kijken of active 1 is. Zoja, de functie LedOff uitvoeren. Zoniet...
else { LedOn(); } // de functie LedOn uitvoeren.
}
}
if(voltage <=2){ // wanneer waarde van lichtsensor(voltage) is lager dan of gelijk aan 2 dan...
if (down == LOW) { // kijken of de bovenste sensor is geaktiveerd, dan...
if (active == 1 ) {LedOff();} // kijken of active 1 is. Zoja, de functie LedOff uitvoeren. Zoniet...
else { LedOn(); } // de functie LedOn uitvoeren.
}
}
}
void LedOn() { // Schakelt led's aan bij het naar boven gaan. Deze functie wordt aangeroepen vanuit de code op regel ...
for (int brightness=0; brightness<=255; brightness+=5){ // led's aanschakelen met helderheid vanaf 0 naar 255(volledig aan) in stappen van 5 (dit wordt een FOR-loop genoemd)
analogWrite(led1,brightness); // schakelt led 1 aan met de waarde brightness bepaalt in regel 87. Enzovoort voor alle dertien led's
analogWrite(led2,brightness);
analogWrite(led3,brightness);
analogWrite(led4,brightness);
analogWrite(led5,brightness);
analogWrite(led6,brightness);
analogWrite(led7,brightness);
analogWrite(led8,brightness);
analogWrite(led9,brightness);
analogWrite(led10,brightness);
analogWrite(led11,brightness);
analogWrite(led12,brightness);
analogWrite(led13,brightness);
delay(100); // bepaalt de vertraging tussen de dim-stappen (in milliseconden)
}
active = 1; // zet active op 1 na het inschakelen van de led's. Deze waarde wordt weer gebruikt in de code op regel ..
}
void LedOff(){ // Schakelt led's uit bij het naar boven gaan. Deze functie wordt aangeroepen vanuit de code op regel ...
for (int brightness = 255; brightness >=0; brightness -=5) { // led's uitschakelen met helderheid vanaf 255 naar 0(uit) in stappen van 5
analogWrite(led1,brightness); // schakeld led 1 uit met de waarde brightness bepaalt in regel 104. Enzovoort voor alle dertien led's
analogWrite(led2,brightness);
analogWrite(led3,brightness);
analogWrite(led4,brightness);
analogWrite(led5,brightness);
analogWrite(led6,brightness);
analogWrite(led7,brightness);
analogWrite(led8,brightness);
analogWrite(led9,brightness);
analogWrite(led10,brightness);
analogWrite(led11,brightness);
analogWrite(led12,brightness);
analogWrite(led13,brightness);
delay(100); // bepaalt de vertraging tussen de dim-stappen (in milliseconden)
}
active = 0; // zet active op 0 na het uitschakelen van de led's. Deze waarde wordt weer gebruikt in de code op regel...
}
Nu heb ik het volgende probleem. Als ik na het resetten van de arduino voor de eerste keer door een sensor loop, gaan de led´s netjes aan. Maar na het gedimd opkomen( dmv pwm) gaan ze ook weer uit... en weer aan.. en weer uit.. enz.
Ze mogen pas weer uit gaan als ik nogmaals door een sensor heen loop.
Ik heb wel ontdekt dat de sensor continu geaktiveert wordt als de led´s eenmaal branden. Nu heb ik het vermoeden dat dit wordt veroorzaakt door de pwm uitgangen want als de led´s nog uit zijn is de sensor netjes in rust. De led´s worden aangestuurd dmv van bc547 torren en hebben een aparte 12V voeding waarvan ik de GND heb verbonden met de GND van de arudino.
Iemand suggesties, oplossingen of vragen over dit probleem?
Groeten,
Johnny