Zum Inhalt springen →

Espruino und HC-SR04 als Photo Falle

Mit dem folgenden kleinen Programm und einer kleinen Schaltung (basierend auf Espruino und einem HC-SR04) habe ich mir eine kleine Auslöse-Automatik für meine Canon EOS 450D gebastelt.
Mit Hilfe der Schaltung ist es möglich, die Camera automatisch auszulösen, sobald sich ein Objekt in Reichweite (max. 4 Meter) befindet.

Ich nutze hier nicht die require(“HC-SR04″) Funktion des Espruino, da ich nicht mit der Web IDE gearbeitet habe und das exports.connect über BlueTooth nicht funktioniert. Ist halt nicht ganz so einfach, wenn man über BlueTerm versucht einen etwas komplexeren Programm-Code auf dem Espruino laufen zu lassen.
Stattdessen habe ich mir den Modul Code von GitHub kopiert und etwas angepasst. Den Code kann man einfach per Copy und Paste in BlueTerm einfügen und schon läuft das Programm los.

Hinweis:
Da die Standard Version von BlueTerm keine Kopier-Funktion hat, habe ich eine Fork von BlueTerm (Open Source) erstellt und das Einfügen aus der Zwischenablage ergänzt. Zusätzlich habe ich noch eine Clear-Screen Funktion hinzugefügt, weil mir die Funktion auch gefehlt hat.
Jetzt kann man etwas Text aus einem beliebigen Texteditor kopieren und in BlueTerm einfügen. Viel Spaß damit :-).

Mein Version von BlueTerm + kann man unterhttps://play.google.com/store/apps/details?id=de.jentsch.blueterm finden.

var modules = {};

clearInterval();

var maxdist = 400;

modules.connect = function(/*=PIN*/trig, /*=PIN*/echo, callback) {
var riseTime = 0;
setWatch(function(e) { // check for rising edge
riseTime=e.time;
}, echo, { repeat:true, edge:’rising’ });
setWatch(function(e) { // check for falling edge
callback(((e.time-riseTime)*1000000)/57.0);
}, echo, { repeat:true, edge:’falling’ });
return {
trigger : function() {
digitalPulse(trig, 1, 0.01/*10uS*/);
}
};
};

digitalWrite (LED2, 0);
digitalWrite (LED2, 0);
digitalWrite (LED3, 0);
digitalWrite (C2,1);
digitalWrite (C3,1);

var sensor = modules.connect(A0,A1,function(dist) {
photo = 0;
if (dist < maxdist)
{
digitalWrite (LED3, 1);
digitalWrite (C2,0);
digitalWrite (C3,0);
photo = 1;
} else {
digitalWrite (LED3, 0);
digitalWrite (C2,1);
digitalWrite (C3,1);
}
console.log(photo + „;“ + maxdist + „;“ + dist+“ cm“);
});

setInterval(function() {
sensor.trigger(); // send pulse
}, 100);

Veröffentlicht in Espruino