62 lines
1.4 KiB
Markdown
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");
|
|
````
|