Pas mal d' "erreur" de programmation ou confusion.
Utilise des constante macro (#define) au lieu de créé des variables qui ne changeront jamais.
Pour toute les fonction répétitive il y a moyen de simplifié ça.
L'utilisation de int (2 octet) là ou un byte (1 octet valeur allant de 0 à 255) suffit. (j'y vois là le php qui revient avec un typage invisible, d'où le fait que je dise qu'il ne peut servir de réfférance)
testlolo = results.value,DEC; encore là ce ,DEC la solution est ailleur.
digitalWrite ne prend que 2 valeurs possible, 0 (false) ou 1(true) et AnalogWrite prend des valeur comprise entre 0 et 255:
for ( int i = -1;i < 3024; i++) {
digitalWrite(redPin, i);
digitalWrite(greenPin, i + 12);
digitalWrite(bluePin, i + 56);
digitalWrite ne prend que deux valeur 0 ou 1 donc temps que tu auras n'importe quel valeurs autre que 0 sera compris comme un HIGH (true)
si c'est un analogWrite que tu as voulu faire il ne prend de toute façon que des valeurs comprise entre 0 et 255.
for(value = 0 ; value <= 1255; value+=5) //fade in (from min to max)
for(value = 1255; value >=0; value-=5) //fade out (from max to min)
idem pourquoi monté à 1255 ou c'est une erreur de frappe ?
Ce que j'aurais fais.
#include <IRremote.h>
#define RECV_PIN A0
#define redPin 11
#define greenPin 10
#define bluePin 9
int testlolo = 0;
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
// turn on LED on low brightness
digitalWrite(redPin, HIGH);
digitalWrite(greenPin,LOW);
digitalWrite(bluePin, HIGH);
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
//Serial.println(results.value, DEC);
//test=results.value;
testlolo = results.value;
//Serial.println(test);
Serial.println(testlolo);
switch (testlolo){
case 255:
actionDigital(1,1,1);
break ;
case 12495:
action1();
break ;
case 2295:
actionDigital(1,0,1);
break ;
case -30601:
actionDigital(1,1,0);
break ;
case 18615:
actionDigital(0,1,1);
break ;
case 10455:
actionDigital(0,0,0);
break;
case -22441:
action2();
break ;
case 26775:
action3();
case -24481:
action4();
break ;
}
irrecv.resume(); // Receive the next value
}
}
void actionDigital(byte red,byte green,byte blue)
{
digitalWrite(redPin, red);
digitalWrite(greenPin, green);
digitalWrite(bluePin, blue);
}
void actionAnalog(byte red,byte green,byte blue)
{
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
void action1()
{
irrecv.resume(); // Receive the next value
for ( int i = -1;i < 3024; i++) {
actionAnalog(i,i+12,i+56);
delay (5);
if(irrecv.decode(&results))
{
break;
}
}
actionDigital(1,0,1);
}
void action2()
{
for(byte value = 0 ; value <= 255; value++) //fade in (from min to max)
{
actionAnalog(value,value,value);
delay(100); // waits for 30 milli seconds to see the dimming effect
}
for(byte value = 255; value >=0; value--) //fade out (from max to min)
{
actionAnalog(value,value,value);
delay(100);
}
}
void action3()
{
for(byte p = redPin; p >= bluePin; p--)
{
for (byte brightness = 0; brightness <= 255 ; brightness++)
{
analogWrite(p, brightness);
delay(30);
}
}
}
void action4()
{
int rando = random(500);
actionAnalog(rando,rando + 12,rando + 56);
}
Par contre je comprend toujours pas pourquoi la solution donnée ne fonctionne pas pour le for ?