PWM High indesiderabile

Salve a tutti,

Sono Brasiliano quindi scusa il mio italiano. Ma va bene.
Il mio problema é questo: ho fatto una programmazione per il controllo di un led rgb. Ma che un picollo problema, quando io accendo il Arduino, le porte 9,10,11 che sono per il pwm accendono anche, però solo per un attimo di tempo. Questo effeto è indesiderabile per me, perche i led rgb lampeggiano in questo attimo di tempo. Che qualque altre modo di cambiare questo ?

Grazie mille,
Scusa mio pessimo italiano.

//Red,Green,Blue value from 0 to 255
void RGB_LED(int Red,int Green,int Blue) {
 analogWrite(9,Red);
 analogWrite(10,Green);
 analogWrite(11,Blue);
}

prova ad usare questa funzione ed inviaci anche il codice che hai usato così capiremo meglio!

Cross-posting is not allowed... :stuck_out_tongue:
http://arduino.cc/forum/index.php/topic,88125.0.html

BTW, try putting a pinMode(OUTPUT) and digitalWrite(pin, LOW) in your sketch or try to not use pins 11 and 3, that are connected to timer 0, that on Arduino is set to count millis after starting.

Questo è il codice. Che una parte que è usata per vericazione se un "button" (buttonPin su codice) è premuto, cambiando così la sequencia delle colore.

int PIN_RED = 9;
int PIN_GREEN = 10;
int PIN_BLUE = 11;

int counter = 0;


int numColors = 1000;


int animationDelay = 10; 


const int buttonPin = A0;  
const int ledPin =  13;    
 int r=0,b=0,g=0;
float sat,bright;

int buttonState = 0;
int cont=0,i=0;


void setup() {

  pinMode(ledPin, OUTPUT);      

  pinMode(buttonPin, INPUT);  
  
  pinMode(PIN_RED, OUTPUT);
  pinMode(PIN_BLUE, OUTPUT);
  pinMode(PIN_GREEN, OUTPUT);  
  delay(1000);
 }

void loop(){

  float colorNumber = counter > numColors ? counter - numColors: counter;
         
 
       float saturation = 1; 
       float brightness = 1; 

       float hue = (colorNumber / float(numColors)) * 360;
       long color = HSBtoRGB(hue, saturation, brightness); 
 

       int  red = color >> 16 & 255;
       int  green = color >> 8 & 255;
       int  blue = color & 255;
       


  
  buttonState = digitalRead(buttonPin);
  


  if (buttonState == HIGH) {     

   cont=cont+1;
  delay(500);

  } 

  if (cont==3){
  cont=0;
    } 

      if(cont==0){ 
        
       setColor(red, green, blue);

       counter = (counter + 1) % (numColors * 2);
       delay(animationDelay);
    }
    

         if(cont==1){ 
       
    }
    

    if(cont==2){ 

      r=0;
       g=0;
        b=0;

while ((r<255) && (buttonState == LOW)){
  buttonState = digitalRead(buttonPin);
    r++;  
      
            setColor2(r, g, b);
     delay(20);
}

while ((b<255)&& (buttonState == LOW)){
      buttonState = digitalRead(buttonPin);
    b++;  
            setColor2(r, g, b);
     delay(20);
       }
    }
while ((b>0)&& (buttonState == LOW)){
      buttonState = digitalRead(buttonPin);
    b--;  
            setColor2(r, g, b);
     delay(20);
       }
while ((g<15)&& (buttonState == LOW)){
      buttonState = digitalRead(buttonPin);
    g++;  
            setColor2(r, g, b);
     delay(100);
       }       
       while ((b>0)&& (buttonState == LOW)){
      buttonState = digitalRead(buttonPin);
    b--;  
            setColor2(r, g, b);
     delay(20);
       }
}




void setColor (unsigned char red, unsigned char green, unsigned char blue) 
{ 	 
    analogWrite(PIN_RED, red);
    analogWrite(PIN_GREEN, green);
    analogWrite(PIN_BLUE, blue);
} 

void setColor2 (unsigned char red, unsigned char green, unsigned char blue) 
{ 	 
    analogWrite(PIN_RED, red);
    analogWrite(PIN_GREEN, green);
    analogWrite(PIN_BLUE, blue);
}

