<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" >

<channel><title><![CDATA[Robotics Society of Southern California - Articles]]></title><link><![CDATA[https://www.rssc.org/articles]]></link><description><![CDATA[Articles]]></description><pubDate>Thu, 09 Apr 2026 19:27:46 -0700</pubDate><generator>Weebly</generator><item><title><![CDATA[Salvage display from end-of-life CO alarm]]></title><link><![CDATA[https://www.rssc.org/articles/how-to-work-with-color-sensors]]></link><comments><![CDATA[https://www.rssc.org/articles/how-to-work-with-color-sensors#comments]]></comments><pubDate>Sat, 13 Jul 2019 20:18:29 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.rssc.org/articles/how-to-work-with-color-sensors</guid><description><![CDATA[ Carbon monoxide alarms were mandated for new construction in 2011, with a sensor life expectancy of seven years.&nbsp; The two First Alert units I bought about that time have now failed as predicted.I took them apart and didn't find too many parts for robots, but the 3-digit, 7-segment display was mounted on a separate breakout board.&#8203;It had only four wires for an I2C interface, soldered into the standard 0.1" thru-holes on one edge.&nbsp; (Actually five wires: SDA, SCL, GND, +5V, +5V.)&n [...] ]]></description><content:encoded><![CDATA[<span class='imgPusher' style='float:left;height:0px'></span><span style='display: table;width:auto;position:relative;float:left;max-width:100%;;clear:left;margin-top:0px;*margin-top:0px'><a><img src="https://www.rssc.org/uploads/4/5/1/1/45118641/co_orig.jpg" style="margin-top: 5px; margin-bottom: 10px; margin-left: 0px; margin-right: 10px; border-width:1px;padding:3px; max-width:100%" alt="Picture" class="galleryImageBorder wsite-image" /></a><span style="display: table-caption; caption-side: bottom; font-size: 90%; margin-top: -10px; margin-bottom: 10px; text-align: center;" class="wsite-caption"></span></span> <div class="paragraph" style="display:block;">Carbon monoxide alarms were mandated for new construction in 2011, with a sensor life expectancy of seven years.&nbsp; The two First Alert units I bought about that time have now failed as predicted.<br /><br />I took them apart and didn't find too many parts for robots, but the 3-digit, 7-segment display was mounted on a separate breakout board.<br />&#8203;It had only four wires for an I2C interface, soldered into the standard 0.1" thru-holes on one edge.&nbsp; (Actually five wires: SDA, SCL, GND, +5V, +5V.)&nbsp; I soldered headers for breadboard use.<br /><br />I kept one unit powered with a 9-V battery in order to read the I2C address and command bytes, and to figure out the bit mapping to the segments.&nbsp; (The unit was constantly displaying "End"..)<br /><br />I was able to drive the I2C lines directly from an Arduino with no external pull-ups.&nbsp; I used a simple routine with the Wire library to display hex and decimal numbers along with the two decimal points.<br /><br />The alarms were Model CO614.&nbsp; This may also be true for other First Alert models.<br />I'll be happy to answer questions.&nbsp; This Arduino code is was tested on a UNO:<br />&nbsp;<br />/*<br />&nbsp;&nbsp; This tests 3-digit LCDs from old First Alert Carbon Monoxide alarms (CO614).<br />&nbsp;&nbsp; The I2C communication is from master UNO to slave LCD only.&nbsp; No ACK is done.<br />&nbsp;&nbsp; All possible decimal combinations of three digits are tested.<br />*/<br />&nbsp;<br />#include &lt;Wire.h&gt;<br />&nbsp;<br />byte zero = 0xEE, one = 0x28, two = 0xCD, three = 0x6D, four = 0x2B;<br />byte five = 0x67, six = 0xE7, seven = 0x2C, eight = 0xEF, nine = 0x2F;<br />byte dec[10] = {zero, one, two, three, four, five, six, seven, eight, nine};<br />byte x = 0;<br />&nbsp;<br />void setup()<br />{<br />&nbsp; Wire.begin(); // join i2c bus (address optional for master)<br />}<br />&nbsp;<br />void loop()<br />{<br />&nbsp; Wire.beginTransmission(0x3E); // transmit to device 0x3E<br />&nbsp; Wire.write(0xE0);<br />&nbsp; Wire.write(0xCD);<br />&nbsp; Wire.write(0x00);<br />&nbsp; Wire.write(dec[x]);<br />&nbsp; Wire.write(dec[x + 1]);<br />&nbsp; Wire.write(dec[x + 2]);<br />&nbsp; Wire.endTransmission();&nbsp;&nbsp;&nbsp; // stop transmitting<br />&nbsp; x = x + 1;<br />&nbsp; delay(1000);<br />&nbsp; if (x &gt;= 8)<br />&nbsp;&nbsp;&nbsp; x = 0;<br />}<br />&nbsp;<br />John F. Davis<br /><br /><br /><span></span></div> <hr style="width:100%;clear:both;visibility:hidden;"></hr>  <div><div style="margin: 10px 0 0 -10px"> <a title="Download file: codisplay.pdf" download href="https://www.rssc.org/uploads/4/5/1/1/45118641/codisplay.pdf"><img src="//www.weebly.com/weebly/images/file_icons/pdf.png" width="36" height="36" style="float: left; position: relative; left: 0px; top: 0px; margin: 0 15px 15px 0; border: 0;" /></a><div style="float: left; text-align: left; position: relative;"><table style="font-size: 12px; font-family: tahoma; line-height: .9;"><tr><td colspan="2"><b> codisplay.pdf</b></td></tr><tr style="display: none;"><td>File Size:  </td><td>114 kb</td></tr><tr style="display: none;"><td>File Type:  </td><td> pdf</td></tr></table><a title="Download file: codisplay.pdf" download href="https://www.rssc.org/uploads/4/5/1/1/45118641/codisplay.pdf" style="font-weight: bold;">Download File</a></div> </div>  <hr style="clear: both; width: 100%; visibility: hidden"></hr></div>]]></content:encoded></item><item><title><![CDATA[How to 3D print large size prints]]></title><link><![CDATA[https://www.rssc.org/articles/july-13th-2019]]></link><comments><![CDATA[https://www.rssc.org/articles/july-13th-2019#comments]]></comments><pubDate>Sat, 13 Jul 2019 20:17:49 GMT</pubDate><category><![CDATA[Uncategorized]]></category><guid isPermaLink="false">https://www.rssc.org/articles/july-13th-2019</guid><description><![CDATA[ [...] ]]></description><content:encoded><![CDATA[]]></content:encoded></item></channel></rss>