2017-10-20 9 views
0

Salut tout ce que je suis en train de créer une serrure de porte en utilisant laJavascript est désactivé sur le RPI: GPIOCtrl n'est pas une fonction

var gpio = require("pi-gpio"); 
var gpioPin = 4; 
var isOpened=false; 
var unlock = function(){ 
if(!isOpened){ 
/* Open the door lock */ 
gpio.write(gpioPin, 1, function() { 
isOpened = true; 
}); 
/*Lock door in 2 seconds*/ 
setTimeout(function() { 
gpio.write(gpioPin, 0, function() { 
isOpened = false; 
}); 
}, 2000);}} 

suivant alors le suivant:

var http = require('http'); var express = require('express'); 
var app = express(); 
var GPIOCtrl = require('./controller.js'); 
app.get('/unlock/', function(req, res){ 
GPIOCtrl.unlock(); 
}); 
app.listen(3000); 
console.log('App Server running at port 3000'); 

Quand je lance le programme I obtenir le serveur de l'application de message en cours d'exécution au port 3000, mais quand je l'appelle, je reçois le message suivant:

TypeError: GPIOCtrl.unlock is not a function 

De quoi s'agit-il? mal faire?

Répondre

0

Vous avez à votre module export comme suit dans votre controller.js:

var gpio = require("pi-gpio"), 
    gpioPin = 4, 
    isOpened = false, 

module.exports = { 
    unlock: function() { 
    if (!isOpened) { 
     /* Open the door lock */ 
     gpio.write(gpioPin, 1, function() { 
     isOpened = true; 
     }); 

     /*Lock door in 2 seconds*/ 
     setTimeout(function() { 
     gpio.write(gpioPin, 0, function() { 
      isOpened = false; 
     }); 
     }, 2000); 
    } 
    } 
} 
+0

Merci, je viens de changer cela et ai passé cette erreur. Maintenant, je reçois erreur: Numéro de broche isn ' t valide –

+0

@ShanePitts Oui, c'est parce que «GPIO 4» est utilisé pour l'alimentation selon le [brochage] (https://pinout.xyz/) –

+0

Donc, selon ce tableau, je voudrait entrer 7 puisque je suis connecté à BCM 4? –