If polling in the loop has to much lag, then something in your code is eating too many cycles at one time (pretty common with the way Arduino is taught). You need to avoid using the delay() in your code with anything other than a single digit value. The problem with button triggering actions on the interrupt is that many things can not be called from within an interrupt; so you will have to queue the input and then in the loop look for the input being present. This still is a good way as it makes the input detection more accurate; but doesn't solve any lag caused by slow loop code. In my Task Library you will find some examples that show doing similar things. It might help to glance at that.
Hmm, yeah. I just realized that I was going to do the processing in the loop too. I literally have nothing but an MQTT loop in the loop, and the button handling code
Maybe it's the debouncing lib, but at 20ms how laggy can it be?
20ms is not noticeable by 99.99% of human population; only video gamers state they can feel it ;-)
Yeah, so that can't be it...
20ms... if it happens once every second you probably won't notice nothing
if it happens once every 40ms you definitely notice a lag.
I'll test some more and see, thanks
Now I have a different problem, I need to drive two relays over one wire
So I'm thinking something that will connect the wire either to ground, or Vcc, or will leave it open
The first two are fine, but I'm not sure how I can just have a wire float without another relay
What do you mean by "two relays over one wire" ? Do you mean using OneWire protocol or the PJON mentioned above ?
@martinayotte no, nothing like that, just an arrangement that would trigger one relay when the wire was grounded, another when it was connected to Vcc, and neither relay when it was floating
The schematic is two relays and two diodes, one to ground and one to Vcc, so when you ground the wire, current flows from Vcc to ground through one relay, when you connect it to Vcc current flows from Vcc to ground through the other relay
@skorokithakis Could you use a single relay, SPDT? So one circuit normaly open and one normally closed.
@porkyneal no, because i need three states :/ it's for driving a motor forward and reverse, and stopping it
so i need two relays, one for direction and one to interrupt the flow of current
Hey guys, what is the preferred way to clear the ESP's flash? I have some ESP-12S modules that seem to already have some code on them. ESP.getFlashChipRealSize() returns 1048576 bytes. My compiled sketch is 250016 bytes. However, ESP.getFreeHeap() returns 45728 bytes. Am I wrong, or is there something already on the flash, and what would be the best way to clear it?
esptool.py --port /dev/ttyUSB0 erase_flash
BTW, ESP.getFreeHeap() returns RAM not Flash size.
@martinayotte have I understood this correctly, I have a 4M flash (mega bit) i.e 1Megabyte correct?