Étape 1: programmation
Cela a un grand bloc de départ pour la programmation de neopixel.
Utiliser le schéma de câblage pour voir comment parlent de toutes les planches d’eachother.
J’ai ajouté un segment de code pour contrôler la répartition de la lumière par le capteur de sons. J’ai tracé la valeur de son capteur vers le bas de 1-1024 à 1-255.
Je vais mettre ma valeur de passer par la lumière patrons alors que je suis au ralenti, et d’arrêter quand je suis monté sur la route.
N’oubliez pas que cela a été adapté d’un projet de lunette ainsi les noms peuvent être quelque peu déroutants, mais le code fonctionne bien.
Voici le reste de mon code.
#include « Adafruit_NeoPixel.h »
#include « segment_models.h »
#include « segment_views.h »
#include « themes.h »
int sensorValue = A0 ;
int mappedValue ;
Initialiser
#define PIN 6
#define LED_COUNT 16
#define LEFT_EYE_START 0
#define RIGHT_EYE_START 16
#define LEDS_PER_EYE 16
#define THEME_SWITCH_DELAY 5000 / / millisecondes
Adafruit_NeoPixel led_strip = Adafruit_NeoPixel (LED_COUNT, PIN, NEO_GRB + NEO_KHZ800) ;
Créer des conteneurs pour les sections de votre fils/cercles de LED.
StripView left_eye = StripView (led_strip, LEFT_EYE_START, LEDS_PER_EYE) ;
StripView right_eye = StripView (led_strip, RIGHT_EYE_START, LEDS_PER_EYE) ;
StripView both_eyes = StripView (led_strip, LEFT_EYE_START, LEDS_PER_EYE * 2) ;
installation Sub ()
{
Serial.Begin(9600) ;
pinMode (entrée, A0) ;
Aways donnez à votre projet un retard de démarrage sécurisé donc vous pouvez re-télécharger le code quand :
-Il utilise trop courant lorsque votre LED sont trop lumineux
-le numéro de série ne répond pas en raison d’un problème de synchronisation
Delay(3000) ;
led_strip.Begin () ;
}
Boucle principale
void loop() {}
strip.setPixelColor() ;
sensorValue = analogRead(A0) ;
Serial.Print ("sensorValue:") ;
Serial.println(sensorValue) ;
mappedValue = carte (sensorValue, 0, 1023, 0, 255) ;
Serial.Print ("carte à 0 - 255:") ;
Serial.println(mappedValue) ;
Si (mappedValue < 30 & & mappedValue > = 1)
{
Changer de thème chaque secondes {x}
Theme::switch_every (THEME_SWITCH_DELAY) ;
left_eye.Clear () ;
Mettre à jour les taches
left_eye.Update () ;
Dessiner les taches.
left_eye.Draw () ;
led_strip.Show () ;
}
Si (mappedValue < 255 & & mappedValue > = 31)
{
left_eye.Clear () ;
led_strip.Show() ;
}
}