<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Vintage 555 - A general-purpose button debouncer</title><link>/challenges-projects/project14/diytestequipment/b/blog/posts/vintage-555---a-general-purpose-button-debouncer</link><description>Too many button clicksButtons and tactile switches are frequently used in many projects involving micro controllers; one of the most frequent issue is related to unwanted multiple transitions when the button is pressed once.Tactile switches as well a</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Vintage 555 - A general-purpose button debouncer</title><link>https://community.element14.com/challenges-projects/project14/diytestequipment/b/blog/posts/vintage-555---a-general-purpose-button-debouncer</link><pubDate>Mon, 14 Aug 2017 16:07:45 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4b749376-8970-4f03-a8e3-432dca7749c2</guid><dc:creator>shabaz</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Great post! Very cool thread to share various debouncing methods.&lt;/p&gt;&lt;p&gt;I recently needed to implement single and double-press (and in the future perhaps triple-press) so it was fun creating the state machines for that while also debouncing. One project I semi-worked on used a button for multiple purposes, the user could swap it out for a control unit which would send something like 1-Wire signals. So then the system needed to understand button-presses (and debounce that) but also recognise when the button was swapped out and the human replaced with a higher-speed machine for different functionality (kind-of like a headset which might have a simple mute button, but the more advanced version will have a display and soft-buttons). I didn&amp;#39;t do the hardware or software for that portion of the design.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Another technique where the debounce is semi-hardware and semi-software, is to use a I2C expander and an interrupt. Then, whenever the interrupt signals a pin change, the signal levels are read using I2C. Since it takes some time to perform the I2C read action, the software performs a partial debounce by confirming the data has not changed (the data from the last I2C read is always retained to be compared) or by then waiting for the next interrupt (when the button is released) if an action on release is desired.&amp;nbsp; Some expanders have some deliberate built-in debounce capability too, I&amp;#39;ve not tried them.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=3414&amp;AppID=175&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Vintage 555 - A general-purpose button debouncer</title><link>https://community.element14.com/challenges-projects/project14/diytestequipment/b/blog/posts/vintage-555---a-general-purpose-button-debouncer</link><pubDate>Mon, 14 Aug 2017 13:36:21 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4b749376-8970-4f03-a8e3-432dca7749c2</guid><dc:creator>Workshopshed</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;More debouncing&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-external-small" href="http://www.labbookpages.co.uk/electronics/debounce.html" rel="nofollow ugc noopener" target="_blank" title="http://www.labbookpages.co.uk/electronics/debounce.html"&gt;Switch Debouncing - The Lab Book Pages&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-external-small" href="http://www.edn.com/design/analog/4359228/Follow-the-debouncing-flip-flops" rel="nofollow ugc noopener" target="_blank" title="http://www.edn.com/design/analog/4359228/Follow-the-debouncing-flip-flops"&gt;Follow the debouncing flip-flops | EDN&lt;/a&gt; &lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=3414&amp;AppID=175&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Vintage 555 - A general-purpose button debouncer</title><link>https://community.element14.com/challenges-projects/project14/diytestequipment/b/blog/posts/vintage-555---a-general-purpose-button-debouncer</link><pubDate>Sun, 13 Aug 2017 16:06:43 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4b749376-8970-4f03-a8e3-432dca7749c2</guid><dc:creator>dougw</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Great topic - good job on the blog.&lt;/p&gt;&lt;p&gt;Good way to use up those 555s.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;A couple of additional points:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;As Michael points out, if the switch is connected to an arduino, it can be debounced with software - no extra components or wiring.&lt;/li&gt;&lt;li&gt;If you need perfect and instantaneous debouncing you can use two switches (one for set and one for reset) or a double throw switch also performing set and reset - my favourite is to connect a SPDT switch to cross-coupled inverters or NAND gates.&lt;/li&gt;&lt;/ul&gt;&lt;img src="https://community.element14.com/aggbug?PostID=3414&amp;AppID=175&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Vintage 555 - A general-purpose button debouncer</title><link>https://community.element14.com/challenges-projects/project14/diytestequipment/b/blog/posts/vintage-555---a-general-purpose-button-debouncer</link><pubDate>Sun, 13 Aug 2017 06:53:57 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4b749376-8970-4f03-a8e3-432dca7749c2</guid><dc:creator>koudelad</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Nice post &lt;span&gt;[View:/resized-image/__size/16x16/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-4b749376-8970-4f03-a8e3-432dca7749c2/contentimage_5F00_1.png:16:16]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I have seen the RC variant on STM32 Nucleo boards and I guess it is the cheapest if we consider the total bill of material.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;By the way, PSoCs have a component just for this purpose: &lt;a class="jive-link-external-small" href="http://www.cypress.com/documentation/component-datasheets/debouncer" rel="nofollow ugc noopener" target="_blank"&gt;a Debouncer&lt;/a&gt;. Works like a charm.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=3414&amp;AppID=175&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Vintage 555 - A general-purpose button debouncer</title><link>https://community.element14.com/challenges-projects/project14/diytestequipment/b/blog/posts/vintage-555---a-general-purpose-button-debouncer</link><pubDate>Sun, 13 Aug 2017 05:07:58 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4b749376-8970-4f03-a8e3-432dca7749c2</guid><dc:creator>jw0752</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Hi Enrico,&lt;/p&gt;&lt;p&gt;Thanks for this post. It will be very useful for anyone with a switch that needs debouncing. I love the production of your videos, always so professional. I always think of you and smile when I cobble my videos together.&lt;/p&gt;&lt;p&gt;John&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=3414&amp;AppID=175&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Vintage 555 - A general-purpose button debouncer</title><link>https://community.element14.com/challenges-projects/project14/diytestequipment/b/blog/posts/vintage-555---a-general-purpose-button-debouncer</link><pubDate>Sat, 12 Aug 2017 18:11:52 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4b749376-8970-4f03-a8e3-432dca7749c2</guid><dc:creator>Workshopshed</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Thoughts on using a Schmitt Trigger for debounce?&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=3414&amp;AppID=175&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Vintage 555 - A general-purpose button debouncer</title><link>https://community.element14.com/challenges-projects/project14/diytestequipment/b/blog/posts/vintage-555---a-general-purpose-button-debouncer</link><pubDate>Sat, 12 Aug 2017 16:56:27 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:4b749376-8970-4f03-a8e3-432dca7749c2</guid><dc:creator>DAB</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Excellent post.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The venerable 555 should be in the IC hall of fame.&amp;nbsp; So simple, and yet so versatile.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;DAB&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=3414&amp;AppID=175&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item></channel></rss>