-
Notifications
You must be signed in to change notification settings - Fork 0
/
pca.js
41 lines (33 loc) · 1.26 KB
/
pca.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
Copyright ou © ou Copr. Clément Bossut, (2018)
Ce logiciel est un programme informatique servant à écrire et jouer une conduite lumière synchronisée avec du son sur une Raspberry Pi avec PCA8596.
Ce logiciel est régi par la licence CeCILL soumise au droit français et
respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
sur le site "http://www.cecill.info".
*/
const i2c = require('i2c-bus')
, busNumber = 1 // RaspberryPi configuration
, bus = i2c.openSync(busNumber)
, LED0ON = 6 // ON_L-ON_H-OFF_L-OFF_H
, ALLCALLADDR = 112
let pca = {}
pca.getAddresses = function() {
return bus.scanSync(64,111)
}
pca.init = function(cb) {
bus.sendByteSync(0,6) // Software Reset
setTimeout(()=>{
bus.writeByteSync(ALLCALLADDR,0,0b00100001) //out of sleep and autoincrement
bus.writeByteSync(ALLCALLADDR,0xFB,0) //Remove all led force on
cb()
}, 20)
}
pca.setLed = function(addr, n, val) {
if (n < 0 || n > 15) return;
if (val <= 0) bus.writeByteSync(addr, LED0ON+3+n*4, 16)
else bus.writeWordSync(addr, LED0ON+2+n*4, val)
}
module.exports = pca