<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.extremist.software/index.php?action=history&amp;feed=atom&amp;title=RGB</id>
	<title>RGB - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.extremist.software/index.php?action=history&amp;feed=atom&amp;title=RGB"/>
	<link rel="alternate" type="text/html" href="https://wiki.extremist.software/index.php?title=RGB&amp;action=history"/>
	<updated>2026-04-06T07:54:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://wiki.extremist.software/index.php?title=RGB&amp;diff=72827&amp;oldid=prev</id>
		<title>Ⅹ: 10101010 ... 01010101</title>
		<link rel="alternate" type="text/html" href="https://wiki.extremist.software/index.php?title=RGB&amp;diff=72827&amp;oldid=prev"/>
		<updated>2021-03-14T07:47:32Z</updated>

		<summary type="html">&lt;p&gt;10101010 ... 01010101&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:47, 14 March 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;Decoding RGB remote control out of the &quot;air&quot;&#039;&#039;&#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RGB Decoder Ring(s)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7556, OON, ___11111 10101010 11010101 01011111 11110101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7561, OON, 11111111 10101010 11010101 01011111 11110101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7562, OFF, 11111111 10101010 11010101 10111111 10110101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7564, OON, 11111111 10101010 11010101 01011111 11110101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7565, OFF, 11111111 10101010 11010101 10111111 10110101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7566, OON, 11111111 10101010 11010101 01011111 11110101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7567, OON, 11111111 10101010 11010101 01011111 11110101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7568, BRI, 11111111 10101010 11010101 11111111 01010101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7569, BRI, 11111111 10101010 11010101 11111111 01010101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7570, DIM, 11111111 10101010 11010101 01111111 11010101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7571, DIM, 11111111 10101010 11010101 01111111 11010101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7572, RRR, 11111111 10101010 11010101 11011111 10101101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7573, GGG, 11111111 10101010 11010101 01101111 11101101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7574, BBB, 11111111 10101010 11010101 10101111 11011101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7575, OFF, 11111111 10101010 11010101 10111111 10110101 01010101&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;RGB hacking on Mitch&amp;#039;s &amp;quot;Trippy RGB Wave Kit&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;RGB hacking on Mitch&amp;#039;s &amp;quot;Trippy RGB Wave Kit&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ⅹ</name></author>
	</entry>
	<entry>
		<id>https://wiki.extremist.software/index.php?title=RGB&amp;diff=61240&amp;oldid=prev</id>
		<title>🔋: blinkier blink</title>
		<link rel="alternate" type="text/html" href="https://wiki.extremist.software/index.php?title=RGB&amp;diff=61240&amp;oldid=prev"/>
		<updated>2017-10-22T04:47:57Z</updated>

		<summary type="html">&lt;p&gt;blinkier blink&lt;/p&gt;
&lt;a href=&quot;https://wiki.extremist.software/index.php?title=RGB&amp;amp;diff=61240&amp;amp;oldid=61239&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>🔋</name></author>
	</entry>
	<entry>
		<id>https://wiki.extremist.software/index.php?title=RGB&amp;diff=61239&amp;oldid=prev</id>
		<title>🔋: blink</title>
		<link rel="alternate" type="text/html" href="https://wiki.extremist.software/index.php?title=RGB&amp;diff=61239&amp;oldid=prev"/>
		<updated>2017-10-21T18:44:17Z</updated>

		<summary type="html">&lt;p&gt;blink&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:44, 21 October 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;rgb.c&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#039;&amp;#039;&amp;#039;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RGB hacking on Mitch&amp;#039;s &amp;quot;Trippy RGB Wave Kit&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*Schematic:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**http://cornfieldelectronics.com/cfe/mfaire/rgbwaveskit/RGBwaveKitSchematic.pdf&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*Soldering Instructions:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**http://cornfieldelectronics.com/cfe/trippyRGB_instructions.php&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== blink.c ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Super simplified c code that blinks, red, green, blue.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/*&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Title: blink.c&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Author: NONE&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Date Created: MMXVII&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Last Modified: 2017.10.21&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Purpose: loop that blinks an RGB LED on PORTB&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mod&amp;#039;d from http://www.toddholoubek.com/classes/pcomp/?page_id=692&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*/&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;//these are the include files. They are outside the project folder&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#include &amp;lt;avr/io.h&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#include &amp;lt;util/delay.h&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;void delay_ms(uint16_t ms) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	//while loop that creates a delay for the duration of the millisecond countdown&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        while ( ms ) &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                _delay_ms(1);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                ms--;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        }&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;int main (void)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  // power off the USI and ADC modules (power save)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  PRR = 0b00000011;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  // disable all Timer interrupts&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  TIMSK = 0x00;         // setting a bit to 0 disables interrupts&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  // set up the input and output pins (the ATtiny25 only has PORTB pins)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  DDRB = 0b00010111;    // setting a bit to 1 makes it an output&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                        //   PB5 (unused) is input&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                        //   PB4 (Blue LED) is output (SWITCHED WITH GREEN?)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                        //   PB3 (IR detect) is input&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                        //   PB2 (Green LED) is output (Blue/???)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                        //   PB1 (Red LED) is output&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                        //   PB0 (IR LED) is output&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  PORTB = 0xFF;         // all PORTB output pins High (all LEDs off)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  //create an infinite loop&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  while(1) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // turn on red LED at PB1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    PORTB &amp;amp;= 0b11111101;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    //PAUSE 250 miliseconds&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    delay_ms(250);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // turn off LED&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    PORTB |= 0b00000010;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    //PAUSE 250 miliseconds&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    delay_ms(250);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // turn on green LED at PB4&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    PORTB &amp;amp;= 0b11101111;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    //PAUSE 250 miliseconds&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    delay_ms(250);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // turn off LED&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    PORTB |= 0b00010000;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    //PAUSE 250 miliseconds&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    delay_ms(250);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // turn on blue LED at PB2&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    PORTB &amp;amp;= 0b11111011;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    //PAUSE 250 miliseconds&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    delay_ms(250);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // turn off LED&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    PORTB |= 0b00000100;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    //PAUSE 250 miliseconds&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    delay_ms(250);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  };&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Compile and install via avr-gcc and avrdude with buspirate&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;avr-gcc -c -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -DF_CPU=8000000    -Wa,-adhlns=&lt;/ins&gt;rgb&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.lst  -mmcu=attiny25 -std=gnu99 blink&lt;/ins&gt;.c &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-o blink.o&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;avr-gcc -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -DF_CPU=8000000    -Wa,-adhlns=rgb.o  -mmcu=attiny25 -std=gnu99 blink.o --output blink.elf -Wl,-Map=.map,--cref&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;avr-objcopy -O ihex -R .eeprom blink.elf blink.hex&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;avrdude -V -p attiny25 -P /dev/ttyUSB0 -c buspirate -U flash:w:blink.hex&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== rgb.c ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;modifying original version for ATtiny25-&amp;gt;85&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;modifying original version for ATtiny25-&amp;gt;85&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 99:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Makefile:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*Makefile:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**http://cornfieldelectronics.com/cfe/mfaire/rgbwaveskit/Makefile&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;**http://cornfieldelectronics.com/cfe/mfaire/rgbwaveskit/Makefile&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*Schematic:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**http://cornfieldelectronics.com/cfe/mfaire/rgbwaveskit/RGBwaveKitSchematic.pdf&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;re-write in progress for simpler compiler/deploy demo, +USB &amp;amp;| bp&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;re-write in progress for simpler compiler/deploy demo, +USB &amp;amp;| bp&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>🔋</name></author>
	</entry>
	<entry>
		<id>https://wiki.extremist.software/index.php?title=RGB&amp;diff=61232&amp;oldid=prev</id>
		<title>🔋: trippy evolution</title>
		<link rel="alternate" type="text/html" href="https://wiki.extremist.software/index.php?title=RGB&amp;diff=61232&amp;oldid=prev"/>
		<updated>2017-10-21T07:15:09Z</updated>

		<summary type="html">&lt;p&gt;trippy evolution&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;rgb.c&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
