Skip to content

Instantly share code, notes, and snippets.

@RossComputerGuy
Last active February 13, 2020 00:20
Show Gist options
  • Save RossComputerGuy/b6337a7b77ca4298f09569da6e42b202 to your computer and use it in GitHub Desktop.
Save RossComputerGuy/b6337a7b77ca4298f09569da6e42b202 to your computer and use it in GitHub Desktop.
Rainbow LED bash script for the PinePhone
#!/usr/bin/env bash
set_color() {
local led="$1"
local color="$2"
echo "$color" >/sys/class/leds/pinephone:"$led":user/brightness
}
DECL_set_color=$(declare -f set_color)
# TODO: implement PWM, however that works
random_color() {
local led="$1"
local color=$[($RANDOM % $(cat /sys/class/leds/pinephone:"$led":user/max_brightness)) + 1]
echo "$color" >/sys/class/leds/pinephone:"$led":user/brightness
}
DECL_random_color=$(declare -f random_color)
do_led() {
for (( i=1; c<="$2"; c++ )); do
sudo bash -c "$DECL_random_color; random_color $3"
sleep "$1"
done
}
set -e
export REPEAT=10
export DELAY=3
while (( "$#" )); do
case "$1" in
--repeat)
export REPEAT=$2
shift 2
;;
--delay)
export DELAY=$2
shift 2
;;
--seperate)
do_led "$[($RANDOM % 1) + 1]" "$REPEAT" "red" &
do_led "$[($RANDOM % 2) + 1]" "$REPEAT" "green" &
do_led "$[($RANDOM % 3) + 1]" "$REPEAT" "blue" &
exit
;;
--clear)
sudo bash -c "$DECL_set_color; set_color red 0"
sudo bash -c "$DECL_set_color; set_color green 0"
sudo bash -c "$DECL_set_color; set_color blue 0"
exit
;;
*)
(>&2 echo "Invalid argument $1")
;;
esac
done
for (( i=1; c<="$REPEAT"; c++ )); do
sudo bash -c "$DECL_random_color; random_color red"
sudo bash -c "$DECL_random_color; random_color green"
sudo bash -c "$DECL_random_color; random_color blue"
sleep "$DELAY"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment