Étape 3: Étape 3: ardino code et maquette
J’ai commencé avec le code suivant et un bouton poussoir avec la configuration indiquée à la bande de led de puissance.
CODE :
Il s’agit d’une démonstration sur la façon d’utiliser un périphérique d’entrée pour déclencher des modifications sur vos pixels neo.
Vous devriez fil un bouton poussoir momentané d’installer entre sol et une broche e/s numérique. Lorsque vous
Appuyez sur le bouton qu'il va changer pour une nouvelle animation de pixel. Notez que vous devez appuyer sur la
bouton une fois pour démarrer la première animation !
#include
#define BUTTON_PIN 2 / / e/s numérique broche reliée au bouton. Il s’agit
conduit avec une résistance de pull-up pour l’interrupteur doit
tirer la goupille au sol momentanément. Sur un haut -> Bas
disposition transitoire : la logique de presse bouton s’exécutera.
#define PIXEL_PIN 6 / / e/s numérique broche reliée à la NeoPixels.
#define PIXEL_COUNT 30
Paramètre 1 = nombre de pixels en bande, neopixel bâton a 8
Paramètre 2 = Numéro d’identification (la plupart sont valide)
Paramètre 3 = type de pixel drapeaux, additionner au besoin :
NEO_RGB Pixels sont câblés pour RGB bitstream
NEO_GRB Pixels sont câblés pour GRB bitstream, correct pour le bâton de neopixel
NEO_KHZ400 400 KHz bitstream (p. ex. les pixels de flore)
NEO_KHZ800 800 KHz bitstream (par exemple bande de LED de haute densité), corriger pour bâton de neopixel
Bande de Adafruit_NeoPixel = Adafruit_NeoPixel (PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800) ;
bool oldState = élevé ;
showType int = 0 ;
void setup() {}
pinMode (BUTTON_PIN, INPUT_PULLUP) ;
Strip.Begin() ;
Strip.Show() ; Initialiser tous les pixels sur « arrêt »
}
void loop() {}
Obtenir l’état de bouton actuel.
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 > 10)
showType = 0 ;
startShow(showType) ;
}
}
Définir le dernier état de bouton sur l’état ancien.
oldState = newState ;
}
void startShow(int i) {}
{Switch(i)}
case 0: colorWipe (bande. Color(0, 0, 0), 50) ; Noir/arrêt
rupture ;
cas 1: colorWipe (bande. Color(255, 0, 0), 50) ; Rouge
rupture ;
cas 2: colorWipe (bande. Color(255, 96, 0), 50) ; orange
rupture ;
case 3: colorWipe (bande. Color(255, 255, 0), 50) ; jaune a besoin aide
rupture ;
case 4: colorWipe (bande. Color(0, 255, 0), 50) ; vert
rupture ;
cas 5: colorWipe (bande. Color(0, 0, 255), 50) ; bleu
rupture ;
case 6: colorWipe (bande. Color(38, 222, 220), 50) ; Teal
rupture ;
cas 7: colorWipe (bande. Color(75, 0, 13), 50) ; Purple
rupture ;
cas 8: colorWipe (bande. Color(255, 0, 255), 50) ; Rose
rupture ;
case 9: colorWipe (bande. Color(252, 253, 253), 50) ; blanc
rupture ;
}
}
Remplir les points un après l’autre avec une couleur
void colorWipe (uint32_t c, uint8_t attente) {}
pour (uint16_t i = 0; i
strip.setPixelColor (i, c) ;
Strip.Show() ;
Delay(Wait) ;
}
}
Sub arc-en-ciel (attente uint8_t) {}
uint16_t i, j ;
pour (j = 0; j < 256; j ++) {}
pour (i = 0; i
strip.setPixelColor (i, Wheel((i+j) & 255)) ;
}
Strip.Show() ;
Delay(Wait) ;
}
}
Entrer une valeur de 0 à 255 pour obtenir une valeur de couleur.
Les couleurs sont un transition r - g - b - retour à r.
uint32_t roue (WheelPos octets) {}
WheelPos = 255 - WheelPos ;
if(WheelPos < 85) {}
retourner la bande. Couleur (255 - WheelPos * 3, 0, WheelPos * 3) ;
} else if(WheelPos < 170) {}
WheelPos-= 85 ;
retourner la bande. Couleur (0, WheelPos * 3, 255 - WheelPos * 3) ;
} else {}
WheelPos-= 170 ;
retourner la bande. Couleur (WheelPos * 3, 255 - WheelPos * 3, 0) ;
}
}