SA-Kenan/03_Aufnahmeserie/Ansteuerung_LEDs_uC.ino
2022-05-09 20:30:26 +02:00

149 lines
4.9 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* This program contains all 20 possible combinations for a lane wich have an orientation.
* The brightness of the color patterns is set here to 255.
* Furthermore colors can be transmitted via rrr-ggg-bbb values.
* It uses serial communication.
*/
#include <Adafruit_NeoPixel.h>
#define LED_PIN 9
#define NUM_LEDS 29
String redString; String greenString; String blueString; String inputString; String color_pattern;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
/* Info:
* set the color of a pixel:
* strip.setPixelColor(n, red, green, blue);
* pixel starts from n=0
*
* Multiple pixels can be set to the same color using the fill() function,
* which accepts one to three arguments. Typically its called like this:
* strip.fill(color, first, count)
*/
int pause = 3000; // pause in ms
// Definition of Colors
int led_brightness = 255;
uint32_t red = strip.Color(led_brightness,0,0);
uint32_t green = strip.Color(0,led_brightness,0);
uint32_t blue = strip.Color(0,0,led_brightness);
uint32_t yellow = strip.Color(led_brightness,led_brightness,0);
uint32_t magenta = strip.Color(led_brightness,0,led_brightness);
uint32_t cyan = strip.Color(0,led_brightness,led_brightness);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
strip.begin();
strip.clear(); strip.show(); // turn off all LEDs
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available()) {
inputString = Serial.readString();
color_pattern = inputString;
Serial.print("Folgender Text wurde empfangen: ");
Serial.println(inputString);
//String aufteilen in R G B
redString=inputString.substring(0,2+1);
greenString=inputString.substring(4,6+1);
blueString=inputString.substring(8,10+1);
}
// define color patterns
if (color_pattern == "color_pattern_01") {
SetColorCombination(red, green, blue); // color pattern 01
}
else if (color_pattern == "color_pattern_02") {
SetColorCombination(red, green, yellow); // color pattern 02
}
else if (color_pattern == "color_pattern_03") {
SetColorCombination(red, green, magenta); // color pattern 03
}
else if (color_pattern == "color_pattern_04") {
SetColorCombination(red, green, cyan); // color pattern 04
}
else if (color_pattern == "color_pattern_05") {
SetColorCombination(red, blue, yellow); // color pattern 05
}
else if (color_pattern == "color_pattern_06") {
SetColorCombination(red, blue, magenta); // color pattern 06
}
else if (color_pattern == "color_pattern_07") {
SetColorCombination(red, blue, cyan); // color pattern 07
}
else if (color_pattern == "color_pattern_08") {
SetColorCombination(red, yellow, magenta); // color pattern 08
}
else if (color_pattern == "color_pattern_09") {
SetColorCombination(red, yellow, cyan); // color pattern 09
}
else if (color_pattern == "color_pattern_10") {
SetColorCombination(red, magenta, cyan); // color pattern 10
}
else if (color_pattern == "color_pattern_11") {
SetColorCombination(green, blue, yellow); // color pattern 11
}
else if (color_pattern == "color_pattern_12") {
SetColorCombination(green, blue, magenta); // color pattern 12
}
else if (color_pattern == "color_pattern_13") {
SetColorCombination(green, blue, cyan); // color pattern 13
}
else if (color_pattern == "color_pattern_14") {
SetColorCombination(green, yellow, magenta); // color pattern 14
}
else if (color_pattern == "color_pattern_15") {
SetColorCombination(green, yellow, cyan); // color pattern 15
}
else if (color_pattern == "color_pattern_16") {
SetColorCombination(green, magenta, cyan); // color pattern 16
}
else if (color_pattern == "color_pattern_17") {
SetColorCombination(blue, yellow, magenta); // color pattern 17
}
else if (color_pattern == "color_pattern_18") {
SetColorCombination(blue, yellow, cyan); // color pattern 18
}
else if (color_pattern == "color_pattern_19") {
SetColorCombination(blue, magenta, cyan); // color pattern 19
}
else if (color_pattern == "color_pattern_20") {
SetColorCombination(yellow, magenta, cyan); // color pattern 20
}
else{
strip.clear();
strip.fill(strip.Color(redString.toInt(),greenString.toInt(),blueString.toInt()),0,0);
strip.show();
}
}
// Define Functions
void SetColorCombination(uint32_t color_1, uint32_t color_2, uint32_t color_3){
// Set the color combination for the whole strip
//determine whole numer of pixels, which can be displayed in a 3-row-constellation
int number_of_3rowpixels = NUM_LEDS - (NUM_LEDS % 3); // should be 27 if 29 leds are mounted. Modulo = 2: (29 % 3)=(9x3) +2
int lastpixelindex = number_of_3rowpixels-1; // index starts at 0
for(int i=0; i<=lastpixelindex; i=i+3){
strip.setPixelColor(i, color_1);
strip.setPixelColor(i+1, color_2);
strip.setPixelColor(i+2, color_3);
}
strip.show();
}