op-packages/ssd1306/test.sh
github-actions[bot] 32600acc60 🌴 Sync 2026-03-05 23:51:42
2026-03-05 23:51:42 +08:00

44 lines
828 B
Bash

#!/bin/sh
set -e
I2C=$1
[ -z "$I2C" ] && exit 1
ROTATE=180
# clear display every round for broken displays
CLEAR=false
LINELEN=21 # 128/6
MAX=42 # 2 lines
TEXT="Hello world!"
len=`echo "$TEXT" | wc -c`
if [ $len -gt $MAX ]; then
echo "Text too long (max $MAX chars)" >&2
exit 1
fi
fillround=$(( ($MAX + $len) / $len )).
offset=0
ssd1306 -n $I2C -I 128x32
# rotate display
ssd1306 -n $I2C -r $ROTATE
if $CLEAR; then
sleep 1
else
ssd1306 -n $I2C -c
fi
while :; do
halfstart=$(($offset + $LINELEN))
text=""
for i in $(seq 0 $fillround); do
text="$text ${TEXT}"
done
$CLEAR && ssd1306 -n $I2C -c
msg="`date '+%Y-%m-%d %H:%M:%S'`"' \n'"${text:$offset:$LINELEN}"'\n'"${text:$halfstart:$LINELEN}"'\n'"`date '+%Y-%m-%d %H:%M:%S'` "
ssd1306 -n $I2C -m "$msg"
sleep 1
offset=$(( ($offset + 1) % $len ))
done
exit 0