Go Down

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

boschi

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)
    fadeAmountr = -fadeAmountr ;
   if (brightnessg <= 10 || brightnessg >= 250)
    fadeAmountg = -fadeAmountg ; 
   if (brightnessb <= 10 || brightnessb >= 250)
    fadeAmountb = -fadeAmountb ;  
  
  // 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

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