long HSBtoRGB(float _hue, float _sat, float _brightness) {
    float red = 0.0;
    float green = 0.0;
    float blue = 0.0;
    
    if (_sat == 0.0) {
        red = _brightness;
        green = _brightness;
        blue = _brightness;
    } else {
        if (_hue == 360.0) {
            _hue = 0;
        }

        int slice = _hue / 60.0;
        float hue_frac = (_hue / 60.0) - slice;

        float aa = _brightness * (1.0 - _sat);
        float bb = _brightness * (1.0 - _sat * hue_frac);
        float cc = _brightness * (1.0 - _sat * (1.0 - hue_frac));
        
        switch(slice) {
            case 0:
                red = _brightness;
                green = cc;
                blue = aa;
                break;
            case 1:
                red = bb;
                green = _brightness;
                blue = aa;
                break;
            case 2:
                red = aa;
                green = _brightness;
                blue = cc;
                break;
            case 3:
                red = aa;
                green = bb;
                blue = _brightness;
                break;
            case 4:
                red = cc;
                green = aa;
                blue = _brightness;
                break;
            case 5:
                red = _brightness;
                green = aa;
                blue = bb;
                break;
            default:
                red = 0.0;
                green = 0.0;
                blue = 0.0;
                break;
        }
    }

    long ired = red * 255.0;
    long igreen = green * 255.0;
    long iblue = blue * 255.0;
    
    return long((ired << 16) | (igreen << 8) | (iblue));
  
}

Scusa il Cross-posting.
Non userò più le porte 11 e 3.

Grazie.

leo72:
Cross-posting is not allowed... :stuck_out_tongue:
http://arduino.cc/forum/index.php/topic,88125.0.html

Ma come hai fatto? :astonished:

Io sono una persona moooolto sottovalutata... :wink:

leo72:
Io sono una persona moooolto sottovalutata... :wink:

Forse a casa :stuck_out_tongue_closed_eyes: non certo qui XD

menniti:

leo72:
Io sono una persona moooolto sottovalutata... :wink:

Forse a casa :stuck_out_tongue_closed_eyes: non certo qui XD

  • 1 :slight_smile:

Ciao Mike , mancavano le tue battute :slight_smile: o forse mancavo solo io :roll_eyes:

:grin:

ratto93:

menniti:

leo72:
Io sono una persona moooolto sottovalutata... :wink:

Forse a casa :stuck_out_tongue_closed_eyes: non certo qui XD

  • 1 :slight_smile:

Ciao Mike , mancavano le tue battute :slight_smile: o forse mancavo solo io :roll_eyes:

:grin:

Io sto latitando perché sono fuori sede, tu invece ci sei proprio poco, stai lavorando alla fusione fredda? :smiley:

ratto93:
Ciao Mike , mancavano le tue battute :slight_smile: o forse mancavo solo io :roll_eyes:

Mancava proprio Mike, più che altro :wink:
E' fuori casa, quindi immagino che il lavoro lo tenga impiegato.

Cmq vi svelo il segreto...... :stuck_out_tongue:
Se uno scrive solo 2 messaggi, ti viene di cliccare sul suo profilo ed andare a vedere cos'altro ha scritto. Non essendo italiano, pensi subito che qui abbia ripiegato solo perché vede un forum molto frequentato. E guarda caso l'altro messaggio era la stessa identica richiesta di aiuto, fatta nella sezione portoghese del forum! :stuck_out_tongue_closed_eyes:

Ora che vi ho svelato il segreto, spero di non aver perso molto carisma, ai vostri occhi :sweat_smile:

No , la fusione fredda per il momento l'ho accantonata :stuck_out_tongue_closed_eyes:

Eh la tesina mi sta facendo sudare non poco...

leo72:

ratto93:
Ciao Mike , mancavano le tue battute :slight_smile: o forse mancavo solo io :roll_eyes:

Mancava proprio Mike, più che altro :wink:
E' fuori casa, quindi immagino che il lavoro lo tenga impiegato.

Grazie Leo, questo fa piacere :blush:, la cosa durerà ancora una settimana poi finalmente ritorno tra gli amati fumi del mio lab :grin:

Cmq vi svelo il segreto...... :stuck_out_tongue:
Se uno scrive solo 2 messaggi, ti viene di cliccare sul suo profilo ed andare a vedere cos'altro ha scritto. Non essendo italiano, pensi subito che qui abbia ripiegato solo perché vede un forum molto frequentato. E guarda caso l'altro messaggio era la stessa identica richiesta di aiuto, fatta nella sezione portoghese del forum! :stuck_out_tongue_closed_eyes:

Ora che vi ho svelato il segreto, spero di non aver perso molto carisma, ai vostri occhi :sweat_smile:

Ah, proprio per niente, io non ci sarei arrivato nemmeno sotto dettatura :sweat_smile: ; tu hai l'intelligenza tipica del Ricercatore, è quel tipo di intelligenza, per capirci, che mentre guardi una vecchia lampadina ad incandescenza fulminata, ti fa venire in mente la soluzione per la perdita del tetto in soffitta, cioè una fantasia spropositata applicata in modo remunerativo (ovviamente in senso lato...), la mia ammirazione per te è da tempi non sospetti quindi, NON arrossire XD

@ ratto93: bravo, lo studio PRIMA di ogni altra cosa, anche tu non scherzi quanto ad intelligenza; se nei prossimi vent'anni riuscirai a rimanere sul pianeta Terra (nel senso che qualche tuo missile non ti porti su Saturno or over) diventerai Qualcuno, parola di Prof! XD