tijdvertraging op schemerschakelaar

algemene C code
Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: tijdvertraging op schemerschakelaar

Berichtdoor shooter » 28 Aug 2019, 23:39

Je kunt een analoge waarde uitsturen op een aantal pinnen, 3,5,9,11 op een standaard UNO. Dat is dan een PWM signaal. daar kun je dus direct een dimmer op gebruiken.
paul deelen
shooter@home.nl

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: tijdvertraging op schemerschakelaar

Berichtdoor Koepel » 29 Aug 2019, 10:10

Ik denk dat ik de verwarring begrijp.
Je begon over een cosinus, dus ik dacht aan de helderheid op een vloeiende manier wilde wijzigen.
Maar je wilt alleen maar van die felle led af.

Je hebt toch wel een weerstand bij de led ?
Hoe groot is die ? Kun je die groter maken ?
Kun je er een foto van maken ?

Als die led vast op een module zit, dan kun je die led gaan dimmen.
Nu hebt digitalWrite() voor de led. Die zet de led 'aan' of 'uit'.
Dat hoef je alleen maar te wijzigen in analogWrite(), dan kun je de helderheid kiezen van 0 (helemaal uit) tot en met 255 (vol aan).
Je hebt natuurlijk wel een pin nodig die PWM aan kan zoals we al schreven.

Om iets te maken is het handig om een onderdeel eerst uit te proberen.
Dat doen professionele programmeurs, dus waarom jij niet ;)

Je zou een kleine test-sketch kunnen maken, om te kijken of het werkt.
Je hebt een Arduino Mega 2560. Lees eerst eens de referentie van analogWrite(): https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/.

Dan een klein testje:
Code: Alles selecteren
void setup()
{
  pinMode( 10, OUTPUT);
}

void loop()
{
  analogWrite( 10, 0);      // pin 10, helderheid 0...255.
  delay( 600);
  analogWrite( 10, 50);  // pin 10, helderheid 0...255.
  delay( 600);
}


Laat me eerst weten hoe groot de weerstand is die je gebruikt voor de led. Straks ga je misschien de led dimmen terwijl er geen weerstand bij is, dan kan het alsnog stuk gaan.

Berichten: 27
Geregistreerd: 06 Sep 2017, 23:51

Re: tijdvertraging op schemerschakelaar

Berichtdoor robmulder » 01 Sep 2019, 23:48

[attachment=0]phpoEj7XRPM[1].jpg[/attachment]

als eerst boys thans voor support ik ben er verder mee gekomen.
dit is de pwm dimmer die ik ga aansturen.

ik heb de code aangepast zodat bij donker de dimmer in komt op een vaste waarde
en weer uit gaat bij licht en dan op o gedimd staan

dit is de code geworden

nt sensorPin = A0; // select the input pin for ldr
int sensorValue = 0; // variable to store the value coming from the sensor
const int Light = 13;
int schemer = 0;
const unsigned long Vertraging = 5000; // tijdvertraging in milliseconden (testen)
unsigned long timer1 = 0;
unsigned long timer2 = 0;

void setup() {
//Wire.begin();
Serial.begin(9600);
pinMode(Light, OUTPUT);

}

void loop() {


sensorValue = analogRead(sensorPin); // read the value from the sensor
Serial.println(sensorValue); //prints the values coming from the sensor on the screen

Serial.print("schemer=");
Serial.println(schemer);
Serial.print("timer1=");
Serial.println(timer1);

if (sensorValue < 700 && schemer == 0) { // Bij schemer zakt waarde onder de 700, zo niet timer1 nog uit.
if (timer1 != 0) { // Kijkt of timer1 waarde > 0 heeft, zo niet timer "aan"
if ((millis() - timer1) > Vertraging) { // Zo ja, timer loopt en na 120 seconden (test = 5) wordt schemer "1"
schemer = 1; // het is schemer
timer1 = 0; // timer werk is klaar
}
} else {
timer1 = millis(); // timer aanzetten (timer1 wordt huidige tijd)
}
}

if (sensorValue > 750 && schemer == 1) { // Bij dageraad stijgt waarde boven de 750, zo niet timer2 nog uit.
if (timer2 != 0) { // Kijkt of timer2 waarde > 0 heeft, zo niet timer "aan"
if ((millis() - timer2) > Vertraging) { // Zo ja, timer loopt en na 120 seconden (test = 5) wordt schemer "0"
schemer = 0; // schemer is voorbij
timer2 = 0; // en de timer is ook klaar
}
} else {
timer2 = millis(); // timer aanzetten (timer2 wordt huidige tijd)
}
}

if (schemer == 1) {
analogWrite(Light, 170 );
}

else {
analogWrite(Light, 0);
}

}
Bijlagen
phpoEj7XRPM[1].jpg
phpoEj7XRPM[1].jpg (11.7 KiB) 4379 keer bekeken

Berichten: 27
Geregistreerd: 06 Sep 2017, 23:51

Re: tijdvertraging op schemerschakelaar

Berichtdoor robmulder » 01 Sep 2019, 23:51

dit is de ldr in een speciale behuizing water en lucht dicht , dit omdat door invloed de ldr in waarde gaat veranderen
Bijlagen
phpag6VKVPM[1].jpg
phpag6VKVPM[1].jpg (8.79 KiB) 4379 keer bekeken

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: tijdvertraging op schemerschakelaar

Berichtdoor shooter » 02 Sep 2019, 09:19

afgezien dat je de timer !=0 gebruikt want dan gebruik je de timer als digitale waarde, en dat mag wel maar is lastig lezen.
Op een mega is pin 13 mooi analoog, maar op een UNO bijvoorbeeld niet.
Je kunt dus veel meer met je schemerschakelaar als dat je nu doet.
paul deelen
shooter@home.nl

Vorige

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 13 gasten