const { exec } = require('child_process'); const pins = [ { key: 'igniter', board: 13, bcm: 27, mode: 'OUT' }, { key: 'exhaust', board: 15, bcm: 22, mode: 'OUT' }, { key: 'auger', board: 7, bcm: 4, mode: 'OUT' }, { key: 'pof', board: 16, bcm: 23, mode: 'IN' }, { key: 'vacuum', board: 22, bcm: 25, mode: 'IN' } ]; pins.forEach(pin => { console.log(`Key: ${pin.key}, Board: ${pin.board}, BCM: ${pin.bcm}, Mode: ${pin.mode}`); }); module.exports = { // Function to toggle a pin on-then-off togglePin(pin, callback) { exec(`python3 src/python/gpio_interface.py toggle ${pin}`, (error, stdout, stderr) => { if (error) { return callback(error); } if (stderr) { return callback(new Error(stderr)); } console.log(`Successfully toggled pin ${pin}`); }); }. // Function to sense a pin state sensePin(pin, callback) { exec(`python3 src/python/gpio_interface.py sense ${pin}`, (error, stdout, stderr) => { if (error) { console.error(`Error sensing pin ${pin}: ${error.message}`); return callback(error); } if (stderr) { console.error(`Stderr while sensing pin ${pin}: ${stderr}`); return callback(new Error(stderr)); } console.log(`Pin ${pin} state: ${stdout.trim()}`); callback(stdout.trim(), null); }); }, // Toggle pins sequentially and then sense pin states debugInit() { pins.forEach(async (pin) => { switch (pin.mode) { case 'OUT': togglePin(pin.board, err => { if (err) throw err; }); // Wait 1000ms before toggling again. setTimeout(togglePin(pin.board, err => { if (err) throw err; }), 1000); break; case 'IN': sensePin(pin.board, (state, err) => { if (err) throw err; console.log(`${pin.key} state: ${state}`); }); default: break; } }); } }