树莓派Node.js GPIO控制

rqenqsqc  于 2022-12-22  发布在  Node.js
关注(0)|答案(2)|浏览(160)

我试图从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脚本只是为了检查事情的工作。谢谢

qacovj5a

qacovj5a1#

此代码工作:

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);

所以我会努力的

h9vpoimq

h9vpoimq2#

我认为这里的错误是in1.digitalWrite(0)和in2.digitalWrite(0)的值都为零,正确的方法是其中一个的值应该为1:输入1.数字写入(1);以及2.数字写入(0);或输入1.数字写入(0);以及2.数字写入(1);

相关问题