Home | History | Annotate | Download | only in javascript
      1 /*jslint node:true, vars:true, bitwise:true, unparam:true */
      2 /*jshint unused:true */
      3 /*global */
      4 /*
      5 * Author: Zion Orent <zorent (at) ics.com>
      6 * Copyright (c) 2014 Intel Corporation.
      7 *
      8 * Permission is hereby granted, free of charge, to any person obtaining
      9 * a copy of this software and associated documentation files (the
     10 * "Software"), to deal in the Software without restriction, including
     11 * without limitation the rights to use, copy, modify, merge, publish,
     12 * distribute, sublicense, and/or sell copies of the Software, and to
     13 * permit persons to whom the Software is furnished to do so, subject to
     14 * the following conditions:
     15 *
     16 * The above copyright notice and this permission notice shall be
     17 * included in all copies or substantial portions of the Software.
     18 *
     19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     22 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
     23 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
     24 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
     25 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     26 */
     27 
     28 // Load alcohol sensor module
     29 var mq303a = require('jsupm_mq303a');
     30 
     31 // Instantiate an mq303a sensor on analog pin A0
     32 // This device uses a heater powered from an analog I/O pin.
     33 // If using A0 as the data pin, then you need to use A1, as the heater
     34 // pin (if using a grove mq303a).  For A1, we can use the D15 gpio,
     35 // setup as an output, and drive it low to power the heater.
     36 var myAlcoholObj = new mq303a.MQ303A(0, 15);
     37 
     38 console.log("Enabling heater and waiting 2 minutes for warmup.");
     39 
     40 // give time updates every 30 seconds until 2 minutes have passed
     41 // for the alcohol sensor to warm up
     42 statusMessage(1);
     43 statusMessage(2);
     44 statusMessage(3);
     45 
     46 function statusMessage(amt)
     47 {
     48 	setTimeout(function()
     49 	{
     50 		console.log((amt * 30) + " seconds have passed");
     51 	}, 30000 * amt);
     52 }
     53 
     54 // run the alcohol sensor in 2 minutes
     55 setTimeout(runAlcoholSensor, 120000);
     56 
     57 function runAlcoholSensor()
     58 {
     59 	var notice = "This sensor may need to warm " +
     60 				"until the value drops below about 450."
     61 	console.log(notice);
     62 
     63     // Print the detected alcohol value every second
     64 	setInterval(function()
     65 	{
     66 		var val = myAlcoholObj.value();
     67 		var msg = "Alcohol detected ";
     68 		msg += "(higher means stronger alcohol): ";
     69 		console.log(msg + val);
     70 	}, 1000);
     71 }
     72 
     73 // Print message when exiting
     74 process.on('SIGINT', function()
     75 {
     76 	console.log("Exiting...");
     77 	process.exit(0);
     78 });
     79