<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3530708851574743850</id><updated>2012-02-16T04:13:26.589-08:00</updated><category term='BuF24 Inside'/><category term='My BUFFALO'/><title type='text'>CRACKTOUS AUDIO PROJECTS...</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cracktous.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cracktous.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>sidiropa</name><uri>http://www.blogger.com/profile/14792154345918361918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3530708851574743850.post-8435911928054853924</id><published>2011-06-14T05:59:00.000-07:00</published><updated>2011-06-14T06:02:59.767-07:00</updated><title type='text'>Finally I had to split the proc/pre for the poweramp...</title><content type='html'>&lt;div&gt;This is the latest work in progress...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-ykCRdXTzRuI/Tfdb5SXOxBI/AAAAAAAAACA/WPT2UuK_gVo/s1600/IMG00108-20110605-1137.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-ykCRdXTzRuI/Tfdb5SXOxBI/AAAAAAAAACA/WPT2UuK_gVo/s400/IMG00108-20110605-1137.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5618060099907929106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/-BbPLSlkrvtY/Tfdbs0MyJKI/AAAAAAAAAB4/q3SZoAfD8FQ/s1600/IMG00107-20110605-1137.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-BbPLSlkrvtY/Tfdbs0MyJKI/AAAAAAAAAB4/q3SZoAfD8FQ/s400/IMG00107-20110605-1137.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5618059885652616354" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3530708851574743850-8435911928054853924?l=cracktous.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cracktous.blogspot.com/feeds/8435911928054853924/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://cracktous.blogspot.com/2011/06/finally-i-had-to-split-procpre-for.html#comment-form' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/8435911928054853924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/8435911928054853924'/><link rel='alternate' type='text/html' href='http://cracktous.blogspot.com/2011/06/finally-i-had-to-split-procpre-for.html' title='Finally I had to split the proc/pre for the poweramp...'/><author><name>sidiropa</name><uri>http://www.blogger.com/profile/14792154345918361918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ykCRdXTzRuI/Tfdb5SXOxBI/AAAAAAAAACA/WPT2UuK_gVo/s72-c/IMG00108-20110605-1137.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3530708851574743850.post-6652029013462508729</id><published>2010-11-27T05:20:00.001-08:00</published><updated>2010-11-29T23:11:46.622-08:00</updated><title type='text'>some more...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eO5EDFROEWk/TPSjp8tbbWI/AAAAAAAAABg/zp__JbxjXiY/s1600/IMG00082-20101127-1039.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_eO5EDFROEWk/TPSjp8tbbWI/AAAAAAAAABg/zp__JbxjXiY/s400/IMG00082-20101127-1039.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5545236982266555746" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" &gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3530708851574743850-6652029013462508729?l=cracktous.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cracktous.blogspot.com/feeds/6652029013462508729/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://cracktous.blogspot.com/2010/11/some-more.html#comment-form' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/6652029013462508729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/6652029013462508729'/><link rel='alternate' type='text/html' href='http://cracktous.blogspot.com/2010/11/some-more.html' title='some more...'/><author><name>sidiropa</name><uri>http://www.blogger.com/profile/14792154345918361918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eO5EDFROEWk/TPSjp8tbbWI/AAAAAAAAABg/zp__JbxjXiY/s72-c/IMG00082-20101127-1039.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3530708851574743850.post-5535916059863483110</id><published>2010-11-09T22:50:00.000-08:00</published><updated>2010-11-09T23:19:07.574-08:00</updated><title type='text'>New monster comming</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eO5EDFROEWk/TNpHYwy1FqI/AAAAAAAAABQ/ce51G2odl4o/s1600/IMG00076-20101003-1838.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_eO5EDFROEWk/TNpHYwy1FqI/AAAAAAAAABQ/ce51G2odl4o/s400/IMG00076-20101003-1838.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5537817182545974946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eO5EDFROEWk/TNpB27n5SfI/AAAAAAAAAA8/bHrRNNaG4EU/s1600/IMG00043-20100214-1812.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_eO5EDFROEWk/TNpB27n5SfI/AAAAAAAAAA8/bHrRNNaG4EU/s400/IMG00043-20100214-1812.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5537811103779211762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eO5EDFROEWk/TNpBXQVpikI/AAAAAAAAAA0/quT1mgKpxAg/s1600/IMG00081-20101031-2135.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_eO5EDFROEWk/TNpBXQVpikI/AAAAAAAAAA0/quT1mgKpxAg/s400/IMG00081-20101031-2135.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5537810559584012866" /&gt;&lt;/a&gt;&lt;br /&gt;Early in development pics of the new 5.1 Integrated UCD400 + TPA Placid powered UCD buffers + Arduino + TPA Bufallo 2 + 2 x Opus + more.......to follow soon&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3530708851574743850-5535916059863483110?l=cracktous.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cracktous.blogspot.com/feeds/5535916059863483110/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://cracktous.blogspot.com/2010/11/new-monster-comming.html#comment-form' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/5535916059863483110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/5535916059863483110'/><link rel='alternate' type='text/html' href='http://cracktous.blogspot.com/2010/11/new-monster-comming.html' title='New monster comming'/><author><name>sidiropa</name><uri>http://www.blogger.com/profile/14792154345918361918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eO5EDFROEWk/TNpHYwy1FqI/AAAAAAAAABQ/ce51G2odl4o/s72-c/IMG00076-20101003-1838.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3530708851574743850.post-3815700487594238363</id><published>2010-02-25T23:06:00.001-08:00</published><updated>2010-02-25T23:08:15.405-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BuF24 Inside'/><title type='text'>Let's take a look inside</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eO5EDFROEWk/S4dzIMT4l4I/AAAAAAAAAAk/BFXvcRb7yaE/s1600-h/blogdrawing.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_eO5EDFROEWk/S4dzIMT4l4I/AAAAAAAAAAk/BFXvcRb7yaE/s400/blogdrawing.jpg" alt="" id="BLOGGER_PHOTO_ID_5442445259281307522" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3530708851574743850-3815700487594238363?l=cracktous.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cracktous.blogspot.com/feeds/3815700487594238363/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://cracktous.blogspot.com/2010/02/lets-take-look-inside.html#comment-form' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/3815700487594238363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/3815700487594238363'/><link rel='alternate' type='text/html' href='http://cracktous.blogspot.com/2010/02/lets-take-look-inside.html' title='Let&apos;s take a look inside'/><author><name>sidiropa</name><uri>http://www.blogger.com/profile/14792154345918361918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eO5EDFROEWk/S4dzIMT4l4I/AAAAAAAAAAk/BFXvcRb7yaE/s72-c/blogdrawing.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3530708851574743850.post-6875985651382226498</id><published>2009-12-06T23:41:00.000-08:00</published><updated>2009-12-07T00:07:20.829-08:00</updated><title type='text'>The Buffalo Code so far....</title><content type='html'>Here is the latest code. Most sections were derived from HIFIDUINO- glt's work - appropriate thanks are due!&lt;br /&gt;&lt;a href="file:///C:/Documents%20and%20Settings/asidiropou001/Desktop/buffaloputer.txt"&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; #include &amp;lt;Wire.h&amp;gt; &lt;br /&gt; #include &amp;lt;EEPROM.h&amp;gt; &lt;br /&gt; #include &amp;lt;LiquidCrystal.h&amp;gt; &lt;br /&gt;  &lt;br /&gt; // initialize the library with the numbers of the interface pins &lt;br /&gt; LiquidCrystal lcd(12, 11, 10, 9, 8, 7); &lt;br /&gt;  &lt;br /&gt; // Define register values, etc to facilitate programming &lt;br /&gt; // Note: Reg address is address plus R/W bit &lt;br /&gt; // This is why the address here is different from the &lt;br /&gt; // address in the data sheet &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; #define REG0 0   // Register 0 address (Volume Adjustment) &lt;br /&gt; #define REG1 1   // Register 1 address (Volume Adjustment) &lt;br /&gt; #define REG2 2   // Register 2 address (Volume Adjustment) &lt;br /&gt; #define REG3 3   // Register 3 address (Volume Adjustment) &lt;br /&gt; #define REG4 4   // Register 4 address (Volume Adjustment) &lt;br /&gt; #define REG5 5   // Register 5 address (Volume Adjustment) &lt;br /&gt; #define REG6 6   // Register 6 address (Volume Adjustment) &lt;br /&gt; #define REG7 7   // Register 7 address (Volume Adjustment) &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; // The following to be used in Reg4 &lt;br /&gt; #define DEFAULTVOL 0x64 //-50 dB this is 50x2=100 &lt;br /&gt; #define MINVOL 0xC6  //-99dB this is 99X2=198. -Dac adjustment is .5 db &lt;br /&gt; #define MAXVOL 0x00   //-0 dB &lt;br /&gt;  &lt;br /&gt; #define VOLUPPIN 4   // Button to increase volume &lt;br /&gt; #define VOLDOWNPIN 2  // Button to decrease volume &lt;br /&gt; #define IRPIN 3     // The pin for the remote sensor &lt;br /&gt; #define VOLBUTTONPIN 38 &lt;br /&gt;  &lt;br /&gt; #define KEY1 128      // The value when pressing the 1 key in remote &lt;br /&gt; #define KEY2 129      // The value when pressing the 2 key in remote &lt;br /&gt; #define KEY3 130      // The value when pressing the 3 key in remote &lt;br /&gt; #define KEY4 131      // The value when pressing the 4 key in remote &lt;br /&gt; #define KEY5 132      // The value when pressing the 5 key in remote &lt;br /&gt; #define KEY7 134      // The value when pressing the 7 key in remote &lt;br /&gt; #define KEY8 135      // The value when pressing the 8 key in remote &lt;br /&gt; #define KEY9 136      // The value when pressing the 9 key in remote &lt;br /&gt; #define KEYVOLUP 18    // The value when pressing volume up key in remote &lt;br /&gt; #define KEYVOLDOWN 19   // The value when pressing volume down key in remote &lt;br /&gt; #define KEYDISPLAY 186   // The value when pressing display key in remote &lt;br /&gt; #define KEYPICTUREUP 152  // The value when pressing picture + key in remote &lt;br /&gt; #define KEYPICTUREDOWN 153 // The value when pressing picture - key in remote &lt;br /&gt; #define KEY1 1024     // The value when pressing 1 key in remote &lt;br /&gt; #define KEY2 1025    // The value when pressing 2 key in remote &lt;br /&gt; #define KEYYELLOW 462                // The value when pressing yellow text key in remote &lt;br /&gt;  &lt;br /&gt; #define IRFILSELDELAY 300 // Delay when selecting filter with remote to preven multiple selection &lt;br /&gt;  &lt;br /&gt; #define ONEPULSE 1000   // Microsecond threshold for value 1 in remote putlse &lt;br /&gt;  &lt;br /&gt; #define B 0xFF       // The character for a completely filled box &lt;br /&gt; #define A 0x20       // The character for blank &lt;br /&gt;  &lt;br /&gt; // The routine to create the custom characters in the LCD &lt;br /&gt; void DefineLargeChar() &lt;br /&gt; { &lt;br /&gt;  // A 1 in the binary representation of the character means it is filled in &lt;br /&gt;  // characters are 5 pixels wide by 8 pixels tall &lt;br /&gt;  &lt;br /&gt;  // We need 7 custom characters for the OPUS DAC display. &lt;br /&gt;  // (Custom character 0 doesn't work in the Web4Robot LCD) &lt;br /&gt;  &lt;br /&gt;  // Define Custom Characters &lt;br /&gt;  &lt;br /&gt;      byte custchar1[8]= {B11100,B11110,B11111,B11111,B11111,B11111,B11111,B11111};  &lt;br /&gt;      byte custchar2[8]= {B11111,B11111,B11111,B11111,B11111,B00000,B00000,B00000}; &lt;br /&gt;       byte custchar3[8]={B00000,B00000,B00000,B11111,B11111,B11111,B11111,B11111}; &lt;br /&gt;      byte custchar4[8]= {B11111,B11111,B11111,B11111,B11111,B11111,B01111,B00111}; &lt;br /&gt;       byte custchar5[8]={B11111,B11111,B11111,B11111,B11111,B11111,B00000,B00000}; &lt;br /&gt;       byte custchar6[8]={B00000,B11111,B11111,B11111,B11111,B11111,B00000,B00000}; &lt;br /&gt;      byte custchar7[8]= {B00000,B11100,B11110,B11111,B11111,B11111,B11111,B11111};  &lt;br /&gt;        &lt;br /&gt;      lcd.createChar(1, custchar1); &lt;br /&gt;      lcd.createChar(2, custchar2); &lt;br /&gt;      lcd.createChar(3, custchar3); &lt;br /&gt;      lcd.createChar(4, custchar4); &lt;br /&gt;      lcd.createChar(5, custchar5); &lt;br /&gt;      lcd.createChar(6, custchar6); &lt;br /&gt;      lcd.createChar(7, custchar7); &lt;br /&gt; } &lt;br /&gt;  &lt;br /&gt; // Array index into parts of big numbers. Numbers consist of 9 custom characters in 3 lines &lt;br /&gt; //      0   1   2   3   4   5   6   7   8   9   &lt;br /&gt; char bn1[]={B,2,1, 2,1,A, 2,2,1, 2,2,1, 3,A,B, B,2,2, B,2,2, 2,2,B, B,2,1, B,2,1}; &lt;br /&gt; char bn2[]={B,A,B, A,B,A ,3,2,2, A,6,1, 5,6,B, 5,6,7, B,6,7, A,3,2, B,6,B, 5,6,B}; &lt;br /&gt; char bn3[]={4,3,B, 3,B,3, B,3,3, 3,3,B, A,A,B, 3,3,B, 4,3,B, A,B,A, 4,3,B, A,A,B}; &lt;br /&gt;  &lt;br /&gt; void printOneNumber(uint8_t digit) &lt;br /&gt; { &lt;br /&gt;  // Print position is hardcoded &lt;br /&gt;  &lt;br /&gt;  // Line 1 of the one digit number &lt;br /&gt;  lcd.setCursor(0,1); &lt;br /&gt;  lcd.write(bn1[digit*3]); &lt;br /&gt;  lcd.write(bn1[digit*3+1]); &lt;br /&gt;  lcd.write(bn1[digit*3+2]); &lt;br /&gt;  &lt;br /&gt;  // Line 2 of the one-digit number &lt;br /&gt;  lcd.setCursor(0,2); &lt;br /&gt;  lcd.write(bn2[digit*3]); &lt;br /&gt;  lcd.write(bn2[digit*3+1]); &lt;br /&gt;  lcd.write(bn2[digit*3+2]); &lt;br /&gt;  &lt;br /&gt;  // Line 3 of the one-digit number &lt;br /&gt;  lcd.setCursor(0,3); &lt;br /&gt;  lcd.write(bn3[digit*3]); &lt;br /&gt;  lcd.write(bn3[digit*3+1]); &lt;br /&gt;  lcd.write(bn3[digit*3+2]); &lt;br /&gt; } &lt;br /&gt;  &lt;br /&gt; void printTwoNumber(uint8_t number) &lt;br /&gt; { &lt;br /&gt;  // Print position is hardcoded &lt;br /&gt;  int digit0; // To represent the ones &lt;br /&gt;  int digit1; // To represent the tens &lt;br /&gt;  digit0=number%10; &lt;br /&gt;  digit1=number/10; &lt;br /&gt;  &lt;br /&gt;  // Line 1 of the two-digit number &lt;br /&gt;  lcd.setCursor(13,1); &lt;br /&gt;  lcd.write(bn1[digit1*3]); &lt;br /&gt;  lcd.write(bn1[digit1*3+1]); &lt;br /&gt;  lcd.write(bn1[digit1*3+2]); &lt;br /&gt;  lcd.write(A); // Blank &lt;br /&gt;  lcd.write(bn1[digit0*3]); &lt;br /&gt;  lcd.write(bn1[digit0*3+1]); &lt;br /&gt;  lcd.write(bn1[digit0*3+2]); &lt;br /&gt;  &lt;br /&gt;  // Line 2 of the two-digit number &lt;br /&gt;  lcd.setCursor(13,2); &lt;br /&gt;  lcd.write(bn2[digit1*3]); &lt;br /&gt;  lcd.write(bn2[digit1*3+1]); &lt;br /&gt;  lcd.write(bn2[digit1*3+2]); &lt;br /&gt;  lcd.write(A); // Blank &lt;br /&gt;  lcd.write(bn2[digit0*3]); &lt;br /&gt;  lcd.write(bn2[digit0*3+1]); &lt;br /&gt;  lcd.write(bn2[digit0*3+2]); &lt;br /&gt;  &lt;br /&gt;  // Line 3 of the two-digit number &lt;br /&gt;  lcd.setCursor(13,3); &lt;br /&gt;  lcd.write(bn3[digit1*3]); &lt;br /&gt;  lcd.write(bn3[digit1*3+1]); &lt;br /&gt;  lcd.write(bn3[digit1*3+2]); &lt;br /&gt;  lcd.write(A); // Blank &lt;br /&gt;  lcd.write(bn3[digit0*3]); &lt;br /&gt;  lcd.write(bn3[digit0*3+1]); &lt;br /&gt;  lcd.write(bn3[digit0*3+2]); &lt;br /&gt; } &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; // The write to ESS9008 DAC routine &lt;br /&gt; void bufwritereg(uint8_t regaddr,uint8_t regval) &lt;br /&gt; { &lt;br /&gt;  Wire.beginTransmission(0x48); &lt;br /&gt;  Wire.send(regaddr); &lt;br /&gt;  Wire.send(regval); &lt;br /&gt;  Wire.endTransmission(); &lt;br /&gt; } &lt;br /&gt; // Interrupt service routine for rotary encoder. Determines direction. &lt;br /&gt;  &lt;br /&gt; volatile byte volUp=0; // flags for the interrupt routine &lt;br /&gt; volatile byte volDown=0; &lt;br /&gt;  &lt;br /&gt; void decoder() &lt;br /&gt; { &lt;br /&gt;  if (digitalRead(2) == digitalRead(4)) &lt;br /&gt;  { &lt;br /&gt;   volUp = 1; //if on interrupt the encoder channels are the same, direction is clockwise &lt;br /&gt;  } &lt;br /&gt;  else &lt;br /&gt;  { &lt;br /&gt;   volDown = 1; //if they are not the same, direction is ccw &lt;br /&gt;  } &lt;br /&gt; } &lt;br /&gt;  &lt;br /&gt; // interrupt service routine for remote &lt;br /&gt;  &lt;br /&gt; volatile byte remoteOn = 0; // 1 means remote has been pressed &lt;br /&gt;  &lt;br /&gt; void remoting() &lt;br /&gt; { &lt;br /&gt;  remoteOn=1; &lt;br /&gt; } &lt;br /&gt;  &lt;br /&gt; // Declaring some more variables &lt;br /&gt;  &lt;br /&gt; int currVol=DEFAULTVOL; // this needs to be at least 10 bits &lt;br /&gt; byte regval=0;     // variable for volume lower bits &lt;br /&gt;  &lt;br /&gt; int irCode=0;      // The code returned by the remote IR pulses &lt;br /&gt;  &lt;br /&gt; // This is the main decoding code for the remote. &lt;br /&gt;  &lt;br /&gt; int getIRKey() { &lt;br /&gt;  int duration=1; &lt;br /&gt;  int result=0; &lt;br /&gt;  while((duration=pulseIn(IRPIN, LOW, 50000)) &amp;lt; 2200 &amp;amp;&amp;amp; duration!=0) &lt;br /&gt;  { &lt;br /&gt;   //do nothing waiting for start pulse &lt;br /&gt;  } &lt;br /&gt;  &lt;br /&gt;  int mask = 1;                      // set mask to bit 0 &lt;br /&gt;  for (int idx = 0; idx &amp;lt; 12; idx++)       // get all 12 bits &lt;br /&gt;  { &lt;br /&gt;   duration = pulseIn(IRPIN, LOW, 2000);  // measure the bit pulse &lt;br /&gt;   if (duration &amp;gt; ONEPULSE)            // 1 bit? &lt;br /&gt;      result |= mask;                 // yes, update ir code &lt;br /&gt;   mask &amp;lt;&amp;lt;= 1;                      // shift mask to next bit &lt;br /&gt;  } &lt;br /&gt;  return result; &lt;br /&gt; } &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; void setup() { &lt;br /&gt;  lcd.begin(20, 4); &lt;br /&gt;  lcd.clear(); &lt;br /&gt;  DefineLargeChar(); // Define large characters &lt;br /&gt;       Wire.begin();  // Joining the I2C bus as master &lt;br /&gt;  &lt;br /&gt;  pinMode(VOLUPPIN, INPUT);    // Button or Encoder pin for volume up &lt;br /&gt;  digitalWrite(VOLUPPIN, HIGH);  // Enable pull-up resistor &lt;br /&gt;  &lt;br /&gt;  pinMode(VOLDOWNPIN, INPUT);   // Button or Encoder pin for volume down &lt;br /&gt;  digitalWrite(VOLDOWNPIN, HIGH); // Enable pull-down resistor &lt;br /&gt;  &lt;br /&gt;  pinMode(IRPIN, INPUT);     // Pin for IR Receiver &lt;br /&gt;  digitalWrite(IRPIN, HIGH);   // Enable high as specified by datasheet &lt;br /&gt;  &lt;br /&gt;  delay(3000); &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  // The following lines is to set up the default volume &lt;br /&gt;  // To set up the volume you need to write to at least 8 registers &lt;br /&gt;  &lt;br /&gt;  regval=DEFAULTVOL;    &lt;br /&gt;  bufwritereg(REG0,regval);    &lt;br /&gt;  bufwritereg(REG1,regval);  &lt;br /&gt;  bufwritereg(REG2,regval);  &lt;br /&gt;  bufwritereg(REG3,regval);  &lt;br /&gt;  bufwritereg(REG4,regval);  &lt;br /&gt;  bufwritereg(REG5,regval);  &lt;br /&gt;  bufwritereg(REG6,regval); &lt;br /&gt;  bufwritereg(REG7,regval); &lt;br /&gt;    &lt;br /&gt;  attachInterrupt(0, decoder, CHANGE); // ISR for rotary encoder &lt;br /&gt;  attachInterrupt(1, remoting, RISING); // ISR for remote IR sensor &lt;br /&gt;  &lt;br /&gt;  lcd.setCursor(0,0); &lt;br /&gt;  // print header for current input &lt;br /&gt;  printOneNumber(1); &lt;br /&gt;  &lt;br /&gt;  // print header for volume &lt;br /&gt;  lcd.setCursor(13,0); &lt;br /&gt;  lcd.print("-dB VOL"); &lt;br /&gt;  printTwoNumber(currVol/2); &lt;br /&gt;  &lt;br /&gt;  // Print the rest of the display &lt;br /&gt;  lcd.setCursor(4,2); &lt;br /&gt;  lcd.print("INPT"); &lt;br /&gt;  lcd.write(0xA5); &lt;br /&gt;  lcd.print("PCM"); &lt;br /&gt;  lcd.setCursor(4,1); &lt;br /&gt;  lcd.print("RATE"); &lt;br /&gt;  lcd.write(0xA5); &lt;br /&gt;  lcd.print("192"); &lt;br /&gt; } &lt;br /&gt;  &lt;br /&gt; void loop() &lt;br /&gt; { &lt;br /&gt;   // The following is to adjust the volume down (larger number) &lt;br /&gt;  &lt;br /&gt;  while(volUp==1) // While there is CW motion in the rotary encoder &lt;br /&gt;  { &lt;br /&gt;   volUp=0; // Reset the flag &lt;br /&gt;   if (currVol&amp;lt;MINVOL)// Check if already at min numerical Volume &lt;br /&gt;   { &lt;br /&gt;    currVol=currVol+1;          // Increase 0.5 dB &lt;br /&gt;    regval=currVol;   &lt;br /&gt;    bufwritereg(REG0,regval);   // Writing to reg 0 &lt;br /&gt;    bufwritereg(REG1,regval);  &lt;br /&gt;    bufwritereg(REG2,regval);  &lt;br /&gt;    bufwritereg(REG3,regval);  &lt;br /&gt;    bufwritereg(REG4,regval);  &lt;br /&gt;    bufwritereg(REG5,regval);  &lt;br /&gt;    bufwritereg(REG6,regval); &lt;br /&gt;    bufwritereg(REG7,regval); &lt;br /&gt;    printTwoNumber(currVol/2); &lt;br /&gt;   } &lt;br /&gt;  } &lt;br /&gt;  &lt;br /&gt;  // The following is to adjust the volume up (smaller numbers) &lt;br /&gt;  &lt;br /&gt;  while(volDown==1) // While there is ccw motion in rotary encoder &lt;br /&gt;  { &lt;br /&gt;   volDown=0; // clear the flag &lt;br /&gt;   if (currVol&amp;gt;MAXVOL)  // Check if already at max Volume &lt;br /&gt;   { &lt;br /&gt;    currVol=currVol-1;        // Decrease 0.5 dB &lt;br /&gt;    regval=currVol; // Calculate value for reg0 &lt;br /&gt;    bufwritereg(REG0,regval);   // Writing to reg 0 &lt;br /&gt;    bufwritereg(REG1,regval);  &lt;br /&gt;    bufwritereg(REG2,regval);  &lt;br /&gt;    bufwritereg(REG3,regval);  &lt;br /&gt;    bufwritereg(REG4,regval);  &lt;br /&gt;    bufwritereg(REG5,regval);  &lt;br /&gt;    bufwritereg(REG6,regval); &lt;br /&gt;    bufwritereg(REG7,regval); &lt;br /&gt;    printTwoNumber(currVol/2); &lt;br /&gt;    } &lt;br /&gt;  } &lt;br /&gt;   &lt;br /&gt;  &lt;br /&gt;  // The following code is for the remote. &lt;br /&gt;  &lt;br /&gt;  while (remoteOn==1) &lt;br /&gt;  { &lt;br /&gt;   irCode = getIRKey();            //Fetch the key &lt;br /&gt;   //lcd.setCursor(4,3);          // Used to find out remote keys value &lt;br /&gt;   //lcd.print("    "); &lt;br /&gt;   //lcd.setCursor(4,3);          // Used to find out remote keys value &lt;br /&gt;   //lcd.print(irCode); &lt;br /&gt;  &lt;br /&gt;   switch(irCode){ &lt;br /&gt;     &lt;br /&gt;    case KEY1: &lt;br /&gt;     printOneNumber(1); &lt;br /&gt;                 break;   &lt;br /&gt;     &lt;br /&gt;    case KEY2: &lt;br /&gt;         printOneNumber(2); &lt;br /&gt;                break; &lt;br /&gt;      // The following for volume &lt;br /&gt;     &lt;br /&gt;    case KEYVOLUP: &lt;br /&gt;    if (currVol&amp;lt;MINVOL)// Check if already at min numerical Volume &lt;br /&gt;    { &lt;br /&gt;     currVol=currVol+1;          // Increase 0.5 dB &lt;br /&gt;     regval=currVol;   // Calculate value for reg0 &lt;br /&gt;     bufwritereg(REG0,regval);   // Writing to reg 0 &lt;br /&gt;                 bufwritereg(REG1,regval);  &lt;br /&gt;                 bufwritereg(REG2,regval);  &lt;br /&gt;                 bufwritereg(REG3,regval);  &lt;br /&gt;                 bufwritereg(REG4,regval);  &lt;br /&gt;                 bufwritereg(REG5,regval);  &lt;br /&gt;                 bufwritereg(REG6,regval); &lt;br /&gt;                 bufwritereg(REG7,regval); &lt;br /&gt;     printTwoNumber(currVol/2); &lt;br /&gt;    } &lt;br /&gt;    break; &lt;br /&gt;  &lt;br /&gt;    case KEYVOLDOWN: &lt;br /&gt;    if (currVol&amp;gt;MAXVOL)  // Check if already at max Volume &lt;br /&gt;    { &lt;br /&gt;     currVol=currVol-1;        // Decrease 0.5 dB &lt;br /&gt;     regval=currVol;  &lt;br /&gt;     bufwritereg(REG0,regval);   // Writing to reg 0 &lt;br /&gt;                 bufwritereg(REG1,regval);  &lt;br /&gt;                 bufwritereg(REG2,regval);  &lt;br /&gt;                 bufwritereg(REG3,regval);  &lt;br /&gt;                 bufwritereg(REG4,regval);  &lt;br /&gt;                 bufwritereg(REG5,regval);  &lt;br /&gt;                 bufwritereg(REG6,regval); &lt;br /&gt;                 bufwritereg(REG7,regval); &lt;br /&gt;     printTwoNumber(currVol/2); &lt;br /&gt;    } &lt;br /&gt;    break; &lt;br /&gt;   } &lt;br /&gt;   remoteOn=0; //reset flag &lt;br /&gt;  } &lt;br /&gt;  &lt;br /&gt; }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3530708851574743850-6875985651382226498?l=cracktous.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cracktous.blogspot.com/feeds/6875985651382226498/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://cracktous.blogspot.com/2009/12/buffalo-code-so-far.html#comment-form' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/6875985651382226498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/6875985651382226498'/><link rel='alternate' type='text/html' href='http://cracktous.blogspot.com/2009/12/buffalo-code-so-far.html' title='The Buffalo Code so far....'/><author><name>sidiropa</name><uri>http://www.blogger.com/profile/14792154345918361918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3530708851574743850.post-224137948757150393</id><published>2009-10-12T23:04:00.000-07:00</published><updated>2009-12-06T23:41:04.564-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My BUFFALO'/><title type='text'>My Buffalo</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eO5EDFROEWk/StQYvy-TzCI/AAAAAAAAAAM/aVRxqHnvOrM/s1600-h/IMG00031-20091012-2304.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_eO5EDFROEWk/StQYvy-TzCI/AAAAAAAAAAM/aVRxqHnvOrM/s320/IMG00031-20091012-2304.jpg" alt="" id="BLOGGER_PHOTO_ID_5391961863285361698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is my Buffalo24 with IVY and MUX and defeatable Metronome. The 20x4 lcd, the OTTO and the I2C bus is driven by a SEEEDUINO Mega Arduino compatible MCU.&lt;br /&gt;The I2C 3.3v conversion is performed by Analog Devices iCoupler Isolator ADUM1250 and the 3.3v control lines selection by Analog Devices ADG3304.&lt;br /&gt;&lt;br /&gt;A rotary encoder is used for volume selection. Sony remote Control and the rotary encoder  is implemented ala &lt;a href="http://hifiduino.blogspot.com/2009/06/arduino-code-for-rotary-encoder.html"&gt;HIFIDUINO&lt;/a&gt; style&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eO5EDFROEWk/StQY5G29PSI/AAAAAAAAAAU/AMCpUZOmvg0/s1600-h/IMG00032-20091012-2304.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_eO5EDFROEWk/StQY5G29PSI/AAAAAAAAAAU/AMCpUZOmvg0/s320/IMG00032-20091012-2304.jpg" alt="" id="BLOGGER_PHOTO_ID_5391962023242054946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eO5EDFROEWk/StQZDhaHcWI/AAAAAAAAAAc/RGlPrziluFA/s1600-h/IMG00033-20091012-2305.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_eO5EDFROEWk/StQZDhaHcWI/AAAAAAAAAAc/RGlPrziluFA/s320/IMG00033-20091012-2305.jpg" alt="" id="BLOGGER_PHOTO_ID_5391962202167538018" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3530708851574743850-224137948757150393?l=cracktous.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cracktous.blogspot.com/feeds/224137948757150393/comments/default' title='Σχόλια ανάρτησης'/><link rel='replies' type='text/html' href='http://cracktous.blogspot.com/2009/10/my-buffalo.html#comment-form' title='0 σχόλια'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/224137948757150393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3530708851574743850/posts/default/224137948757150393'/><link rel='alternate' type='text/html' href='http://cracktous.blogspot.com/2009/10/my-buffalo.html' title='My Buffalo'/><author><name>sidiropa</name><uri>http://www.blogger.com/profile/14792154345918361918</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eO5EDFROEWk/StQYvy-TzCI/AAAAAAAAAAM/aVRxqHnvOrM/s72-c/IMG00031-20091012-2304.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
