commit 97ec4cce547f0b1ad2d53b9f99d43d806ecb30c3 Author: Florian Schlegel Date: Wed Apr 19 21:42:14 2017 +0200 simple example for fading between random colors diff --git a/licht.sh b/licht.sh new file mode 100755 index 0000000..f239c64 --- /dev/null +++ b/licht.sh @@ -0,0 +1,50 @@ +#! /bin/bash + +LED_LENGTH=12 +MAX_BRIGHTNESS=255 +MIN_BRIGHTNESS=0 +SLEEP_TIME=.001 +IP="172.23.92.5" +PORT="49152" + +GAMMA_LUT=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 12 12 13 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 24 24 25 25 26 27 27 28 29 29 30 31 32 32 33 34 35 35 36 37 38 39 39 40 41 42 43 44 45 46 47 48 49 50 50 51 52 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 72 73 74 75 77 78 79 81 82 83 85 86 87 89 90 92 93 95 96 98 99 101 102 104 105 107 109 110 112 114 115 117 119 120 122 124 126 127 129 131 133 135 137 138 140 142 144 146 148 150 152 154 156 158 160 162 164 167 169 171 173 175 177 180 182 184 186 189 191 193 196 198 200 203 205 208 210 213 215 218 220 223 225 228 231 233 236 239 241 244 247 249 252 255) + +sign() { +[ $1 -lt 0 ] && echo "-1"; [ $1 -eq 0 ] && echo "0"; [ $1 -gt 0 ] && echo "1" +} + +LED_COLORS=() +LED_COLORS_TARGET=() +i=0 +while [ $i -lt $((3*$LED_LENGTH)) ]; do + LED_COLORS+=(0) + LED_COLORS_TARGET+=(0) + i=$(($i+1)) +done + +while true; do + COLOR_STRING="" + BYTE_LENGTH=0 + BYTE_LENGTH_MAX=$((3*$LED_LENGTH)) + while [ $BYTE_LENGTH -lt $BYTE_LENGTH_MAX ]; do + R="${LED_COLORS[$BYTE_LENGTH]}" + R_="${LED_COLORS_TARGET[$BYTE_LENGTH]}" + G="${LED_COLORS[$BYTE_LENGTH+1]}" + G_="${LED_COLORS_TARGET[$BYTE_LENGTH+1]}" + B="${LED_COLORS[$BYTE_LENGTH+2]}" + B_="${LED_COLORS_TARGET[$BYTE_LENGTH+2]}" + COLOR_STRING+="$(printf '%02x%02x%02x' "${GAMMA_LUT[$R]}" "${GAMMA_LUT[$G]}" "${GAMMA_LUT[$B]}")" + [ $R_ -eq $R ] && LED_COLORS_TARGET[$BYTE_LENGTH]="$(( RANDOM % ($MAX_BRIGHTNESS - $MIN_BRIGHTNESS) + $MIN_BRIGHTNESS ))" + [ $G_ -eq $G ] && LED_COLORS_TARGET[$BYTE_LENGTH+1]="$(( RANDOM % ($MAX_BRIGHTNESS - $MIN_BRIGHTNESS) + $MIN_BRIGHTNESS ))" + [ $B_ -eq $B ] && LED_COLORS_TARGET[$BYTE_LENGTH+2]="$(( RANDOM % ($MAX_BRIGHTNESS - $MIN_BRIGHTNESS) + $MIN_BRIGHTNESS ))" + LED_COLORS[$BYTE_LENGTH]=$(($R+$(sign $(($R_-$R))))) + LED_COLORS[$BYTE_LENGTH+1]=$(($G+$(sign $(($G_-$G))))) + LED_COLORS[$BYTE_LENGTH+2]=$(($B+$(sign $(($B_-$B))))) + ((BYTE_LENGTH+=3)) + done + COLOR_STRING="r$(echo "$(printf '%04x' "$((${#LED_COLORS[*]}+2))")0000$COLOR_STRING" | sed -e 's/\(..\)/\\x\1/g')" + + echo -en "$COLOR_STRING" > /dev/udp/$IP/$PORT + sleep $SLEEP_TIME + +done