modifying original version for ATtiny25-&amp;gt;85&lt;br /&gt;
&lt;br /&gt;
*Original rgb.c&lt;br /&gt;
**http://cornfieldelectronics.com/cfe/mfaire/rgbwaveskit/rgb.c&lt;br /&gt;
*Makefile:&lt;br /&gt;
**http://cornfieldelectronics.com/cfe/mfaire/rgbwaveskit/Makefile&lt;br /&gt;
*Schematic:&lt;br /&gt;
**http://cornfieldelectronics.com/cfe/mfaire/rgbwaveskit/RGBwaveKitSchematic.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;re-write in progress for simpler compiler/deploy demo, +USB &amp;amp;| bp&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
RGB Wave&lt;br /&gt;
Firmware&lt;br /&gt;
for use with ATtiny25&lt;br /&gt;
AS220&lt;br /&gt;
Mitch Altman&lt;br /&gt;
09-Mar-09 -- RBG instead of RGB&lt;br /&gt;
&lt;br /&gt;
Distributed under Creative Commons 3.0 -- Attib &amp;amp; Share Alike&lt;br /&gt;
&lt;br /&gt;
Ladyada has a great website about the MiniPOV kit, from which this project was hacked:&lt;br /&gt;
http://ladyada.net/make/minipov3/index.html&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
mod MMXVII&lt;br /&gt;
&lt;br /&gt;
	buspirate reprogramming&lt;br /&gt;
		specify programmer (buspirate) and usb port in makefile&lt;br /&gt;
&lt;br /&gt;
	removed several sections of notes from original trippy project&lt;br /&gt;
&lt;br /&gt;
	TODO:&lt;br /&gt;
		ATtiny85 upgrade w/μnuc for digispark clone&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Red/Blue PWM&amp;#039;d on hardware timer, Green PWM&amp;#039;d firmware loop, over 100 Hz &lt;br /&gt;
IR hardware timer @ 38Khz, IR Detector with ISR (Interrupt Service Routine)&lt;br /&gt;
&lt;br /&gt;
Port	Function&lt;br /&gt;
PB3	IR Detector (ISR PCINT0)&lt;br /&gt;
&lt;br /&gt;
  GIMSK = 0b00100000;   // PCIE=1 to enable Pin Change Interrupts&lt;br /&gt;
  PCMSK = 0b00001000;   // PCINT3 bit = 1 enable Pin Change Interrupts PB3&lt;br /&gt;
  sei();  		// enable microcontroller interrupts&lt;br /&gt;
&lt;br /&gt;
  cli();  // disable microcontroller interrupts, power save in sleep mode&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Parts list for this RGB Light project:&lt;br /&gt;
1   ATtiny25&lt;br /&gt;
1   CR2032 coin-cell battery&lt;br /&gt;
1   CR2032 battery holder&lt;br /&gt;
1   small slide switch (for on-off)&lt;br /&gt;
1   RGB LED (common anode)&lt;br /&gt;
1   white drinking straw&lt;br /&gt;
1   IR333-A IR emitter&lt;br /&gt;
1   TSOP32138 IR detector&lt;br /&gt;
2   47 ohm resistors&lt;br /&gt;
1   1k ohm resistor&lt;br /&gt;
1   0.1 uF capacitor&lt;br /&gt;
1   100 uF capacitor, 6v&lt;br /&gt;
1   6-pin header (if you want to re-program the ATtiny25)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
mod upgrading and programming parts&lt;br /&gt;
1   ATtiny85&lt;br /&gt;
6   Male-Male 0.1&amp;quot; Jumpers**&lt;br /&gt;
1   buspirate**&lt;br /&gt;
	** any ISP compatible programmer &amp;amp; connector&lt;br /&gt;
&lt;br /&gt;
		ATtiny	  buspirate&lt;br /&gt;
		Pin #	  Pin Label&lt;br /&gt;
		  1 &amp;lt;- - -&amp;gt; CS (RST)&lt;br /&gt;
		  4 &amp;lt;- - -&amp;gt; GND&lt;br /&gt;
		  5 &amp;lt;- - -&amp;gt; MOSI&lt;br /&gt;
		  6 &amp;lt;- - -&amp;gt; MISO&lt;br /&gt;
		  7 &amp;lt;- - -&amp;gt; CLK&lt;br /&gt;
		  8 &amp;lt;- - -&amp;gt; 3V3&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
The hardware for this project is very simple:&lt;br /&gt;
    ATtiny25 has 8 pins:&lt;br /&gt;
       pin 1  RST - connects to programming port pin 5&lt;br /&gt;
       pin 2  PB3 - connects to the output of the IR detector (pin 1 of the detector)&lt;br /&gt;
       pin 3  OC1B - Blue lead of RGB LED (cathode -- through a 47 ohm current limiting resistor)&lt;br /&gt;
       pin 4  ground (connects to ground of the IR detector)&lt;br /&gt;
       pin 5  OC0A -  IR emitter (cathode -- through a 1k ohm current limiting resistor) (also connects to programming port pin 4)&lt;br /&gt;
       pin 6  OC1A - Red lead of RGB LED (cathode -- through a 47 ohm current limiting resistor) (also connects to programming port pin 1)&lt;br /&gt;
       pin 7  PB2 - Green lead of RGB LED (cathode) (also connects to programming port pin 3)&lt;br /&gt;
       pin 8  +3v (connects to common anode lead of RGB LED, and anode of IR emitter, and power pin of IR detector)&lt;br /&gt;
&lt;br /&gt;
    The 6-pin programming header (used only if you want to re-program the ATtiny25)&lt;br /&gt;
       also needs to have its pin 2 connected to +3v,&lt;br /&gt;
       and its pin 6 connected to ground.&lt;br /&gt;
&lt;br /&gt;
    This firmware requires that the clock frequency of the ATtiny&lt;br /&gt;
       is the default that it is shipped with:  8.0MHz&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;             // this contains all the IO port definitions&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;      // definitions for interrupts&lt;br /&gt;
