ldr
30 berichten
• Pagina 2 van 3 • 1, 2, 3
Re: ldr
Ik denk dat je de compiler onderschat.
Om de de sensorValue < SCHEMER_ON mag je haakjes plaatsen maar is niet verplicht.
het eerste wat een compiler doet met formules is via herschrijf regels de haakje verwijderen.
(sensorValue < SCHEMER_ON || sensorValue > SCHEMER_OFF)
Deze regel wordt zonder haakjes herschreven als:
sensorValue, SCHEMER_ON, < , sensorValue, SCHEMER_OFF, > , ||
Het extra plaatsen van haakje is niet verboden maar kan ook fouten veroorzaken.
Om de de sensorValue < SCHEMER_ON mag je haakjes plaatsen maar is niet verplicht.
het eerste wat een compiler doet met formules is via herschrijf regels de haakje verwijderen.
(sensorValue < SCHEMER_ON || sensorValue > SCHEMER_OFF)
Deze regel wordt zonder haakjes herschreven als:
sensorValue, SCHEMER_ON, < , sensorValue, SCHEMER_OFF, > , ||
Het extra plaatsen van haakje is niet verboden maar kan ook fouten veroorzaken.
Advertisement
Re: ldr
#include <Time.h>
#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68// vast ingestelde waarden
#define SCHEMER_ON 10
#define SCHEMER_OFF 25
#define VERTRAGING 5000
unsigned long timer = 0;
int sensorValue = 0; // variable to store the value coming from the sensor
bool schemer = true; // sensorValue = 0 is schemer = true voor de juiste start.
int Light = 31;
int sensorPin = A0;
void setup() {
Wire.begin();
Serial.begin(9600);
pinMode(Light, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin); // read the value from the sensor
// Indien de sensorValue < SCHEMER_ON of sensorValue > SCHEMER_OFF) dan moet de timer starten of gaan lopen.
if ((sensorValue < SCHEMER_ON || sensorValue > SCHEMER_OFF)){
if (timer == 0){ // Timer aanzetten.
timer = millis();
}
}
else{ // Geen timer tussen SCHEMER_ON en SCHEMER_OFF
timer = 0;
}
// Indien de timer loop maar de tijd is ook verstreken dan schemer zetten en de timer uitzettten.
if (timer != 0 && (millis() - timer) > VERTRAGING)
{
timer = 0;
schemer = sensorValue < 10;
}
if (timer == 1 && (schemer == true))
{
digitalWrite(Light, HIGH);
}
else {
digitalWrite(Light, LOW);
}}
dit is het geworden klopt het?
#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68// vast ingestelde waarden
#define SCHEMER_ON 10
#define SCHEMER_OFF 25
#define VERTRAGING 5000
unsigned long timer = 0;
int sensorValue = 0; // variable to store the value coming from the sensor
bool schemer = true; // sensorValue = 0 is schemer = true voor de juiste start.
int Light = 31;
int sensorPin = A0;
void setup() {
Wire.begin();
Serial.begin(9600);
pinMode(Light, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin); // read the value from the sensor
// Indien de sensorValue < SCHEMER_ON of sensorValue > SCHEMER_OFF) dan moet de timer starten of gaan lopen.
if ((sensorValue < SCHEMER_ON || sensorValue > SCHEMER_OFF)){
if (timer == 0){ // Timer aanzetten.
timer = millis();
}
}
else{ // Geen timer tussen SCHEMER_ON en SCHEMER_OFF
timer = 0;
}
// Indien de timer loop maar de tijd is ook verstreken dan schemer zetten en de timer uitzettten.
if (timer != 0 && (millis() - timer) > VERTRAGING)
{
timer = 0;
schemer = sensorValue < 10;
}
if (timer == 1 && (schemer == true))
{
digitalWrite(Light, HIGH);
}
else {
digitalWrite(Light, LOW);
}}
dit is het geworden klopt het?
Re: ldr
Snel naar de code gekeken maar dit statement is niet goed'
De kans dat de timer == 1 is erg klein.
- Code: Alles selecteren
if (timer == 1 && (schemer == true))
De kans dat de timer == 1 is erg klein.
Re: ldr
- Code: Alles selecteren
if (timer =! 0 && (schemer == true))
thans voor zover
in mijn denkpatroon denk als de timer 1 dan is dus tijd verstreken en hier door de hysterese heeft gehad == is zo als het moet zijn.
ik heb nu dit er van gemaakt.
Re: ldr
- Code: Alles selecteren
#include <Time.h>
#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68// vast ingestelde waarden
#define SCHEMER_ON 10
#define SCHEMER_OFF 25
#define VERTRAGING 5000
unsigned long timer = 0;
int sensorValue = 0; // variable to store the value coming from the sensor
bool schemer = true; // sensorValue = 0 is schemer = true voor de juiste start.
int Light = 31;
int sensorPin = A0;
void setup() {
Wire.begin();
Serial.begin(9600);
pinMode(Light, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin); // read the value from the sensor
// Indien de sensorValue < SCHEMER_ON of sensorValue > SCHEMER_OFF) dan moet de timer starten of gaan lopen.
if ((sensorValue < SCHEMER_ON || sensorValue > SCHEMER_OFF)){
if (timer == 0){ // Timer aanzetten.
timer = millis();
}
}
else{ // Geen timer tussen SCHEMER_ON en SCHEMER_OFF
timer = 0;
}
// Indien de timer loop maar de tijd is ook verstreken dan schemer zetten en de timer uitzettten.
if (timer != 0 && (millis() - timer) > VERTRAGING)
{
timer = 0;
schemer = sensorValue < 10;
}
if (timer =! 0 && (schemer = true))
digitalWrite(Light, HIGH);
} else{
digitalWrite(Light, LOW);
}}}}
ik denk dat ik het onderschat heb wat deze code betreft het is wel een grote leerschool ,maar ik wil deze code complemeren en gaat fout , kan een heledag gaan zoeken , maar kan ook de vraag stellen waar doe ik het fout ?
- sterretjeToo
- Berichten: 62
- Geregistreerd: 05 Feb 2023, 13:30
Re: ldr
wappie schreef: maar kan ook de vraag stellen waar doe ik het fout ?
Ik zou eens accolades gaan tellen en kijken welke bij elkaar horen.
Op dit moment eidigt loop() bij de accolade die hieronder staat en alles daarna is verkeerd
- Code: Alles selecteren
if (timer = !0 && (schemer = true))
digitalWrite(Light, HIGH);
}
Op deze manier ziet het er all een stuke beter uit
- Code: Alles selecteren
if (timer = !0 && (schemer = true))
{
digitalWrite(Light, HIGH);
}
else
{
digitalWrite(Light, LOW);
}
}
}
}
Je hebt nog steeds een paar sluit accolades teveel.
Je kunt tools → autoformat gebruiken om dit soort problemen te vinden.
Re: ldr
Pas op want
Het juiste statement is
- Code: Alles selecteren
if (timer =! 0)
Het juiste statement is
- Code: Alles selecteren
if (timer != 0)
Re: ldr
- Code: Alles selecteren
#include <Time.h>
#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68// vast ingestelde waarden
#define SCHEMER_ON 10
#define SCHEMER_OFF 25
#define VERTRAGING 5000
unsigned long timer = 0;
int sensorValue = 0; // variable to store the value coming from the sensor
bool schemer = true; // sensorValue = 0 is schemer = true voor de juiste start.
int Light = 31;
int sensorPin = A0;
void setup() {
Wire.begin();
Serial.begin(9600);
pinMode(Light, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin); // read the value from the sensor
// Indien de sensorValue < SCHEMER_ON of sensorValue > SCHEMER_OFF) dan moet de timer starten of gaan lopen.
if ((sensorValue < SCHEMER_ON || sensorValue > SCHEMER_OFF)){
if (timer == 0){ // Timer aanzetten.
timer = millis();
}
}
else{ // Geen timer tussen SCHEMER_ON en SCHEMER_OFF
timer = 0;
}
// Indien de timer loop maar de tijd is ook verstreken dan schemer zetten en de timer uitzettten.
if (timer != 0 && (millis() - timer) > VERTRAGING)
{
timer = 0;
schemer = sensorValue < 10;
}
if (timer != 0 && (schemer = true))
{
digitalWrite(Light, HIGH);
}
else
{
digitalWrite(Light, LOW);
}
}
heel erg bedankt het werkt , even wat een domme fout van mij zelf
30 berichten
• Pagina 2 van 3 • 1, 2, 3
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten