void jshPinPulse(Pin pin, bool pulsePolarity, JsVarFloat pulseTime) { // ---- USE TIMER FOR PULSE if (!jshIsPinValid(pin)) { jsExceptionHere(JSET_ERROR, "Invalid pin!"); return; } if (pulseTime<=0) { // just wait for everything to complete jstUtilTimerWaitEmpty(); return; } else { // find out if we already had a timer scheduled UtilTimerTask task; if (!jstGetLastPinTimerTask(pin, &task)) { // no timer - just start the pulse now! jshPinOutput(pin, pulsePolarity); task.time = jshGetSystemTime(); } // Now set the end of the pulse to happen on a timer jstPinOutputAtTime(task.time + jshGetTimeFromMilliseconds(pulseTime), &pin, 1, !pulsePolarity); } }
/*JSON{ "type":"method", "class": "Pin", "name" : "writeAtTime", "ifndef" : "SAVE_ON_FLASH", "description" : "Sets the output state of the pin to the parameter given at the specified time", "generate" : "jswrap_pin_writeAtTime", "params" : [ [ "value", "bool", "Whether to set output high (true/1) or low (false/0)"], ["time", "float", "Time at which to write"] ] }*/ void jswrap_pin_writeAtTime(JsVar *parent, bool value, JsVarFloat time) { Pin pin = jshGetPinFromVar(parent); JsSysTime sTime = jshGetTimeFromMilliseconds(time*1000); jstPinOutputAtTime(sTime, &pin, 1, value); }