@chirimen/ads1015
Advanced tools
Comparing version
@@ -7,3 +7,8 @@ (function (global, factory) { | ||
var ADS1015 = function(i2cPort,slaveAddress){ | ||
// @ts-check | ||
/** @param {number} ms Delay for a number of milliseconds. */ | ||
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); | ||
var ADS1015 = function (i2cPort, slaveAddress) { | ||
this.i2cPort = i2cPort; | ||
@@ -15,53 +20,30 @@ this.slaveAddress = slaveAddress; | ||
ADS1015.prototype = { | ||
init: function(){ | ||
return new Promise((resolve, reject) => { | ||
this.i2cPort.open(this.slaveAddress).then((i2cSlave) => { | ||
this.i2cSlave = i2cSlave; | ||
resolve(); | ||
},(err) => { | ||
console.error("ADS1015.init() Error: "+error.message); | ||
reject(err); | ||
}); | ||
}); | ||
init: async function () { | ||
this.i2cSlave = await this.i2cPort.open(this.slaveAddress); | ||
}, | ||
read: function(channel){ | ||
return new Promise((resolve, reject)=>{ | ||
if(this.i2cSlave){ | ||
if((channel > 3)||(channel < 0)){ | ||
console.error("ADS1015.read: channel error"+channel); | ||
err.code = 5; | ||
reject(err.message); | ||
} | ||
var config = 0x4000 + (channel * 0x1000); // ADC channel | ||
config |= 0x8000; // Set 'start single-conversion' bit | ||
config |= 0x0003; // Disable the comparator (default val) | ||
config |= 0x0080; // 1600 samples per second (default) | ||
config |= 0x0100; // Power-down single-shot mode (default) | ||
config |= 0x0200; // +/-4.096V range = Gain 1 | ||
var confL = config >> 8; | ||
var confH = config & 0x00ff; | ||
var data = confH | confL; | ||
this.i2cSlave.write16(0x01, data).then((v) => { | ||
setTimeout(()=>{ | ||
this.i2cSlave.read16(0).then((v) =>{ | ||
var vH = (v & 0x00ff) << 8; | ||
var vL = (v >> 8)& 0x00ffff; | ||
var value = (vH | vL) >> 4; | ||
resolve(value); | ||
},(err) => { | ||
console.error("ADS1015.read: read16(0) error"+err.message); | ||
err.code = 3; | ||
reject(err.message); | ||
}); | ||
},10); | ||
}, (err) => { | ||
console.error("ADS1015.read: write16(0,config) error"+err.message); | ||
err.code = 2; | ||
reject(err.message); | ||
}); | ||
}else{ | ||
err.code = 1; | ||
reject(err.message); | ||
} | ||
}); | ||
read: async function (channel) { | ||
if (this.i2cSlave == null) { | ||
throw new Error("i2cSlave is not open yet."); | ||
} | ||
if ((channel < 0) || (3 < channel)) { | ||
throw new Error("ADS1015.read: channel error" + channel); | ||
} | ||
var config = 0x4000 + (channel * 0x1000); // ADC channel | ||
config |= 0x8000; // Set 'start single-conversion' bit | ||
config |= 0x0003; // Disable the comparator (default val) | ||
config |= 0x0080; // 1600 samples per second (default) | ||
config |= 0x0100; // Power-down single-shot mode (default) | ||
config |= 0x0200; // +/-4.096V range = Gain 1 | ||
var confL = config >> 8; | ||
var confH = config & 0x00ff; | ||
var data = confH | confL; | ||
await this.i2cSlave.write16(0x01, data); | ||
await sleep(10); | ||
var v = await this.i2cSlave.read16(0); | ||
var vH = (v & 0x00ff) << 8; | ||
var vL = (v >> 8) & 0x00ffff; | ||
var value = (vH | vL) >> 4; | ||
return value; | ||
} | ||
@@ -68,0 +50,0 @@ }; |
{ | ||
"name": "@chirimen/ads1015", | ||
"version": "1.0.1-alpha.0", | ||
"version": "1.0.1-alpha.1", | ||
"description": "Driver for ADS1015 with WebI2C", | ||
@@ -22,3 +22,3 @@ "main": "ads1015.js", | ||
}, | ||
"gitHead": "0df331a064d1eb34860455116210d99dbea00032" | ||
"gitHead": "55981f1f513d1f248652a06bcb9d09c45b7e3fa5" | ||
} |
Sorry, the diff of this file is not supported yet
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
0
-100%4837
-21.29%91
-32.59%