audio-box/docs/noxbox-phase-1.2-GPIO.md

62 lines
1.4 KiB
Markdown

# This describes how to use GPIO pins````
#
#
Follow wiring guide from sparkfun
Dont install python
install nodejs and npm instead
then install
npm i -g onoff
Enable i2c
https://github.com/fivdi/i2c-bus/blob/master/doc/raspberry-pi-i2c.md
New boot config, when also enabling pull-up for GPIO17 and 27:
````
# See /boot/overlays/README for all available options
dtparam=i2c_arm=on
dtparam=audio=on
gpio=17=pu
gpio=27=pu
dtoverlay=vc4-kms-v3d
dtparam=krnbt=on
initramfs initramfs-linux.img followkernel
````
Using it in as NodeJS project to control amp volume using up/down buttons:
````
const i2c = require('i2c-bus');
const Gpio = require('onoff').Gpio;
const MAX9744_ADDR = 0x4B;
let curVolume = 20;
async function setVolume(v){
const bus = await i2c.openPromisified(1);
const wbuf = Buffer.from([v]);
bus.i2cWrite(MAX9744_ADDR,wbuf.length,wbuf);
bus.close()
}
setVolume(30);
const upButton = new Gpio(17, 'in', 'both', {activeLow: true});
const downButton = new Gpio(27, 'in', 'both', {activeLow: true});
upButton.watch((err,value) => {
if(value && curVolume < 63){
console.log('UP');
setVolume(++curVolume);
}
});
downButton.watch((err,value) => {
if(value && curVolume > 0){
console.log('DOWN');
setVolume(--curVolume);
}
});
console.log("Watching");
````