ldr met hysterese

algemene C code
Berichten: 30
Geregistreerd: 29 Dec 2020, 12:35

Re: ldr met hysterese

Berichtdoor wappie » 07 Jul 2024, 13:06

ik ben helemaal opnieuw begonnen dan wel met alle input die ik heb gehad jullie zijde hij werkt heel goed tanks allemaal voor de hul, teven is de code ook te gebruiken bij het eten van temperatuur

gr Rob


Code: Alles selecteren
const int ledPin = 46;
const int ldrPin = A0;
int value = 0;
int drempelwaarde = 10;
int hysterese = 35;

# define licht 1
# define donker 0

int situatie = licht;

void setup()
{
  pinMode(ledPin, OUTPUT);
  pinMode(ldrPin, INPUT);
  Serial.begin(9600);
}
 
void loop()
{
  value = analogRead(ldrPin);
  Serial.print(value);
  Serial.println();

  if (situatie == licht && value < drempelwaarde + hysterese) {
    digitalWrite(ledPin, HIGH);
    situatie = donker;
  }

  else if (situatie == donker && value > drempelwaarde + hysterese) {
    digitalWrite(ledPin, LOW);
    situatie = licht;
  }

 
}

Advertisement

Berichten: 30
Geregistreerd: 29 Dec 2020, 12:35

Re: ldr met hysterese

Berichtdoor wappie » 07 Jul 2024, 19:30

nu extra met zero crossing dimmer


Code: Alles selecteren
const int ledPin = 46;
const int ldrPin = A0;
int value = 0;
int drempelwaarde = 10;
int hysterese = 35;

int AC_LOAD = 12;    // Output to Opto Triac pin
int dimming = 128;  // Dimming level (0-128)  0 = ON, 128 = OFF

# define licht 1
# define donker 0

int situatie = licht;

void setup()
{
  pinMode(ledPin, OUTPUT);
  pinMode(ldrPin, INPUT);
 
  pinMode(AC_LOAD, OUTPUT);       // Set the AC Load as output
  attachInterrupt(0, zero_crosss_int, RISING);
 
  Serial.begin(9600);
}
 void zero_crosss_int()  // function to be fired at the zero crossing to dim the light
{
  //Firing angle calculation :: 50Hz-> 10ms (1/2 Cycle)
  //(10000us - 10us) / 128 = 75 (Approx)
  int dimtime = (75*dimming);     
  delayMicroseconds(dimtime);    // Off cycle
  digitalWrite(AC_LOAD, HIGH);   // triac firing
  delayMicroseconds(10);         // triac On propogation delay
  digitalWrite(AC_LOAD, LOW);    // triac Off
}

void loop()
{
  value = analogRead(ldrPin);
  Serial.print(value);
 
  Serial.println();

  if (situatie == licht && value < drempelwaarde + hysterese) {
    digitalWrite(ledPin, HIGH);
    situatie = donker;
  }

  else if (situatie == donker && value > drempelwaarde + hysterese) {
    digitalWrite(ledPin, LOW);
    situatie = licht;
 
if (situatie == licht && value < drempelwaarde + hysterese) {
    dimming=9 ;
    situatie = donker;
  }

   
else if (situatie == licht && value < drempelwaarde + hysterese) {
    dimming=128 ;
    situatie = licht;
  }
  }}[b][/b]

Berichten: 30
Geregistreerd: 29 Dec 2020, 12:35

Re: ldr met hysterese

Berichtdoor wappie » 09 Jul 2024, 08:22

Toch nog een vraag zou bij het gebruik
define licht 1
# define donker 0

Niet beter boolen te gebruiken?

Berichten: 89
Geregistreerd: 02 Nov 2022, 13:03

Re: ldr met hysterese

Berichtdoor ThHe » 13 Jul 2024, 00:18

Buiten dat je inderdaad beter een boolean kan gebruiken is het volgende stukjes code vreemd.

Code: Alles selecteren
 else if (situatie == donker && value > drempelwaarde + hysterese) {
    digitalWrite(ledPin, LOW);
    situatie = licht;               // situatie wordt licht ??????
   // <<<< hier mis je een waarschijnlijk een haakje
   // Rest wordt nooit uitgevoerd!!




Code: Alles selecteren
   // Hier is de if conditie dezelfde als de else.
    if (situatie == licht && value < drempelwaarde + hysterese) {
      dimming=9 ;
      situatie = donker;
   }
   else if (situatie == licht && value < drempelwaarde + hysterese) {

Vorige

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 11 gasten