Pages: [1]   Go Down
Author Topic: PWM Steuerung für LED Riffaquarium Sonnenauf- bzw Untergang  (Read 1156 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset




Hallo,
leider brauche ich Hilfe, da ich nicht selber drauf komme.
Ich habe div.Steuerungen für mein Salzwasserbecken programmiert, soweit funktioniert auch alles, bis auf die Anzeige im LCD Display für den PWM Wert d.h ich möchte gerne den Wert von dem
byte whiteLeds[96] aufgreifen, durch 255 teilen und mal 100 multiplizieren, so das im Display angezeigt wird bei wieviel % die LED Steuerung ist.Ich komme aber nicht an diesen Wert von 0-255 ran.
Für eure Hilfe wäre ich dankbar

CODE
#include
#include
#include

// Next comes variables for white leds, you have to do the same for blues too.
byte pwmWhite = 0;

// Next idea from Dave_uk, thanks (http://www.nano-reef.com/forums/index.php?showtopic=206246)
// Array of pwm values for 15 minute sections
byte whiteLeds[96] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00-03
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00-06
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 06-09
20, 30, 40, 50, 60, 80, 100, 120, 140, 160, 180, 200, // 09-12
220, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, // 12-15
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, // 15-18
240, 220, 200, 180, 160, 140, 120, 100, 80, 80, 80, 60, // 18-21
60, 40, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0 // 21-24
};

byte whiteMaxCurrent = 70; // Percentage of, 70 is 70%, so 1000mA puckbuck is driven at 700mA

// Next the pin for writing
byte whitePin = 11;

void setup() {
// Setup stuff, LCD, pins, RTC etc.
}

void loop() {
// Main loop
getWhitePwm();
analogWrite(whitePin, pwmWhite);
}

void getWhitePwm() {
int tempIndex = 0; // Index for the array containing dimming values for the leds, calculated in 15 mins sectors
long tempTime = 0; // Used to store number of seconds since last midnight

pwmWhite = 0; // Public variable. Reset the value (just to be sure)

tempTime = elapsedSecsToday(now()); // From Time.h, seconds since last midnight, now() is current time

// Check out what is the index of 15 min sections
tempIndex = (tempTime / (SECS_PER_HOUR / 4)); // macro SECS_PER_HOUR from Time.h

// Calculate the PWM value according the index and maximum power we have defined.
pwmWhite = ( whiteLeds[tempIndex] * (whiteMaxCurrent) /100 );

}
Logged

0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3482
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Die verwendeten Datentypen "byte" sind integer typen. D.h. es gibt keine Nachkommastellen. Wenn Du jetzt durch  255 teilst kommst also immer 0 oder 1 raus. Fast immer 0. Danach kannst Du multiplizieren was immer Du willst, es bleibt 0.
« Last Edit: November 06, 2011, 02:02:33 pm by Udo Klein » Logged

Check out my experiments http://blog.blinkenlight.net

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo, danke das ist ja mein Problem, was muß ich tuen damit ich den Aktuellenwert anzeigen kann?
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 263
Posts: 21601
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kopire den whiteLeds wert in eine INT Variable und multipliziere zuerst mit 100 und teile dann durch 255.
Grüße Uwe
Logged

Berlin
Offline Offline
Jr. Member
**
Karma: 0
Posts: 91
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mit Nachkommastellen wär´s   lcd.print(float(Test) / 255 , DEC);
Uwe war leider schneller als ich, wollt aber meine Lösung auch noch zum besten geben...
Logged

Nothing is impossible ^^

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

vielen dank ersteinmal werde es gleich mal probieren. smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vielen Dank, es funktioniert einwandfrei smiley-grin
 Ihr könnt euch garnicht vorstellen was ich schon alles probiert habe und vorallem wie lange schon.
1000 Dank + LG

Logged

Berlin
Offline Offline
Jr. Member
**
Karma: 0
Posts: 91
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Für´s nächste mal:

http://arduino.cc/en/Reference/HomePage     smiley-twist

Aber wahrscheinlich bist du nur hochsprachenverwöhnt -> automatischer Typecast smiley-wink
Logged

Nothing is impossible ^^

Pages: [1]   Go Up
Jump to: