Hallo zusammen, habe einen Spannungsregler in meine Word Uhr gemacht, jetzt leuchtet sie bei hellen Lichtverhältnissen genau richtig, aber wenn es dunkel ist, ist sie zu hell. Da ich mich mit diesen Codes nicht so gut auskenne, hätte ich eine kleine Bitte für euch. Wo kann ich in dieser Datei einstellen, das bei Dunkelheit die Lampe dunkler leuchtet als in der Standardeinstellung? Hier der Link zur Datei: http://www.christians-bastel-laden.de/DOWNLOADS/Qlockthree_v3.2.1.zip Ich wäre euch sehr dankbar!
In Configuration.h
1 | /*
|
2 | * Sollen die Grenzwerte vom LDR automatisch angepasst werden? Bei einem Neustart der QlockTwo kann
|
3 | * das Display flackern, dann muss man einmal ueber den LDR 'wischen', damit er verschiedene
|
4 | * Messwerte bekommt. Ohne AUTOSCALE werden die manuellen Min-/Max-Werte genommen.
|
5 | * Default: eingeschaltet.
|
6 | */
|
7 | #define LDR_AUTOSCALE
|
8 | #define LDR_MANUAL_MIN 0
|
9 | #define LDR_MANUAL_MAX 1023
|
das müssten die Werte sein. Allerdings ist im Code eine Auto-Kalibrierung vorgesehen
1 | LDR::LDR(byte pin) { |
2 | _pin = pin; |
3 | _meanpointer = 0; |
4 | _lastValue = 0; |
5 | _outputValue = 0; |
6 | #ifdef LDR_AUTOSCALE
|
7 | _min = 1023; |
8 | _max = 0; |
9 | #else
|
10 | _min = LDR_MANUAL_MIN; |
11 | _max = LDR_MANUAL_MAX; |
12 | #endif
|
13 | }
|
14 | |
15 | /**
|
16 | * Welchen Wert hat der LDR?
|
17 | */
|
18 | unsigned int LDR::value() { |
19 | unsigned int val = analogRead(_pin); |
20 | if(val != _lastValue) { |
21 | _lastValue = val; |
22 | #ifdef LDR_AUTOSCALE
|
23 | if(val < _min) { |
24 | _min = val; |
25 | }
|
26 | if(val > _max) { |
27 | _max = val; |
28 | }
|
29 | #else
|
30 | val = constrain(val, _min, _max); |
31 | #endif
|
32 | unsigned int mapVal = map(val, _min, _max, 100, 0); |
33 | DEBUG_PRINT(F(" _min: ")); |
34 | DEBUG_PRINT(_min); |
35 | DEBUG_PRINT(F(" _max: ")); |
36 | DEBUG_PRINT(_max); |
37 | DEBUG_PRINT(F(" ldr: ")); |
38 | DEBUG_PRINT(val); |
39 | DEBUG_PRINT(F(" mapValue: ")); |
40 | DEBUG_PRINTLN(mapVal); |
41 | DEBUG_FLUSH(); |
42 | // glaetten
|
43 | _meanvalues[_meanpointer] = mapVal; |
44 | _meanpointer++; |
45 | if(_meanpointer == LDR_MEAN_COUNT) { |
46 | _meanpointer = 0; |
47 | }
|
48 | long ret = 0; |
49 | for(byte i=0; i<LDR_MEAN_COUNT; i++) { |
50 | ret += _meanvalues[i]; |
51 | }
|
52 | _outputValue = (unsigned int)(ret/LDR_MEAN_COUNT); |
53 | }
|
54 | return _outputValue; |
55 | }
|
die auch defaultmässig eingeschaltet ist
1 | #define LDR_AUTOSCALE
|
so wie ich das sehe, ist das so gedacht, dass die Uhr nach und nach die maximale Helligkeit und die minimale Helligkeit feststellt und den Wertebereich entsprechend auf 0 bis 100% ummappt. Das wäre hier
1 | unsigned int mapVal = map(val, _min, _max, 100, 0); |
der Wert wird dann direkt an den LED Treiber weitergegeben. d.h. du könntest mal versuchen, die 100% hier etwas zu verkleinern (oder je nachdem was dann in der eigentlichen Ansteuerung passiert, die 0% etwas anheben)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.