Soy nuevo en el uso de matraz y javascript, pero estoy creando una aplicación usando matraz, p5.js y la biblioteca de javascript "onoff" para controlar los pines GPIO. cuando ejecuto la aplicación sin la biblioteca onoff, funciona bien, sin embargo, después de agregar la biblioteca onoff, aparece el error "Error de referencia no detectado: el requisito no está definido". Intenté ejecutar el archivo javascript directamente desde la terminal y desde allí funciona bien y simplemente deja de funcionar cuando lo ejecuto en el navegador con la aplicación del matraz.
En este momento, dado que solo estoy probando, se supone que el código se imprime en la consola cuando el GPIO detecta un pulso, sin embargo, mi plan es hacer que cambie el valor de la variable "idx" e "idy" con cada pulso para que yo puede cambiar la posición del círculo dibujado.
aquí está mi código:
var Gpio = require('onoff').Gpio; //include onoff to interact with the GPIO const pinInput = new Gpio(4, 'in', 'both'); //use GPIO pin 17 as input, and 'both' button presses, and releases should be handled const w = 672; const h = 504; let canvas; let idx = 0; let idy = 0; let Xcoords = [150, 541, 149, 541]; let Ycoords = [168, 175, 375, 376]; function setup() { canvas = createCanvas(w, h); canvas.parent("canvasHolder"); noFill(); stroke(255, 204, 0); strokeWeight(6); } function draw() { ellipse(Xcoords[idx], Ycoords[idy], 40, 40); } pinInput.watch(function (err, value) { //Watch for hardware interrupts on pushButton GPIO, specify callback function if (err) { //if an error console.error('There was an error', err); //output error message to console return; } console.log(value); console.log("test print"); }); function unexportOnClose() { //function to run when exiting program pinInput.unexport(); // Unexport Button GPIO to free resources }; process.on('SIGINT', unexportOnClose); //function to run when user closes using ctrl+c }si necesita más información sobre mi código, hágamelo saber.
Las API que está utilizando dependen de Node.js. No se ejecutarán en el navegador.
(El error específico que está encontrando se debe a require es parte de la especificación del módulo CommonJS implementada por Node.js pero los navegadores no lo admiten).
¡Sería muy peligroso si un desarrollador malicioso pudiera decirle a cualquiera de los navegadores de sus visitantes que interactúe de manera arbitraria con los pines GIPO en sus computadoras!
Si desea interactuar con ellos desde un navegador, debe hacerlo mediante un servicio web.
Podría escribir un servicio de este tipo usando JavaScript ejecutándose en Node.js, pero dado que ya tiene Flask en el lado del servidor, tendría más sentido usar el equivalente de Python .