makeybutton: add driver for MakeyMakey-like button

Signed-off-by: deadprogram <ron@hybridgroup.com>
This commit is contained in:
deadprogram
2022-07-17 11:52:17 +02:00
committed by Daniel Esteban
parent 13c43350a3
commit cafe8df620
5 changed files with 160 additions and 2 deletions
+46
View File
@@ -0,0 +1,46 @@
package makeybutton
const bufferSize = 10
// Buffer is a buffer to keep track of the most recent readings for a button.
type Buffer struct {
readings [bufferSize]bool
index int
}
// NewBuffer returns a new buffer.
func NewBuffer() *Buffer {
return &Buffer{}
}
// Used returns how many bytes in buffer have been used.
func (b *Buffer) Used() int {
return b.index
}
// Put stores a boolean in the buffer.
func (b *Buffer) Put(val bool) bool {
b.index++
if b.index >= bufferSize {
b.index = 0
}
b.readings[b.index] = val
return true
}
// Avg returns the "average" of all the readings in the buffer, by
// treating a true as 1 and a false as -1.
func (b *Buffer) Avg() int {
avg := 0
for i := 0; i < bufferSize; i++ {
if b.readings[i] {
avg += 1
} else {
avg -= 1
}
}
return avg
}