RandomVideo/buzzer.sh

91 lines
2.0 KiB
Bash
Raw Normal View History

2020-08-23 15:47:22 +02:00
#!/bin/sh
2020-09-23 15:18:30 +02:00
# SPDX-License-Identifier: Unlicense
2020-08-23 15:47:22 +02:00
2020-09-23 15:18:30 +02:00
buzzergpio=0
strobegpio=2
2020-09-19 00:22:52 +02:00
swupgpio=23
2020-09-19 00:49:46 +02:00
swdowngpio=25
2020-09-04 22:12:30 +02:00
2020-09-22 18:52:12 +02:00
player="cvlc"
2020-09-22 22:05:36 +02:00
playerparam="--play-and-exit --quiet --no-osd -A alsa --alsa-audio-device=front:CARD=Device,DEV=0"
2020-09-23 15:18:30 +02:00
playerloop="--loop"
2020-09-22 18:25:58 +02:00
pgrepplayer="vlc"
2020-09-19 23:33:19 +02:00
2020-09-23 15:18:30 +02:00
pollingtime=0.05
buzzertimeout=2
strobeduration=1
volumetimeout=0.1
2020-09-23 15:25:40 +02:00
volumemax=100
2020-09-23 15:18:30 +02:00
playerfull="$(command -v $player) $playerparam"
2020-09-19 03:44:34 +02:00
cmdgpio="$(command -v gpio)"
2020-09-23 15:18:30 +02:00
cmdamixer="$(command -v amixer)"
2020-09-04 22:12:30 +02:00
2020-09-23 15:18:30 +02:00
$cmdgpio mode $buzzergpio in
2020-08-23 15:47:22 +02:00
2020-09-23 15:18:30 +02:00
$cmdgpio mode $strobegpio out
$cmdgpio write $strobegpio 1
2020-08-23 15:47:22 +02:00
2020-09-19 03:44:34 +02:00
$cmdgpio mode $swdowngpio in
$cmdgpio mode $swupgpio in
2020-09-19 00:22:52 +02:00
2020-09-23 15:18:30 +02:00
volumevalue=0
$cmdamixer -q -c 2 sset 'Speaker' $volumevalue%
2020-08-23 15:47:22 +02:00
while true; do
2020-09-22 20:23:21 +02:00
2020-09-23 15:18:30 +02:00
buzzerstat="$($cmdgpio read $buzzergpio)"
2020-09-19 03:44:34 +02:00
swupstat="$($cmdgpio read $swupgpio)"
2020-09-23 15:18:30 +02:00
swdownstat="$($cmdgpio read $swdowngpio)"
2020-08-23 15:47:22 +02:00
2020-09-19 00:44:08 +02:00
if [ "$buzzerstat" -eq 0 ] && [ "$swupstat" -eq 0 ]; then
2020-09-23 15:18:30 +02:00
~/RandomVideo/RandomVideo.sh buzzer
$cmdgpio write $strobegpio 0; sleep $strobeduration; $cmdgpio write $strobegpio 1 &
sleep $buzzertimeout
2020-09-19 19:57:49 +02:00
elif [ "$swupstat" -eq 1 ]; then
2020-09-23 15:18:30 +02:00
if pgrep "$pgrepplayer" > /dev/null; then
pkill "$pgrepplayer"
2020-09-19 23:33:19 +02:00
fi
2020-09-23 15:18:30 +02:00
$playerfull $playerloop ~/RandomVideo/onair.mp4 &
2020-09-19 20:18:17 +02:00
2020-09-22 20:39:17 +02:00
while [ "$swupstat" -eq 1 ]; do
2020-09-19 20:01:41 +02:00
swupstat="$($cmdgpio read $swupgpio)"
2020-09-23 15:18:30 +02:00
sleep $pollingtime
2020-09-19 19:57:49 +02:00
done
2020-09-23 15:18:30 +02:00
pkill "$pgrepplayer"
elif [ "$volumevalue" -eq 0 ] && [ "$swdownstat" -eq 1 ]; then
2020-09-23 15:39:11 +02:00
while [ "$volumevalue" -lt "$volumemax" ] && [ "$buzzerstat" -eq 1 ]; do
2020-09-23 15:18:30 +02:00
volumevalue=$((volumevalue + 1))
$cmdamixer -q -c 2 sset 'Speaker' $volumevalue%
buzzerstat="$($cmdgpio read $buzzergpio)"
sleep $volumetimeout
done
2020-09-23 15:44:30 +02:00
sleep $((pollingtime * 2))
2020-09-23 15:18:30 +02:00
elif [ "$volumevalue" -gt 0 ] && [ "$swdownstat" -eq 0 ]; then
2020-09-23 15:39:11 +02:00
while [ "$volumevalue" -gt 0 ] && [ "$swdownstat" -eq 0 ]; do
2020-09-23 15:18:30 +02:00
volumevalue=$((volumevalue -1))
$cmdamixer -q -c 2 sset 'Speaker' $volumevalue%
swdownstat="$($cmdgpio read $swdowngpio)"
sleep $volumetimeout
done
2020-09-22 20:27:36 +02:00
2020-09-23 15:44:30 +02:00
sleep $((pollingtime * 2))
2020-09-19 19:57:49 +02:00
elif [ "$buzzerstat" -eq 1 ] && [ "$swupstat" -eq 0 ]; then
2020-09-23 15:18:30 +02:00
sleep $pollingtime
2020-08-23 15:47:22 +02:00
fi
done