Go Down

Topic: Arduino + Flash, pilotage de leds RVB (Read 984 times) previous topic - next topic

pioup

Jun 03, 2007, 04:12 pm Last Edit: Jun 03, 2007, 06:26 pm by pioup Reason: 1
J'utilise l'exemple de Kasper Kamperman (http://www.arduino.cc/playground/Interfacing/Flash) pour allumer des leds via PWM depuis flash.
J'envoi une string sous la forme "255,255,255" a arduino.
ensuite je prends les trois premiers caractère de mon tableau et les stocks dans un tableau de caracteres puis de atoi ce tableau pour en faire un entier et enfin je fais mon analogWrite sur mon pin.

En résumé dans mon IDE arduino cela donne a peu pres ca :

Code: [Select]

char tempStringRed[4];

char valpwmRed;

char serInString[20];

int ledRed = 9 ;
int ledGreen = 10 ;
int ledBlue = 11 ;

void readSerialString (char *strArray)
{
int i = 0;      
 if(serialAvailable())        
 { while (serialAvailable())    
     { strArray[i] = serialRead();      
       i++;    
     }      
 }      
}

boolean isStringEmpty(char *strArray)
{ if (strArray[0] == 0) return true;
 else                           return false;
}



void setup()
{
 
 Serial.begin(57600);       // start serial port
 
 pinMode(ledRed, OUTPUT);
 pinMode(ledGreen, OUTPUT);
 pinMode(ledBlue, OUTPUT);
 
}

void loop ()
{

 readSerialString(serInString); // stock data recu dans un tableau de caracteres

 if(isStringEmpty(serInString) == false)  // si le tableau precedent n'est pas vide...
 {
     
        tempStringRed[0] = serInString[0] ;
        tempStringRed[1] = serInString[1] ;
        tempStringRed[2] = serInString[2] ;
        tempStringRed[3] = 0; // dans l'exemple, le tab et de taille 4 est le dernier emplacement est setté à 0 si quelqu'un peut m'expliker... en tt ca a l'air d'encore moins marcher sans ca
     
        valpwmRed = atoi(tempStringRed);
         
        analogWrite(ledRed,valpwmRed);

 }

 for (int i=0; i <= 100; i++)
 {
      serInString[i]=0;  //nettoyage du tableau
 }
 
 delay(50); // attends 50ms
}


Voilà.

Bon.
Cette solution ne marche pas. Quelqu'un saurait il pourquoi et mieux, saurait il comment faire m

pioup

char valpwmRed; ne devrait t il pas être int valpwmRed;

Go Up