Étape 3: programmation
J’ai emprunté le code de Adafruit (https://learn.adafruit.com/rgb-led-strips/example-... et (https://github.com/adafruit/Adafruit_NeoPixel/tree... et leur purée ensemble. J’ai fait quelques changements et voilà le résultat :
tourbillon de couleurs ! brancher une LED RGB aux broches PWM comme indiqué
dans le #defines
domaine public, profitez !
#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
#define BUTTON_PIN 2
#define FADESPEED 5 / / supérieure à ralentir en font
bool oldState = élevé ;
showType int = 0 ;
int r = 255 ;
int g = 255 ;
int b = 255 ;
int f = 0 ; compteur pour feux clignotants
void setup() {}
pinMode (REDPIN, sortie) ;
pinMode (GREENPIN, sortie) ;
pinMode (BLUEPIN, sortie) ;
pinMode (BUTTON_PIN, INPUT_PULLUP) ;
}
void loop() {}
bool newState = digitalRead(BUTTON_PIN) ;
Vérifier si l’État changé de haut en bas (une touche).
Si (newState == LOW & & oldState == HIGH) {}
Court délai de debounce bouton.
Delay(20) ;
Vérifiez si le bouton est encore faible après debounce.
newState = digitalRead(BUTTON_PIN) ;
Si (newState == faible) {}
showType ++ ;
Si (showType > 4)
showType = 0 ;
startShow(showType) ;
}
}
oldState = newState ;
}
void startShow(int i) {}
{Switch(i)}
case 0: digitalWrite (REDPIN, élevé) ; Noir/arrêt
digitalWrite (BLUEPIN, élevé) ;
digitalWrite (GREENPIN, élevé) ;
Delay(500) ;
pour (f = 0; f < 4; r ++) {}
digitalWrite (REDPIN, basse) ; Blanc - clignoter 3 fois
digitalWrite (BLUEPIN, faible) ;
digitalWrite (GREENPIN, basse) ;
Delay(200) ;
digitalWrite (REDPIN, élevé) ; Noir/arrêt
digitalWrite (BLUEPIN, élevé) ;
digitalWrite (GREENPIN, élevé) ;
Delay(500) ;
}
rupture ;
cas 1: digitalWrite (REDPIN, basse) ; Blanc virent au rouge
digitalWrite (BLUEPIN, faible) ;
digitalWrite (GREENPIN, basse) ;
Delay(500) ;
analogWrite (REDPIN, 255) ; Rouge
Delay(2000) ;
digitalWrite (REDPIN, élevé) ; Noir/arrêt
digitalWrite (BLUEPIN, élevé) ;
digitalWrite (GREENPIN, élevé) ;
rupture ;
cas 2: digitalWrite (REDPIN, basse) ; Blanche à verte
digitalWrite (BLUEPIN, faible) ;
digitalWrite (GREENPIN, basse) ;
Delay(500) ;
analogWrite (GREENPIN, 255) ; Vert
Delay(2000) ;
digitalWrite (REDPIN, élevé) ; Noir/arrêt
digitalWrite (BLUEPIN, élevé) ;
digitalWrite (GREENPIN, élevé) ;
rupture ;
case 3: digitalWrite (REDPIN, basse) ; Blanc au bleu
digitalWrite (BLUEPIN, faible) ;
digitalWrite (GREENPIN, basse) ;
Delay(500) ;
analogWrite (BLUEPIN, 255) ; Bleu
Delay(2000) ;
digitalWrite (REDPIN, élevé) ; Noir/arrêt
digitalWrite (BLUEPIN, élevé) ;
digitalWrite (GREENPIN, élevé) ;
rupture ;
case 4: / / fade du bleu au violet
pour (r = 0; r < 256; r ++) {}
analogWrite (REDPIN, r) ;
Delay(FADESPEED) ;
}
fondu du violet au rouge
pour (b = 255, b > 0; b--) {}
analogWrite (BLUEPIN, b) ;
Delay(FADESPEED) ;
}
fondu du rouge au jaune
pour (g = 0; g < 256; g ++) {}
analogWrite (GREENPIN, g) ;
Delay(FADESPEED) ;
}
virent du jaune au vert
pour (r = 255, r > 0, r--) {}
analogWrite (REDPIN, r) ;
Delay(FADESPEED) ;
}
virent du vert au bleu sarcelle
pour (b = 0; b < 256; b ++) {}
analogWrite (BLUEPIN, b) ;
Delay(FADESPEED) ;
}
fondu de teal bleu
pour (g = 255; g > 0; g--) {}
analogWrite (GREENPIN, g) ;
Delay(FADESPEED) ;
}
rupture ;
}