Go Down

### Topic: formula per semi onda o idee per lampada rgb (Read 341 times)previous topic - next topic

#### boschi

##### Aug 02, 2014, 12:43 am
salve a tutti, sto creando lo sketch per una lampada rgb, al momento ho questo sketch:

Quote

// fade + white button for rgb lamp

int button = 8;

int ledr = 9; // the pin that the LED is attached to
int ledg = 10;
int ledb = 11;

int brightnessr = 10;    // how bright the LED is
int brightnessg = 125;
int brightnessb = 250;

int val = 0; // per il bottone
int old_val = 0;  // for debouncing system
int state = 0;    // for debouncyng system

int fadeAmountr = 1;   // how many points to fade the LED by
int fadeAmountg = 2;
int fadeAmountb = 3;
// the setup routine runs once when you press reset:
void setup()  {
// declare pin 9 to be an output:
pinMode(ledr, OUTPUT);
pinMode(ledg, OUTPUT);
pinMode(ledb, OUTPUT);

pinMode(button, INPUT);

void loop()  {
val = digitalRead(button);  // debouncing system
if ((val == HIGH) && (old_val == LOW)){
state = 1 - state;
}

old_val = val;

if (state == 1){          //stop debouncing system

analogWrite(ledr, 250);
analogWrite(ledg, 250);
analogWrite(ledb, 250);
}

else{

analogWrite(ledr, brightnessr);  // set the brightness
analogWrite(ledg, brightnessg);
analogWrite(ledb, brightnessb);

brightnessr = brightnessr + fadeAmountr;  // change the brightness for next time through the loop:
brightnessg = brightnessg + fadeAmountg;
brightnessb = brightnessb + fadeAmountb;

// reverse the direction of the fading at the ends of the fade:
if (brightnessr <= 10 || brightnessr >= 250)
if (brightnessg <= 10 || brightnessg >= 250)
if (brightnessb <= 10 || brightnessb >= 250)

// wait for 30 milliseconds to see the dimming effect
delay(30);
}
}

tralasciando il casino o le note poco ordinate, stavo pensando che così non otterrò mai (quasi) tutti i colori in modo ciclico, ma anche semplicemente i colori di base non lì otterrò mai. come potrei fare a ottenerli (quasi) tutti  in modo ciclico?

#### tazzo

#1
##### Aug 02, 2014, 09:36 am
Il classico errore che vedo in progetti come questo è proprio nel dimming, l'occhio è come l'orecchio, una variazione lineare della luminosità non viene vista linearmente. Serve un dimming esponenziale per avere l'impresssione di una luminosità crescente in modo lineare.

Go Up