#include &amp;lt;avr/sleep.h&amp;gt;          // definitions for power-down modes&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;       // definitions or keeping constants in program memory&lt;br /&gt;
&lt;br /&gt;
// this global variable is normally 0, but when the IR detector sees IR,&lt;br /&gt;
//   its output brings PB3 Low.  That causes an interrupt, which sets Start_Over = 1.&lt;br /&gt;
int Start_Over = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// This is an interrupt routine that will be called whenever the IR detector sees IR.&lt;br /&gt;
//   When the IR detector sees IR, its output pin (connected to PB3) goes Low,&lt;br /&gt;
//     which causes a PCINT0 interrupt (set up for a logic change for PB3).&lt;br /&gt;
//   The only thing this interrupt routine does is set Start_Over to 1.&lt;br /&gt;
//     This will be seen in the main routine, which will start the firmware over from the beginning.&lt;br /&gt;
ISR(PCINT0_vect) {&lt;br /&gt;
  Start_Over = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
The C compiler creates code that will transfer all constants into RAM when the microcontroller&lt;br /&gt;
resets.  Since this firmware has a table (lightTab) that is too large to transfer into RAM&lt;br /&gt;
(and since we don&amp;#039;t need it in RAM) the C compiler needs to be told to keep it in program&lt;br /&gt;
memory space.  This is accomplished by the macro PROGMEM (this is used, below, in the&lt;br /&gt;
definition for the lightTab).  Since the C compiler assumes that constants are in RAM, rather&lt;br /&gt;
than in program memory, when accessing the lightTab, we need to use the pgm_read_byte() macro,&lt;br /&gt;
and we need to use the lightTab as an address, i.e., precede it with &amp;quot;&amp;amp;&amp;quot;.  For example, to&lt;br /&gt;
access lightTab[3].red, which is a byte, this is how to do it:&lt;br /&gt;
     pgm_read_byte( &amp;amp;lightTab[3].red );&lt;br /&gt;
And to access lightTab[3].fadeTime, which is a word, this is how to do it:&lt;br /&gt;
     pgm_read_word( &amp;amp;lightTab[3].fadeTime );&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
The following Light Table consists of any number of rgbElements that will fit into the&lt;br /&gt;
2k flash ROM of the ATtiny25 microcontroller.&lt;br /&gt;
Each rgbElement consists of:&lt;br /&gt;
     fadeTime -- how long to take to fade from previous values of RGB&lt;br /&gt;
                   to the ones specified in this rgbElement&lt;br /&gt;
                   (0 or between 1,000 and 65,535)&lt;br /&gt;
     holdTime -- how long to keep the RGB values once they are faded in&lt;br /&gt;
                   (0 or between 1,000 and 65,535)&lt;br /&gt;
     Red      -- brightness value for Red   (between 0 to 255)&lt;br /&gt;
     Green    -- brightness value for Green (between 0 to 255)&lt;br /&gt;
     Blue     -- brightness value for Blue  (between 0 to 255)&lt;br /&gt;
Both of the time values, fadeTime and holdTime, are expressed as the number of 400&lt;br /&gt;
microseconds -- for example, 2 seconds would be entered as 5000.&lt;br /&gt;
To signify the last rgbElement in the lightTab, its fadeTime and hold time must both&lt;br /&gt;
be 0 (all other values of this last rgbElement are ignored).&lt;br /&gt;
&lt;br /&gt;
NOTE:  I measured the time, and each fadeTime and holdTime is actually&lt;br /&gt;
          550 microseconds&lt;br /&gt;
       instead of 400 microseconds, as calculated.&lt;br /&gt;
&lt;br /&gt;
The values for fadeTime and holdTime must either be 0, or between 1,000 and 65,535&lt;br /&gt;
(i.e., 0, or between 0.4 sec and 26.2 sec).&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
  The Light Sequences and the notions of fadeTime and holdTime&lt;br /&gt;
  are taken from Pete Griffiths, downloaded from:&lt;br /&gt;
  http://www.petesworld.demon.co.uk/homebrew/PIC/rgb/index.htm&lt;br /&gt;
&lt;br /&gt;
  I modified it to fit my purposes.&lt;br /&gt;
&lt;br /&gt;
  The sequence takes about 2 minutes.&lt;br /&gt;
  More precisely:&lt;br /&gt;
       adding all of the fadeTime values together:  121,000&lt;br /&gt;
       adding all of the holdTime values together:  134,000&lt;br /&gt;
       adding these together = 259,000.&lt;br /&gt;
  Since the time values are each 400 microseconds, 255,000 is 102.0 seconds,&lt;br /&gt;
    or, 1.70 minutes, which is 1 minute, 42 seconds.&lt;br /&gt;
&lt;br /&gt;
  The Main function repeats the sequence several times.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// table of Light Sequences&lt;br /&gt;
struct rgbElement {&lt;br /&gt;
  int fadeTime;            // how long to fade from previous values of RGB to the ones specified in this rgbElement (0 to 65,535)&lt;br /&gt;
  int holdTime;            // how long to keep the RGB values once they are faded in (0 or 1000 to 65,535)&lt;br /&gt;
  unsigned char red;       // brightness value for Red LED (0 to 255)&lt;br /&gt;
  unsigned char green;     // brightness value for Green LED (0 to 255)&lt;br /&gt;
  unsigned char blue;      // brightness value for Blue LED (0 to 255)&lt;br /&gt;
} const lightTab[] PROGMEM = {&lt;br /&gt;
  {     0,   500, 255,   0,   0 },&lt;br /&gt;
  {   500,     0,   0,   0,   0 },&lt;br /&gt;
  {     0,   500,   0, 255,   0 },&lt;br /&gt;
  {   500,     0,   0,   0,   0 },&lt;br /&gt;
  {     0,   500,   0,   0, 255 },&lt;br /&gt;
  {   500,     0,   0,   0,   0 },&lt;br /&gt;
  {  2500,  2500, 255,   0,   0 },&lt;br /&gt;
  {  2500,  2500,   0, 255,   0 },&lt;br /&gt;
  {  2500,  2500,   0,   0, 255 },&lt;br /&gt;
  {  2500,  2500, 155,  64,   0 },&lt;br /&gt;
  {  2500,  2500,  64, 255,  64 },&lt;br /&gt;
  {  2500,  2500,   0,  64, 255 },&lt;br /&gt;
  {  2500,  2500,  64,   0,  64 },&lt;br /&gt;
  {     0,  1500, 155,   0,   0 },&lt;br /&gt;
  {     0,  1500,   0, 255,   0 },&lt;br /&gt;
  {     0,  1500,   0,   0, 255 },&lt;br /&gt;
  {     0,  1500, 140,   0, 240 },&lt;br /&gt;
  {     0,  1500, 155, 155,   0 },&lt;br /&gt;
  {     0,  1500, 155, 255, 255 },&lt;br /&gt;
  {     0,  1500, 128, 128, 128 },&lt;br /&gt;
  {     0,  1500,  48,  48,  58 },&lt;br /&gt;
  {     0,  1500,   0,   0,   0 },&lt;br /&gt;
  {  2500,  2500, 155,   0,   0 },&lt;br /&gt;
  {  2500,  2500, 155, 255,   0 },&lt;br /&gt;
  {  2500,  2500,   0, 255,   0 },&lt;br /&gt;
  {  2500,  2500,   0, 255, 255 },&lt;br /&gt;
  {  2500,  2500,   0,   0, 255 },&lt;br /&gt;
  {  2500,  2500, 155,   0, 255 },&lt;br /&gt;
  {  2500,     0,   0,   0,   0 },&lt;br /&gt;
  {  2500,  2500, 155,   0,   0 },&lt;br /&gt;
  {  2500,  2500, 155, 255,   0 },&lt;br /&gt;
  {  2500,  2500,   0, 255,   0 },&lt;br /&gt;
  {  2500,  2500,   0, 255, 255 },&lt;br /&gt;
  {  2500,  2500,   0,   0, 255 },&lt;br /&gt;
  {  2500,  2500, 155,   0, 255 },&lt;br /&gt;
  {  2500,     0,   0,   0,   0 },&lt;br /&gt;
  {  2500,  2500, 154,  32,   0 },&lt;br /&gt;
  {  2500,  2500, 154, 128,   0 },&lt;br /&gt;
  {  2500,  2500, 154, 240,   0 },&lt;br /&gt;
  {  2500,  2500, 128, 240,   0 },&lt;br /&gt;
  {     0,  2500,   0,   0,   0 },&lt;br /&gt;
  {  2500,  2500,   0,  16, 255 },&lt;br /&gt;
  {  2500,  2500,   0, 128, 255 },&lt;br /&gt;
  {  2500,  2500,   0, 240, 128 },&lt;br /&gt;
  {  2500,  2500,  16,  16, 240 },&lt;br /&gt;
  {  2500,  2500, 140,  16, 240 },&lt;br /&gt;
  {  2500,  2500,  64,   0, 250 },&lt;br /&gt;
  {     0,  2500,  10,  10,  10 },&lt;br /&gt;
  {     0,  2500,   0,   0,   0 },&lt;br /&gt;
  {  2500,  2500, 140,   0, 240 },&lt;br /&gt;
  {  2500,  2500,  32,   0, 240 },&lt;br /&gt;
  {  2500,  2500, 128,   0, 128 },&lt;br /&gt;
  {  2500,  2500, 140,   0,  32 },&lt;br /&gt;
  {  2500,     0,   0,   0,  10 },&lt;br /&gt;
  {  2500,     0,   0,   0,   0 },&lt;br /&gt;
  {  1000,  1000,   0,   0,   0 },&lt;br /&gt;
  {  1000,  1000,  32,   0,   0 },&lt;br /&gt;
  {  1000,  1000,  64,   0,   0 },&lt;br /&gt;
  {     0,  1000,  96,   0,   0 },&lt;br /&gt;
  {  1000,     0, 128,   0,   0 },&lt;br /&gt;
  {  1000,     0, 160,  32,   0 },&lt;br /&gt;
  {  1000,     0, 192,  64,   0 },&lt;br /&gt;
  {  1000,     0, 124,  96,   0 },&lt;br /&gt;
  {     0,  1000, 155, 128,   0 },&lt;br /&gt;
  {  1000,  1000,   0, 160,   0 },&lt;br /&gt;
  {     0,  1000,   0, 192,   0 },&lt;br /&gt;
  {  1000,  1000,   0, 224,  32 },&lt;br /&gt;
  {  1000,     0,   0, 255,  64 },&lt;br /&gt;
  {  1000,     0,   0,   0,  96 },&lt;br /&gt;
  {  1000,     0,   0,   0, 128 },&lt;br /&gt;
  {  1000,     0,   0,   0, 160 },&lt;br /&gt;
  {  1000,     0,   0,   0, 192 },&lt;br /&gt;
  {  1000,     0,   0,   0, 224 },&lt;br /&gt;
  {  1000,  1000,   0,   0, 255 },&lt;br /&gt;
  {  1000,     0,   0,   0,   0 },&lt;br /&gt;
  {     0,  1000,   0,   0, 255 },&lt;br /&gt;
  {  1000,  1000,  32,   0,   0 },&lt;br /&gt;
  {  1000,  1000,  96,   0,   0 },&lt;br /&gt;
  {  1000,  1000, 160,   0,   0 },&lt;br /&gt;
  {  1000,     0, 255,   0,   0 },&lt;br /&gt;
  {  1000,  1000,   0,  96,   0 },&lt;br /&gt;
  {  1000,  1000,   0, 160,  32 },&lt;br /&gt;
  {  1000,  1000,   0, 224,  64 },&lt;br /&gt;
  {  1000,  1000,   0, 255,  96 },&lt;br /&gt;
  {  1000,  1000,   0,   0, 128 },&lt;br /&gt;
  {  1000,  1000,   0,   0, 160 },&lt;br /&gt;
  {     0,  1000,   0,  32, 192 },&lt;br /&gt;
  {     0,  1000,   0,  64, 224 },&lt;br /&gt;
  {     0,  1000,   0,  96, 225 },&lt;br /&gt;
  {     0,  1000,   0, 128,   0 },&lt;br /&gt;
  {     0,  1000,   0, 160,   0 },&lt;br /&gt;
  {     0,  1000,   0, 192,  32 },&lt;br /&gt;
  {     0,  1000,   0, 224,  64 },&lt;br /&gt;
  {     0,  1000,   0, 255,  96 },&lt;br /&gt;
  {     0,  1000,   0,   0, 255 },&lt;br /&gt;
  {     0,  1000,   0,   0,   0 },&lt;br /&gt;
  {     0,     0,   0,   0,   0 }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// This function delays the specified number of 10 microseconds&lt;br /&gt;
void delay_ten_us(unsigned long int us) {&lt;br /&gt;
  unsigned long int count;&lt;br /&gt;
  const unsigned long int DelayCount=6;  // this value was determined by trial and error&lt;br /&gt;
&lt;br /&gt;
  while (us != 0) {&lt;br /&gt;
    // Toggling PB5 is done here to force the compiler to do this loop, rather than optimize it away&lt;br /&gt;
    //   NOTE:  Below you will see: &amp;quot;0b00100000&amp;quot;.&lt;br /&gt;
    //   This is an 8-bit binary number with all bits set to 0 except for the the 6th one from the right.&lt;br /&gt;
    //   Since bits in binary numbers are labeled starting from 0, the bit in this binary number that is set to 1&lt;br /&gt;
    //     is called PB5, which is the one unsed PORTB pin, which is why we can use it here&lt;br /&gt;
    //     (to fool the optimizing compiler to not optimize away this delay loop).&lt;br /&gt;
    for (count=0; count &amp;lt;= DelayCount; count++) {PINB |= 0b00100000;};&lt;br /&gt;
    us--;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// This function delays (1.56 microseconds * x) + 2 microseconds&lt;br /&gt;
//   (determined empirically)&lt;br /&gt;
//    e.g.  if x = 1, the delay is (1 * 1.56) + 2 = 5.1 microseconds&lt;br /&gt;
//          if x = 255, the delay is (255 * 1.56) + 2 = 399.8 microseconds&lt;br /&gt;
void delay_x_us(unsigned long int x) {&lt;br /&gt;
  unsigned long int count;&lt;br /&gt;
  const unsigned long int DelayCount=0;  // the shortest delay&lt;br /&gt;
&lt;br /&gt;
  while (x != 0) {&lt;br /&gt;
    // Toggling PB5 is done here to force the compiler to do this loop, rather than optimize it away&lt;br /&gt;
    //   (see NOTE in the comments in the delay_ten_us() function, above)&lt;br /&gt;
    for (count=0; count &amp;lt;= DelayCount; count++) {PINB |= 0b00100000;};&lt;br /&gt;
    x--;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// This function pulses the Green LED on PB2 (pin 7)&lt;br /&gt;
// Since Green LED is not on a PWM pin on a hardware timer, we need to pulse it manually.&lt;br /&gt;
//   We pulse it High for [Green value], and pulse it Low for [255 - Green value].&lt;br /&gt;
//   Since the delay_x_us function delays 1.56x+2 microseconds,&lt;br /&gt;
//     the total period is about 400 microseconds, which is 2500Hz (if we repeat it)&lt;br /&gt;
//     (and that is way fast enough so that we don&amp;#039;t perceive the Green LED flicker).&lt;br /&gt;
void pulseGreen(unsigned char greenVal) {&lt;br /&gt;
  PORTB &amp;amp;= 0b11111011;  // turn on Green LED at PB2 (pin 7) for 4 * Green value -- (by bringing this pin Low)&lt;br /&gt;
  delay_x_us( greenVal );&lt;br /&gt;
  PORTB |= 0b00000100;  // turn off Green LED at PB2 for 4 * (255 - Green value) -- (by bringing this pin High)&lt;br /&gt;
  delay_x_us( (255 - greenVal) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void pulseIR(void) {&lt;br /&gt;
  // We will use Timer 0 to pulse the IR LED at 38KHz&lt;br /&gt;
  //&lt;br /&gt;
  // We pulse the IR emitter for only 170 microseconds.  We do this to save battery power.&lt;br /&gt;
  //   The minimum number of 38KHz pulses that the IR detector needs to detect IR is 6.&lt;br /&gt;
  //   170 microseconds gives slightly more than 6 periods of 38KHz, which is enough to&lt;br /&gt;
  //   reflect off of your hand and hit the IR detector.&lt;br /&gt;
  //&lt;br /&gt;
  // start up Timer0 in CTC Mode at about 38KHz to drive the IR emitter on output OC0A:&lt;br /&gt;
  //   8-bit Timer0 OC0A (PB0, pin 5) is set up for CTC mode, toggling output on each compare&lt;br /&gt;
  //   Fclk = Clock = 8MHz&lt;br /&gt;
  //   Prescale = 1&lt;br /&gt;
  //   OCR0A = 104&lt;br /&gt;
  //   F = Fclk / (2 * Prescale * (1 + OCR0A) ) = 38KHz&lt;br /&gt;
  //&lt;br /&gt;
  // Please see the ATtiny25 datasheet for descriptions of these registers.&lt;br /&gt;
  TCCR0A = 0b01000010;  // COM0A1:0=01 to toggle OC0A on Compare Match&lt;br /&gt;
                        // COM0B1:0=00 to disconnect OC0B&lt;br /&gt;
                        // bits 3:2 are unused&lt;br /&gt;
                        // WGM01:00=10 for CTC Mode (WGM02=0 in TCCR0B)&lt;br /&gt;
  TCCR0B = 0b00000001;  // FOC0A=0 (no force compare)&lt;br /&gt;
                        // F0C0B=0 (no force compare)&lt;br /&gt;
                        // bits 5:4 are unused&lt;br /&gt;
                        // WGM2=0 for CTC Mode (WGM01:00=10 in TCCR0A)&lt;br /&gt;
                        // CS02:00=001 for divide by 1 prescaler (this starts Timer0)&lt;br /&gt;
  OCR0A = 104;  // to output 38,095.2KHz on OC0A (PB0, pin 5)&lt;br /&gt;
&lt;br /&gt;
  // keep the IR going at 38KHz for 170 microseconds (which is slightly more than 6 periods of 38KHz)&lt;br /&gt;
  delay_ten_us(17);   // delay 170 microseconds&lt;br /&gt;
&lt;br /&gt;
  // turn off Timer0 to stop 38KHz pulsing of IR&lt;br /&gt;
  TCCR0B = 0b00000000;  // CS02:CS00=000 to stop Timer0 (turn off IR emitter)&lt;br /&gt;
  TCCR0A = 0b00000000;  // COM0A1:0=00 to disconnect OC0A from PB0 (pin 5)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// This function sends one rgbElement of lightTab to the LEDs,&lt;br /&gt;
//   given index to the codeElement in lightTab&lt;br /&gt;
//     If both fadeTime = 0 and holdTime = 0 that signifies the last rgbElement of the lightTab&lt;br /&gt;
//&lt;br /&gt;
// There are several variables used in this function:&lt;br /&gt;
//   index:     the input argument for this function -- it is the index to lightTab, pointing to the rgbElement from lightTab&lt;br /&gt;
//&lt;br /&gt;
//   FadeTime:  gotten from rgbElement in lightTab&lt;br /&gt;
//   HoldTime:  gotten from rgbElement in lightTab&lt;br /&gt;
//   Red:       gotten from rgbElement in lightTab&lt;br /&gt;
//   Green:     gotten from rgbElement in lightTab&lt;br /&gt;
//   Blue:      gotten from rgbElement in lightTab&lt;br /&gt;
//&lt;br /&gt;
//   redPrev:   gotten from previous rgbElement in lightTab (set to 0 if index to lightTab = 0)&lt;br /&gt;
//   greenPrev: gotten from previous rgbElement in lightTab (set to 0 if index to lightTab = 0)&lt;br /&gt;
//   bluePrev:  gotten from previous rgbElement in lightTab (set to 0 if index to lightTab = 0)&lt;br /&gt;
//&lt;br /&gt;
//   redTime:   when the fadeCounter in the fade loop reaches this value, we will update the Red LED brightness value&lt;br /&gt;
//   greenTime: when the fadeCounter in the fade loop reaches this value, we will update the Green LED brightness value&lt;br /&gt;
//   blueTime:  when the fadeCounter in the fade loop reaches this value, we will update the Blue LED brightness value&lt;br /&gt;
//&lt;br /&gt;
//   redTemp:   keep track of current Red LED brightness value as we&amp;#039;re fading up or down in the fade loop&lt;br /&gt;
//   greenTemp: keep track of current Green LED brightness value as we&amp;#039;re fading up or down in the fade loop&lt;br /&gt;
//   blueTemp:  keep track of current Blue LED brightness value as we&amp;#039;re fading up or down in the fade loop&lt;br /&gt;
//&lt;br /&gt;
//   redDelta:   the total amount of brightness we need to change to get from where the Red LED was to where we want it&lt;br /&gt;
//   greenDelta: the total amount of brightness we need to change to get from where the Green LED was to where we want it&lt;br /&gt;
//   blueDelta:  the total amount of brightness we need to change to get from where the Blue LED was to where we want it&lt;br /&gt;
//&lt;br /&gt;
//   redTimeInc:   in the fade loop we will update the Red LED every time the fadeCounter increments by this amount&lt;br /&gt;
//   greenTimeInc: in the fade loop we will update the Green LED every time the fadeCounter increments by this amount&lt;br /&gt;
//   blueTimeInc:  in the fade loop we will update the Blue LED every time the fadeCounter increments by this amount&lt;br /&gt;
//&lt;br /&gt;
//   fadeCounter:  for counting through the steps (each of which is 400us long) in the fade loop&lt;br /&gt;
//&lt;br /&gt;
//   holdCounter:  for counting through the steps (each of which is 400us long) in the hold loop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void sendrgbElement( int index ) {&lt;br /&gt;
  // get values of rgbElement from lightTab&lt;br /&gt;
  int FadeTime = pgm_read_word(&amp;amp;lightTab[index].fadeTime);&lt;br /&gt;
  int HoldTime = pgm_read_word(&amp;amp;lightTab[index].holdTime);&lt;br /&gt;
  unsigned char Red = pgm_read_byte(&amp;amp;lightTab[index].red);&lt;br /&gt;
  unsigned char Green = pgm_read_byte(&amp;amp;lightTab[index].green);&lt;br /&gt;
  unsigned char Blue = pgm_read_byte(&amp;amp;lightTab[index].blue);&lt;br /&gt;
&lt;br /&gt;
  // get previous RGB brightness values from lightTab&lt;br /&gt;
  //   (these values are set to 0 if index to lightTab = 0)&lt;br /&gt;
  unsigned char redPrev = 0;    // keep track of previous Red brightness value&lt;br /&gt;
  unsigned char greenPrev = 0;  // keep track of previous Green brightness value&lt;br /&gt;
  unsigned char bluePrev = 0;   // keep track of previous Blue brightness value&lt;br /&gt;
  if (index != 0) {&lt;br /&gt;
    redPrev = pgm_read_byte(&amp;amp;lightTab[index-1].red);&lt;br /&gt;
    greenPrev = pgm_read_byte(&amp;amp;lightTab[index-1].green);&lt;br /&gt;
    bluePrev = pgm_read_byte(&amp;amp;lightTab[index-1].blue);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // set color timing values&lt;br /&gt;
  //   everytime the fadeCounter reaches this timing value in the fade loop&lt;br /&gt;
  //   we will update the color value for the color (default value of 0 for no updating)&lt;br /&gt;
  int redTime = 0;&lt;br /&gt;
  int greenTime = 0;&lt;br /&gt;
  int blueTime = 0;&lt;br /&gt;
&lt;br /&gt;
  // set values of temp colors&lt;br /&gt;
  //   starting from the previous color values,&lt;br /&gt;
  //   these will change to the color values just gotten from rgbElement over fadeTime&lt;br /&gt;
  unsigned char redTemp = redPrev;&lt;br /&gt;
  unsigned char greenTemp = greenPrev;&lt;br /&gt;
  unsigned char blueTemp = bluePrev;&lt;br /&gt;
&lt;br /&gt;
  // fade LEDs up or down, from previous values to current values&lt;br /&gt;
  int redDelta = Red - redPrev;                // total amount to fade red value (up or down) during fadeTime&lt;br /&gt;
  int greenDelta = Green - greenPrev;          // total amount to fade green value (up or down) during fadeTime&lt;br /&gt;
  int blueDelta = Blue - bluePrev;             // total amount to fade blue value (up or down) during fadeTime&lt;br /&gt;
&lt;br /&gt;
  if (redDelta != 0) {&lt;br /&gt;
    redTime = (FadeTime / redDelta);           // increment Red value every time we reach this fade value in the fade loop&lt;br /&gt;
    if (redTime &amp;lt; 0) redTime = -redTime;       //    absolute value&lt;br /&gt;
    redTime = redTime + 1;                     // adjust for truncation of integer division&lt;br /&gt;
  }                                            //&lt;br /&gt;
  int redTimeInc = redTime;                    // increment Red value every time the fadeCounter increments this amount&lt;br /&gt;
&lt;br /&gt;
  if (greenDelta != 0) {&lt;br /&gt;
    greenTime = (FadeTime / greenDelta);       // increment Green value every time we reach this fade value in the fade loop&lt;br /&gt;
    if (greenTime &amp;lt; 0) greenTime = -greenTime; //    absolute value&lt;br /&gt;
    greenTime = greenTime + 1;                 // adjust for truncation of integer division&lt;br /&gt;
  }                                            //&lt;br /&gt;
  int greenTimeInc = greenTime;                // increment Green value every time the fadeCounter increments this amount&lt;br /&gt;
&lt;br /&gt;
  if (blueDelta != 0) {&lt;br /&gt;
    blueTime = (FadeTime / blueDelta);         // increment Blue value every time we reach this fade value in the fade loop&lt;br /&gt;
    if (blueTime &amp;lt; 0) blueTime = -blueTime;    //    absolute value&lt;br /&gt;
    blueTime = blueTime + 1;                   // adjust for truncation of integer division&lt;br /&gt;
  }                                            //&lt;br /&gt;
  int blueTimeInc = blueTime;                  // increment Blue value every time the fade value increments this amount&lt;br /&gt;
&lt;br /&gt;
  // set color increment values&lt;br /&gt;
  //   the amount to increment color value each time we update it in the fade loop&lt;br /&gt;
  //   (default value of 1, to slowly increase brightness each time through the fade loop)&lt;br /&gt;
  unsigned char redInc = 1;&lt;br /&gt;
  unsigned char greenInc = 1;&lt;br /&gt;
  unsigned char blueInc = 1;&lt;br /&gt;
  // if we need to fade down the brightness, then make the increment values negative&lt;br /&gt;
  if (redDelta &amp;lt; 0) redInc = -1;&lt;br /&gt;
  if (greenDelta &amp;lt; 0) greenInc = -1;&lt;br /&gt;
  if (blueDelta &amp;lt; 0) blueInc = -1;&lt;br /&gt;
&lt;br /&gt;
  // if FadeTime = 0, then just set the LEDs blinking at the RGB values (the fade loop will not be executed)&lt;br /&gt;
  if (FadeTime == 0) {&lt;br /&gt;
    greenTemp = Green; // no need to manually pulse Green LED on PB2 (pin 7) now, since it will be done in the hold loop&lt;br /&gt;
    OCR1A = Red;       // update PWM for Red LED on OC1A (pin 6)&lt;br /&gt;
    OCR1B = Blue;      // update PWM for Blue LED on OC1B (pin 3)&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // fade loop&lt;br /&gt;
  //   this loop will independently fade each LED up or down according to all of the above variables&lt;br /&gt;
  //   (it will take a length of time, FadeTime, to accomplish the task)&lt;br /&gt;
  //   this loop is not executed if FadeTime = 0 (since 1 is not &amp;lt;= 0, in the &amp;quot;for&amp;quot; loop)&lt;br /&gt;
  for (int fadeCounter=1; fadeCounter&amp;lt;=FadeTime; fadeCounter++) {&lt;br /&gt;
    if ( fadeCounter == redTime ) {&lt;br /&gt;
      redTemp = redTemp + redInc;                 // increment to next red value&lt;br /&gt;
      redTime = redTime + redTimeInc;             // we&amp;#039;ll increment Red value again when FadeTime reaches new redTime&lt;br /&gt;
    }&lt;br /&gt;
    if ( fadeCounter == greenTime ) {&lt;br /&gt;
      greenTemp = greenTemp + greenInc;           // increment to next green value&lt;br /&gt;
      greenTime = greenTime + greenTimeInc;       // we&amp;#039;ll increment Green value again when FadeTime reaches new greenTime&lt;br /&gt;
    }&lt;br /&gt;
    if ( fadeCounter == blueTime ) {&lt;br /&gt;
      blueTemp = blueTemp + blueInc;              // increment to next blue value&lt;br /&gt;
      blueTime = blueTime + blueTimeInc;          // we&amp;#039;ll increment Blue value again when FadeTime reaches new blueTime&lt;br /&gt;
    }&lt;br /&gt;
    pulseGreen(greenTemp); // one manual PWM pulse on the Green LED on PB2 (pin 7) for a period of 400 microseconds&lt;br /&gt;
    OCR1A = redTemp;       // update PWM for Red LED on OC1A (pin 6)&lt;br /&gt;
    OCR1B = blueTemp;      // update PWM for Blue LED on OC1B (pin 3)&lt;br /&gt;
    pulseIR();             // pulse the IR emitter for a little bit (if there&amp;#039;s a reflection to the IR detector as a result, then the ISR will set Start_Over = 1)&lt;br /&gt;
    if ( Start_Over ) return;  // if the IR detector saw IR, then we should reset and start over (Start_Over gets set to 1 in the interrupt routine if the IR detector saw IR)&lt;br /&gt;
  }&lt;br /&gt;
  OCR1A = Red;    // leave Timer1 PWM at final brightness value for Red (in case there were rounding errors in above math)&lt;br /&gt;
  OCR1B = Blue;   // leave Timer1 PWM at final brightness value for Blue (in case there were rounding errors in above math)&lt;br /&gt;
&lt;br /&gt;
  // hold loop&lt;br /&gt;
  //   hold all LEDs at current values for HoldTime&lt;br /&gt;
  for (int holdCounter=0; holdCounter&amp;lt;HoldTime; holdCounter++) {&lt;br /&gt;
    pulseGreen(greenTemp); // one manual PWM pulse on the Green LED on PB2 (pin 7) for a period of 400 microseconds&lt;br /&gt;
                           // the Red LED will continue to pulse automatically from the hardware Timer1&lt;br /&gt;
                           // the Blue LED will continue to pulse automatically from the hardware Timer1&lt;br /&gt;
    pulseIR();             // pulse the IR emitter for a little bit (if there&amp;#039;s a reflection to the IR detector as a result, then the ISR will set Start_Over = 1)&lt;br /&gt;
    if ( Start_Over ) return;  // if the IR detector saw IR, then we should reset and start over (Start_Over gets set to 1 in the interrupt routine if the IR detector saw IR)&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
  start_over:&lt;br /&gt;
  // disable the Watch Dog Timer (since we won&amp;#039;t be using it, this will save battery power)&lt;br /&gt;
  MCUSR = 0b00000000;   // first step:   WDRF=0 (Watch Dog Reset Flag)&lt;br /&gt;
  WDTCR = 0b00011000;   // second step:  WDCE=1 and WDE=1 (Watch Dog Change Enable and Watch Dog Enable)&lt;br /&gt;
  WDTCR = 0b00000000;   // third step:   WDE=0&lt;br /&gt;
  // turn off power to the USI and ADC modules (since we won&amp;#039;t be using it, this will save battery power)&lt;br /&gt;
  PRR = 0b00000011;&lt;br /&gt;
  // disable all Timer interrupts&lt;br /&gt;
  TIMSK = 0x00;         // setting a bit to 0 disables interrupts&lt;br /&gt;
  // set up the input and output pins (the ATtiny25 only has PORTB pins)&lt;br /&gt;
  DDRB = 0b00010111;    // setting a bit to 1 makes it an output, setting a bit to 0 makes it an input&lt;br /&gt;
                        //   PB5 (unused) is input&lt;br /&gt;
                        //   PB4 (Blue LED) is output&lt;br /&gt;
                        //   PB3 (IR detect) is input&lt;br /&gt;
                        //   PB2 (Green LED) is output&lt;br /&gt;
                        //   PB1 (Red LED) is output&lt;br /&gt;
                        //   PB0 (IR LED) is output&lt;br /&gt;
  PORTB = 0xFF;         // all PORTB output pins High (all LEDs off) -- (if we set an input pin High it activates a pull-up resistor, which we don&amp;#039;t need, but don&amp;#039;t care about either)&lt;br /&gt;
&lt;br /&gt;
  // set up PB3 so that a logic change causes an interrupt (this will happen when the IR detector goes from seeing IR to not seeing IR, or from not seeing IR to seeing IR)&lt;br /&gt;
  GIMSK = 0b00100000;   // PCIE=1 to enable Pin Change Interrupts&lt;br /&gt;
  PCMSK = 0b00001000;   // PCINT3 bit = 1 to enable Pin Change Interrupts for PB3&lt;br /&gt;
  sei();                // enable microcontroller interrupts&lt;br /&gt;
&lt;br /&gt;
  // this global var gets set to 1 in the interrupt service routine if the IR detector sees IR&lt;br /&gt;
  Start_Over = 0;&lt;br /&gt;
&lt;br /&gt;
  // We will use Timer 1 to fade the Red and Blue LEDs up and down&lt;br /&gt;
  //&lt;br /&gt;
  // start up Timer1 in PWM Mode at 122Hz to drive Red LED on output OC1A and Blue LED on output OC1B:&lt;br /&gt;
  //   8-bit Timer1 OC1A (PB1, pin 6) and OC1B (PB4, pin 3) are set up as outputs to toggle in PWM mode&lt;br /&gt;
  //   Fclk = Clock = 8MHz&lt;br /&gt;
  //   Prescale = 256&lt;br /&gt;
  //   MAX = 255 (by setting OCR1C=255)&lt;br /&gt;
  //   OCR1A =  0 (as an initial value -- this value will increase to increase brightness of Red LED)&lt;br /&gt;
  //   OCR1B =  0 (as an initial value -- this value will increase to increase brightness of Blue LED)&lt;br /&gt;
  //   F = Fclk / (Prescale * (MAX+1) ) = 122Hz&lt;br /&gt;
  // There is nothing too important about driving the Red and Blue LEDs at 122Hz, it is somewhat arbitrary,&lt;br /&gt;
  //   but it is fast enough to make it seem that the Red and Blue LEDs are not flickering.&lt;br /&gt;
  // Later in the firmware, the OCR1A and OCR1B compare register values will change,&lt;br /&gt;
  //   but the period for Timer1 will always remain the same (with F = 122Hz, always) --&lt;br /&gt;
  //   with OCR1A = 0, the portion of the period with the Red LED on is a minimum&lt;br /&gt;
  //     so the Red LED is very dim,&lt;br /&gt;
  //   with OCR1A = 255, the portion of the period with the Red LED on is a maximum&lt;br /&gt;
  //     so the Red LED is very bright.&lt;br /&gt;
  //   with OCR1B = 0, the portion of the period with the Blue LED on is a minimum&lt;br /&gt;
  //     so the Blue LED is very dim,&lt;br /&gt;
  //   with OCR1B = 255, the portion of the period with the Blue LED on is a maximum&lt;br /&gt;
  //     so the Blue LED is very bright.&lt;br /&gt;
  //   the brightness of the Red LED can be any brightness between the min and max&lt;br /&gt;
  //     by varying the value of OCR1A between 0 and 255.&lt;br /&gt;
  //   the brightness of the Blue LED can be any brightness between the min and max&lt;br /&gt;
  //     by varying the value of OCR1B between 0 and 255.&lt;br /&gt;
  //&lt;br /&gt;
  // Please see the ATtiny25 datasheet for descriptions of these registers.&lt;br /&gt;
  GTCCR = 0b01110000;   // TSM=0 (we are not using synchronization mode)&lt;br /&gt;
                        // PWM1B=1 for PWM mode for compare register B&lt;br /&gt;
                        // COM1B1:0=11 for inverting PWM on OC1B (Blue LED output pin)&lt;br /&gt;
                        // FOC1B=0 (no Force Output Compare for compare register B)&lt;br /&gt;
                        // FOC1A=0 (no Force Output Compare for compare register A)&lt;br /&gt;
                        // PSR1=0 (do not reset the prescaler)&lt;br /&gt;
                        // PSR0=0 (do not reset the prescaler)&lt;br /&gt;
  TCCR1 = 0b01111001;   // CTC1=0 for PWM mode&lt;br /&gt;
                        // PWM1A=1 for PWM mode for compare register A&lt;br /&gt;
                        // COM1A1:0=11 for inverting PWM on OC1A (Red LED output pin)&lt;br /&gt;
                        // CS13:0=1001 for Prescale=256 (this starts Timer 1)&lt;br /&gt;
  OCR1C = 255;   // sets the MAX count for the PWM to 255 (to get PWM frequency of 122Hz)&lt;br /&gt;
  OCR1A = 0;  // start with minimum brightness for Red LED on OC1A (PB1, pin 6)&lt;br /&gt;
  OCR1B = 0;  // start with minimum brightness for Blue LED on OC1B (PB4, pin 3)&lt;br /&gt;
&lt;br /&gt;
  // Since we are only using hardware timers to drive the Red and Blue LEDs with PWM&lt;br /&gt;
  //   we will pulse the Green LED manually with the firmware (using the pulseGreen() function, which is called by the sendrgbElement() function)&lt;br /&gt;
&lt;br /&gt;
  // This loop goes through the lightTab, displaying each rgbElement in the table&lt;br /&gt;
  //   the loop knows that the last rgbElement has been displayed&lt;br /&gt;
  //   when it sees an rgbElement from lightTab that has both fadeTime=0 and holdTime=0&lt;br /&gt;
  // This loop also starts the color sequence over from the beginning of lightTab if Start_Over is set&lt;br /&gt;
  //   (which happens when IR was detected by the IR detector)&lt;br /&gt;
  int index = 0;  // this points to the next rgbElement in the lightTab (initially pointing to the first rgbElement)&lt;br /&gt;
  // send the entire 1.7-minute sequence 18 times so that it lasts about 1/2 hour.&lt;br /&gt;
  // Actually, I measured the time, and the sequence lasts 2.33 minutes, so 13 times gives about 1/2 hour.&lt;br /&gt;
  for (int count=0; count&amp;lt;180; count++) {&lt;br /&gt;
    // send all rgbElements to LEDs (when both fadeTime = 0 and holdTime = 0 it signifies the last rgbElement in lightTab)&lt;br /&gt;
    do {&lt;br /&gt;
      sendrgbElement(index);        // send one rgbElement to LEDs&lt;br /&gt;
      index++;                      // increment to point to next rgbElement in lightTab&lt;br /&gt;
      if ( Start_Over ) break;      // if the IR detector saw IR, then we should reset and start over&lt;br /&gt;
    } while ( !( (pgm_read_word(&amp;amp;lightTab[index].fadeTime) == 0 ) &amp;amp;&amp;amp; (pgm_read_word(&amp;amp;lightTab[index].holdTime) == 0 ) ) );&lt;br /&gt;
    if ( Start_Over ) break;      // if the IR detector saw IR, then we should reset and start over&lt;br /&gt;
    index = 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ( Start_Over ) goto start_over;    // if the IR detector saw IR, then we should reset and start over&lt;br /&gt;
&lt;br /&gt;
  // Shut down everything and put the CPU to sleep&lt;br /&gt;
  cli();                 // disable microcontroller interrupts&lt;br /&gt;
  delay_ten_us(10000);   // wait .1 second&lt;br /&gt;
  TCCR0B &amp;amp;= 0b11111000;  // CS02:CS00=000 to stop Timer0 (turn off IR emitter)&lt;br /&gt;
  TCCR0A &amp;amp;= 0b00111111;  // COM0A1:0=00 to disconnect OC0A from PB0 (pin 5)&lt;br /&gt;
  TCCR1 &amp;amp;= 0b11110000;   // CS13:CS10=0000 to stop Timer1 (turn off Red and Blue LEDs)&lt;br /&gt;
  TCCR1 &amp;amp;= 0b11001111;   // COM1A1:0=00 to disconnect OC1A from PB1 (pin 6)&lt;br /&gt;
  GTCCR &amp;amp;= 0b11001111;   // COM1B1:0=00 to disconnect OC1B from PB4 (pin 3)&lt;br /&gt;
  DDRB = 0x00;           // make PORTB all inputs (saves battery power)&lt;br /&gt;
  PORTB = 0xFF;          // enable pull-up resistors on all PORTB input pins (saves battery power)&lt;br /&gt;
  MCUCR |= 0b00100000;   // SE=1 (bit 5)&lt;br /&gt;
  MCUCR |= 0b00010000;   // SM1:0=10 to enable Power Down Sleep Mode (bits 4, 3)&lt;br /&gt;
  sleep_cpu();           // put CPU into Power Down Sleep Mode&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>🔋</name></author>
	</entry>
</feed>