rpio-l298n
Version:
Module to control an l298n motor controller on a Pi,dependencies rpio.
65 lines (58 loc) • 1.45 kB
JavaScript
const PinPWM = require('./PinPWM.js');
const PinWrite = require('./PinWrite.js');
const PinRead = require('./PinRead.js');
const clock = 2048;
const range = 100;
const NO1 = 0;
const NO2 = 1;
let deviceList = [];
function initDevice(dNum,en,in1,in2) {
deviceList[dNum] = {
en:en,
in1:in1,
in2:in2,
enGpio : new PinPWM(en,clock,range),
in1Gpio : new PinWrite(in1),
in2Gpio : new PinWrite(in2),
};
}
function enPort(dNum) {
return deviceList[dNum].enGpio;
}
function in1Port(dNum) {
return deviceList[dNum].in1Gpio;
}
function in2Port(dNum) {
return deviceList[dNum].in2Gpio;
}
function L298N(enableA,in1,in2,enableB,in3,in4) {
if (enableA !== null) {
initDevice(this.NO1,enableA,in1,in2);
}
if (enableB !== null) {
initDevice(this.NO2,enableB,in3,in4);
}
}
Object.assign(L298N.prototype, {
setSpeed : function(dNum, speed) {
enPort(dNum).setData(speed);
},
forward : function(dNum) {
in1Port(dNum).HIGH();
in2Port(dNum).LOW();
},
backward : function(dNum) {
in1Port(dNum).LOW();
in2Port(dNum).HIGH();
},
stop : function(dNum) {
in1Port(dNum).LOW();
in2Port(dNum).LOW();
},
PinPWM : PinPWM,
PinWrite : PinWrite,
PinRead : PinRead,
NO1:NO1,
NO2:NO2,
});
module.exports = L298N;