working with a greater distance, firing sensors individually, more stable output:
var distanceR = 0; var distanceG = 0; var distanceB = 0; var running; var c=0; var sensorR = require("HC-SR04").connect(A0,A1,function(dist) { if (dist < 300 && dist > 0) distanceR = dist; }); var sensorG = require("HC-SR04").connect(A2,A3,function(dist) { if (dist < 300 && dist > 0) distanceG = dist; }); var sensorB = require("HC-SR04").connect(A4,A5,function(dist) { if (dist < 300 && dist > 0) distanceB = dist; }); SPI2.setup({baud:3200000, mosi:B15}); function runIt(){ if (c===0) sensorR.trigger(); if (c===1) sensorG.trigger(); if (c===2) { sensorB.trigger(); sendToLeds(); c=0; } else c++; } function sendToLeds(){ //console.log("before("+Math.floor(distanceR)+","+Math.floor(distanceG)+","+Math.floor(distanceB)+")"); if(distanceR > 100 || distanceR === 0){distanceR = 0;} else {distanceR = 255-(distanceR/4)*10;} if(distanceG > 100 || distanceG === 0){distanceG = 0;} else {distanceG = 255-(distanceG/4)*10;} if(distanceB > 100 || distanceB === 0){distanceB = 0;} else {distanceB = 255-(distanceB/4)*10;} if(Math.floor(distanceR) > 0 || Math.floor(distanceG) > 0 || Math.floor(distanceB) > 0) console.log("RGB("+Math.floor(distanceR)+","+Math.floor(distanceG)+","+Math.floor(distanceB)+")"); SPI2.send4bit([distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB,distanceR,distanceG,distanceB], 0b0001, 0b0011); // white } function stopIt(){ console.log("button pressed"); clearInterval(running); } running = setInterval(runIt, 100); setWatch(stopIt, BTN1, {repeat:true, edge:"rising"});
@Rek started
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
working with a greater distance, firing sensors individually, more stable output: