ldr en dimmer
4 berichten
• Pagina 1 van 1
ldr en dimmer
hoi hier bij een vraag wellicht simpel maar ik zie het even niet.
als de ldr het relais schakelt omdat het donker is wil ik dat de dimmer (zerro crosing ) de lamp schakelt .
afzonderlijk werken de codes prima , maar nu wil ik ze samen voegen maar het lukt niet om de dimmer aan het werk te krijgen
wat doe ik fout ?
als de ldr het relais schakelt omdat het donker is wil ik dat de dimmer (zerro crosing ) de lamp schakelt .
afzonderlijk werken de codes prima , maar nu wil ik ze samen voegen maar het lukt niet om de dimmer aan het werk te krijgen
wat doe ik fout ?
- Code: Alles selecteren
int AC_LOAD = 12; // Output to Opto Triac pin
int dimming = 128; // Dimming level (0-128) 0 = ON, 128 = OFF
const int ledPin = 39;
const int ldrPin = A0;
int value = 0;
int drempelwaarde = 50;
int hysterese = 25;
# define licht 1
# define donker 0
int situatie = licht;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(ldrPin, INPUT);
Serial.begin(9600);
pinMode(AC_LOAD, OUTPUT);// Set AC Load pin as output
attachInterrupt(0, zero_crosss_int, RISING); // Choose the zero cross interrupt # from the table above
}
//the interrupt function must take no parameters and return nothing
void zero_crosss_int() //function to be fired at the zero crossing to dim the light
{
int dimtime = (75*dimming); // For 60Hz =>65
delayMicroseconds(dimtime); // Wait till firing the TRIAC
digitalWrite(AC_LOAD, HIGH); // Fire the TRIAC
delayMicroseconds(10); // triac On propogation delay
// (for 60Hz use 8.33) Some Triacs need a longer period
digitalWrite(AC_LOAD, LOW); // No longer trigger the TRIAC (the next zero crossing will swith it off) TRIAC
}
void loop()
{
value = analogRead(ldrPin);
Serial.print(value);
Serial.println();
if (situatie == licht && value < drempelwaarde) {
digitalWrite(ledPin, LOW);
situatie = donker;
}
else if (situatie == donker && value > drempelwaarde + hysterese) {
digitalWrite(ledPin, HIGH);
situatie = licht;
}
else if (situatie == donker && value > drempelwaarde + hysterese){
dimming=95;
{
}}}
Advertisement
Re: ldr en dimmer
lk heb een regel aangepast in de loop wat ik vreemd vindt is als ik nu dus de regel "else if (situatie == donker && value > drempelwaarde + hysterese){
dimming=95;
als eerst als vooraarde in loop zet werkt het
, wat wil zeggen dat het licht aangaat , maar met els if niet uit dus
wist niet dat dit zo moest om te laten werken
dimming=95;
als eerst als vooraarde in loop zet werkt het
, wat wil zeggen dat het licht aangaat , maar met els if niet uit dus
wist niet dat dit zo moest om te laten werken
Re: ldr en dimmer
als een triac niet meer aan is dan gaat deze ALTIJD pas bij de volgende zero crossing uit dus eigenlijk doe je het dan dubbel.
in je if statements zul je wel wat meer haakjes moeten gaan gebruiken want < voorwaarde + getal is goede vraag maar de volgorde is niet zo strikt in de compiler
in je if statements zul je wel wat meer haakjes moeten gaan gebruiken want < voorwaarde + getal is goede vraag maar de volgorde is niet zo strikt in de compiler
paul deelen
shooter@home.nl
shooter@home.nl
Re: ldr en dimmer
hoi Paul thanks voor de opmerking , ben aan de slag gegaan en het geheel werkt, een paar opmerkingen maak de Hysterese niet groter dan 10 ant anders gaan de relais klapperen ook heb ik in deze code het is if stament aangepast wnant klopte niet het licht ging aan waneer het uit moest dus hoe kleiner de gemeten aarde hoe sneler het licht aan ging . bij de zerro crossing heb ik de voorwaarden aangepast en werken , moet alleen nog de delay er uit halen maar dat lukt.
de fout die gemaakt is mt de bepalende volgorde zat hem in de dubbele benaming
nog even zerro crossing de perfecte dimmer voor led geen knipperen meer. zie code
#include <Debounce.h>
int AC_LOAD = 12; // Output to Opto Triac pin
int dimming = 128; // Dimming level (0-128) 0 = ON, 128 = OFF
// const int ledPin = 31;
const int ldrPin = A0;
int value = 0;
int drempelwaarde = 15;
int hysterese = 10;
# define licht 1
# define donker 0
int situatie = licht;
byte button1 = 22;// schakelaar garage achterdeur
byte button2 = 24;// schakelaar garage deur
byte button3 = 26;// schakelaar koude keuken
byte button4 = 28;// schakelaar koude keuken nieuwe muur
byte button5 = 30;// schakelaar werkbank
byte button6 = 32;// compersor
byte button7 = 34;// afzuiger
byte button8 = 36;// deur contact achterdeur
byte output1 = 31;// verlichting garage
byte output2 = 33;// verlichting boven werkbank
byte output3 = 35;// verlichting koude keuken
byte output4 = 37;// tempertuur uit gang
byte output5 = 39;//
byte output6 = 41;//
byte output7 = 43;//
byte output8 = 45;// verlihting buiten gestuurd door een ldr
Debounce Button1(button1); // Button1
Debounce Button2(button2); // Button2
Debounce Button3(button3); // Button3
Debounce Button4(button4); // Button4
Debounce Button5(button5); // Button5
Debounce Button6(button6); // Button6
Debounce Button7(button7); // Button7
Debounce Button8(button8); // Button8
void setup() {
//pinMode(ledPin, OUTPUT);
// pinMode(ldrPin, INPUT);
Serial.begin(9600);
pinMode(AC_LOAD, OUTPUT);// Set AC Load pin as output
attachInterrupt(0, zero_crosss_int, RISING); // Choose the zero cross interrupt # from the table above
pinMode(button1, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button2, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button3, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button4, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button5, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button6, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button7, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button8, INPUT_PULLUP); // Watch for the PULLUP
pinMode(output1, OUTPUT);
pinMode(output2, OUTPUT);
pinMode(output3, OUTPUT);
pinMode(output4, OUTPUT);
pinMode(output5, OUTPUT);
pinMode(output6, OUTPUT);
pinMode(output7, OUTPUT);
pinMode(output8, OUTPUT);
}
//the interrupt function must take no parameters and return nothing
void zero_crosss_int() //function to be fired at the zero crossing to dim the light
{
int dimtime = (75*dimming); // For 60Hz =>65
delayMicroseconds(dimtime); // Wait till firing the TRIAC
digitalWrite(AC_LOAD, HIGH); // Fire the TRIAC
delayMicroseconds(10); // triac On propogation delay
// (for 60Hz use 8.33) Some Triacs need a longer period
digitalWrite(AC_LOAD, LOW); // No longer trigger the TRIAC (the next zero crossing will swith it off) TRIAC
}
void loop() {
digitalWrite(output1, Button1.count() % 2);// On/Off each press.
digitalWrite(output2, Button2.count() % 2);// On/Off each press.
digitalWrite(output3, Button3.count() % 2);// On/Off each press.
digitalWrite(output4, Button4.count() % 2);// On/Off each press.
digitalWrite(output5, Button5.count() % 2);// On/Off each press.
digitalWrite(output6, Button6.count() % 2);// On/Off each press.
digitalWrite(output7, Button7.count() % 2);// On/Off each press.
// digitalWrite(output8, Button8.count() % 2);// On/Off each press.
value = analogRead(ldrPin);
Serial.print(value);
Serial.println();
if (situatie == licht && value > drempelwaarde + hysterese){
dimming=128;
}
else if (situatie == donker ) {
dimming=95;
}
if (situatie == licht && value < drempelwaarde) {
digitalWrite(output8, LOW);
situatie = donker;
}
else if (situatie == donker && value > drempelwaarde + hysterese) {
digitalWrite(output8, HIGH);
situatie = licht;
{
}}}
de fout die gemaakt is mt de bepalende volgorde zat hem in de dubbele benaming
nog even zerro crossing de perfecte dimmer voor led geen knipperen meer. zie code
#include <Debounce.h>
int AC_LOAD = 12; // Output to Opto Triac pin
int dimming = 128; // Dimming level (0-128) 0 = ON, 128 = OFF
// const int ledPin = 31;
const int ldrPin = A0;
int value = 0;
int drempelwaarde = 15;
int hysterese = 10;
# define licht 1
# define donker 0
int situatie = licht;
byte button1 = 22;// schakelaar garage achterdeur
byte button2 = 24;// schakelaar garage deur
byte button3 = 26;// schakelaar koude keuken
byte button4 = 28;// schakelaar koude keuken nieuwe muur
byte button5 = 30;// schakelaar werkbank
byte button6 = 32;// compersor
byte button7 = 34;// afzuiger
byte button8 = 36;// deur contact achterdeur
byte output1 = 31;// verlichting garage
byte output2 = 33;// verlichting boven werkbank
byte output3 = 35;// verlichting koude keuken
byte output4 = 37;// tempertuur uit gang
byte output5 = 39;//
byte output6 = 41;//
byte output7 = 43;//
byte output8 = 45;// verlihting buiten gestuurd door een ldr
Debounce Button1(button1); // Button1
Debounce Button2(button2); // Button2
Debounce Button3(button3); // Button3
Debounce Button4(button4); // Button4
Debounce Button5(button5); // Button5
Debounce Button6(button6); // Button6
Debounce Button7(button7); // Button7
Debounce Button8(button8); // Button8
void setup() {
//pinMode(ledPin, OUTPUT);
// pinMode(ldrPin, INPUT);
Serial.begin(9600);
pinMode(AC_LOAD, OUTPUT);// Set AC Load pin as output
attachInterrupt(0, zero_crosss_int, RISING); // Choose the zero cross interrupt # from the table above
pinMode(button1, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button2, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button3, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button4, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button5, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button6, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button7, INPUT_PULLUP); // Watch for the PULLUP
pinMode(button8, INPUT_PULLUP); // Watch for the PULLUP
pinMode(output1, OUTPUT);
pinMode(output2, OUTPUT);
pinMode(output3, OUTPUT);
pinMode(output4, OUTPUT);
pinMode(output5, OUTPUT);
pinMode(output6, OUTPUT);
pinMode(output7, OUTPUT);
pinMode(output8, OUTPUT);
}
//the interrupt function must take no parameters and return nothing
void zero_crosss_int() //function to be fired at the zero crossing to dim the light
{
int dimtime = (75*dimming); // For 60Hz =>65
delayMicroseconds(dimtime); // Wait till firing the TRIAC
digitalWrite(AC_LOAD, HIGH); // Fire the TRIAC
delayMicroseconds(10); // triac On propogation delay
// (for 60Hz use 8.33) Some Triacs need a longer period
digitalWrite(AC_LOAD, LOW); // No longer trigger the TRIAC (the next zero crossing will swith it off) TRIAC
}
void loop() {
digitalWrite(output1, Button1.count() % 2);// On/Off each press.
digitalWrite(output2, Button2.count() % 2);// On/Off each press.
digitalWrite(output3, Button3.count() % 2);// On/Off each press.
digitalWrite(output4, Button4.count() % 2);// On/Off each press.
digitalWrite(output5, Button5.count() % 2);// On/Off each press.
digitalWrite(output6, Button6.count() % 2);// On/Off each press.
digitalWrite(output7, Button7.count() % 2);// On/Off each press.
// digitalWrite(output8, Button8.count() % 2);// On/Off each press.
value = analogRead(ldrPin);
Serial.print(value);
Serial.println();
if (situatie == licht && value > drempelwaarde + hysterese){
dimming=128;
}
else if (situatie == donker ) {
dimming=95;
}
if (situatie == licht && value < drempelwaarde) {
digitalWrite(output8, LOW);
situatie = donker;
}
else if (situatie == donker && value > drempelwaarde + hysterese) {
digitalWrite(output8, HIGH);
situatie = licht;
{
}}}
4 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 7 gasten