[英]Raspberry Pi Node.js GPIO control
我正在尝试从 RPI4 命令两个与 l298n 模块连接的电机。 这不适用于 node.js,但 python 中的相同脚本(某种移植)可以工作,因为电机运行。
Python 脚本:
import RPi.GPIO as GPIO
from time import sleep
in1 = 24
in2 = 23
en = 25
GPIO.setmode(GPIO.BCM)
GPIO.setup(in1,GPIO.OUT)
GPIO.setup(in2,GPIO.OUT)
GPIO.setup(en,GPIO.OUT)
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.LOW)
p=GPIO.PWM(en,1000)
p.start(25)
while(1):
GPIO.output(in1,GPIO.HIGH)
GPIO.output(in2,GPIO.LOW)
JS 脚本(可能没意思,用 sudo 启动):
var Gpio = require('pigpio').Gpio;
const in1 = new Gpio(24, {mode: Gpio.OUTPUT});
const in2 = new Gpio(23, {mode: Gpio.OUTPUT});
const en = new Gpio(25, {mode: Gpio.OUTPUT});
in1.digitalWrite(0);
in2.digitalWrite(0);
en.pwmWrite(255);
setTimeout(function(){ console.log("finish"); }, 10000);
pigpiod -v 给我版本 71
问题出在哪里? (PS:我从https://www.npmjs.com/package/motor-l298n开始,但当发现电机不工作时,我试图直接使用 pigpio)。 该项目是在 JS 中,所以 python 脚本只是为了检查事情是否有效。 谢谢
此代码有效:
const Gpio = require('pigpio').Gpio;
const in1 = new Gpio(24, {mode: Gpio.OUTPUT});
const in2 = new Gpio(23, {mode: Gpio.OUTPUT});
const en = new Gpio(25, {mode: Gpio.OUTPUT});
let dutyCycle = 0;
in1.digitalWrite(1);
in2.digitalWrite(0);
setInterval(() => {
en.pwmWrite(dutyCycle);
dutyCycle += 5;
if (dutyCycle > 255) {
dutyCycle = 0;
}
}, 20);
所以我要努力
我认为这里的错误是 in1.digitalWrite(0) 和 in2.digitalWrite(0) 的值为零。 正确的做法是one的值应该是one:in1.digitalWrite(1); 和 in2.digitalWrite(0); 或 in1.digitalWrite(0); 和 in2.digitalWrite(1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.