tag:blogger.com,1999:blog-12207557312851934582023-11-15T08:18:25.369-08:00My Arduino ProjectsA creation from Damion and DustinAnonymoushttp://www.blogger.com/profile/06754177464230059204noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-1220755731285193458.post-131907177625451222012-07-23T01:27:00.001-07:002012-07-23T01:28:03.847-07:00First robot.<div><p dir=ltr>I've combined my Android and Arduino skills to make my first robot. Pics coming soon... </p>
</div>Anonymoushttp://www.blogger.com/profile/06754177464230059204noreply@blogger.com0McPherson, McPherson38.370842 -97.66421tag:blogger.com,1999:blog-1220755731285193458.post-3755012213671579792010-02-11T06:54:00.001-08:002010-02-11T06:54:57.025-08:00IPOD+ARDUINO SIMPLE REMOTE/*******************************************************************************<br />* Copyright (c) 2009 David Findlay<br />* All rights reserved.<br />* Modified by Dustin Evans 2010-02-11 evansdustin08@gmail.com www.MyArduinoProjects.BlogSpot.com<br />* Redistribution and use in source and binary forms, with or without<br />* modification, are permitted provided that the following conditions are met:<br />* - Redistributions of source code must retain the above copyright notice,<br />* this list of conditions and the following disclaimer.<br />* - Redistributions in binary form must reproduce the above copyright<br />* notice, this list of conditions and the following disclaimer in the<br />* documentation and/or other materials provided with the distribution.<br />* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"<br />* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE<br />* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE<br />* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE<br />* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR<br />* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF<br />* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN<br />* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)<br />* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />* POSSIBILITY OF SUCH DAMAGE.<br />******************************************************************************/<br />#include <8X8Pattern.h> // 8X8 LED MATRIX LIBRARY (NOT USED IN THIS EXAMPLE)<br />#include <SimpleRemote.h> // USED FOR SIMPLE REMOTE COMMANDS<br />#include <iPodSerial.h> // USED TO COMMUNICATE TO THE IPOD<br />const int PLAY_BUTTON = 5; // PLAY/PAUSE ON PIN 5<br />const int NEXT_BUTTON = 6; // NEXT TRACK ON PIN 6<br />const int PREVIOUS_BUTTON = 7; // PREVIOUS TRACK ON PIN 7<br />const int VOLUMEUP_BUTTON = 8; // VOLUME INCREASE ON PIN 8<br />const int VOLUMEDOWN_BUTTON = 9; // VOLUME DECREASE ON PIN 9<br />const int RANDOMON_BUTTON = 10; // TURN RANDOM ON/0FF ON PIN 10<br />const int IPODON_BUTTON = 11; // WAKE UP IPOD ON PIN 11<br />const int IPODOFF_BUTTON = 12; // MAKE IPOD SLEEP PIN 12<br />const long DEBOUNCE_MILLIS = 150; // DEBOUNCE USED TO CANCEL OUT ANY ACCIDENTAL BUTTON PRESSES<br />int lastButtonState = LOW; // STATE OF THE BUTTONS<br />long lastToggleTime = 0; // TOGGLE TIME USED TO CALCULATE BETWEEN NOW AND DEBOUNCE<br />SimpleRemote simpleRemote;<br />void setup()<br />{<br /> pinMode(PLAY_BUTTON, INPUT); // SET ALL THE BUTTONS AS INPUTS<br /> pinMode(NEXT_BUTTON, INPUT);<br /> pinMode(PREVIOUS_BUTTON, INPUT);<br /> pinMode(VOLUMEUP_BUTTON, INPUT);<br /> pinMode(VOLUMEDOWN_BUTTON, INPUT);<br /> pinMode(RANDOMON_BUTTON, INPUT);<br /> pinMode(IPODON_BUTTON, INPUT);<br /> pinMode(IPODOFF_BUTTON, INPUT);<br /> // turn on the pull-up resistor for example using Arduino resistor. in actual program won't need this<br /> digitalWrite(PLAY_BUTTON, HIGH); <br /> digitalWrite(NEXT_BUTTON, HIGH);<br /> digitalWrite(PREVIOUS_BUTTON, HIGH);<br /> digitalWrite(VOLUMEUP_BUTTON, HIGH);<br /> digitalWrite(VOLUMEDOWN_BUTTON, HIGH);<br /> digitalWrite(RANDOMON_BUTTON, HIGH);<br /> digitalWrite(IPODON_BUTTON, HIGH);<br /> digitalWrite(IPODOFF_BUTTON, HIGH);<br /> simpleRemote.setup();<br />}<br />void loop()<br />{<br /> simpleRemote.loop();<br /> const int PLAY_BUTTON_STATE = digitalRead(PLAY_BUTTON);<br /> const int NEXT_BUTTON_STATE = digitalRead(NEXT_BUTTON);<br /> const int PREVIOUS_BUTTON_STATE = digitalRead(PREVIOUS_BUTTON);<br /> const int VOLUMEUP_BUTTON_STATE = digitalRead(VOLUMEUP_BUTTON);<br /> const int VOLUMEDOWN_BUTTON_STATE = digitalRead(VOLUMEDOWN_BUTTON);<br /> const int RANDOMON_BUTTON_STATE = digitalRead(RANDOMON_BUTTON);<br /> const int IPODON_BUTTON_STATE = digitalRead(IPODON_BUTTON);<br /> const int IPODOFF_BUTTON_STATE = digitalRead(IPODOFF_BUTTON);<br /> const long now = millis();<br /> if ((PLAY_BUTTON_STATE != lastButtonState) && ((now - lastToggleTime) > DEBOUNCE_MILLIS))<br /> {<br /> if (PLAY_BUTTON_STATE == LOW)<br /> {<br /> simpleRemote.sendPlay();<br /> }<br /> else<br /> {<br /> simpleRemote.sendButtonReleased();<br /> }<br /> lastButtonState = PLAY_BUTTON_STATE;<br /> lastToggleTime = now;<br /> }<br /> else if ((NEXT_BUTTON_STATE != lastButtonState) && ((now - lastToggleTime) > DEBOUNCE_MILLIS))<br /> {<br /> if (NEXT_BUTTON_STATE == LOW)<br /> {<br /> simpleRemote.sendSkipForward();<br /> }<br /> else <br /> {<br /> simpleRemote.sendButtonReleased();<br /> }<br /> lastButtonState = NEXT_BUTTON_STATE;<br /> lastToggleTime = now;<br /> }<br /> else if ((PREVIOUS_BUTTON_STATE != lastButtonState) && ((now - lastToggleTime) > DEBOUNCE_MILLIS))<br />{<br /> if (PREVIOUS_BUTTON_STATE == LOW)<br /> {<br /> simpleRemote.sendSkipBackward();<br /> }<br /> else<br /> {<br /> simpleRemote.sendButtonReleased();<br /> }<br /> lastButtonState = PREVIOUS_BUTTON_STATE;<br /> lastToggleTime = now;<br />}<br /> else if ((VOLUMEUP_BUTTON_STATE != lastButtonState) && ((now - lastToggleTime) > DEBOUNCE_MILLIS))<br /> {<br /> if (VOLUMEUP_BUTTON_STATE == LOW)<br /> {<br /> simpleRemote.sendVolPlus();<br /> }<br /> else<br /> {<br /> simpleRemote.sendButtonReleased();<br /> }<br /> lastButtonState = VOLUMEUP_BUTTON_STATE;<br /> lastToggleTime = now;<br /> }<br /> else if ((VOLUMEDOWN_BUTTON_STATE != lastButtonState) && ((now - lastToggleTime) > DEBOUNCE_MILLIS))<br /> {<br /> if (VOLUMEDOWN_BUTTON_STATE == LOW)<br /> {<br /> simpleRemote.sendVolMinus();<br /> }<br /> else<br /> {<br /> simpleRemote.sendButtonReleased();<br /> }<br /> lastButtonState = VOLUMEDOWN_BUTTON_STATE;<br /> lastToggleTime = now;<br /> }<br /> else if ((RANDOMON_BUTTON_STATE != lastButtonState) && ((now - lastToggleTime) > DEBOUNCE_MILLIS))<br /> {<br /> if (RANDOMON_BUTTON_STATE == LOW)<br /> {<br /> simpleRemote.sendToggleShuffle();<br /> }<br /> lastButtonState = RANDOMON_BUTTON_STATE;<br /> lastToggleTime = now;<br /> }<br /> else if ((IPODON_BUTTON_STATE != lastButtonState) && ((now - lastToggleTime) > DEBOUNCE_MILLIS))<br /> {<br /> if (IPODON_BUTTON_STATE == LOW)<br /> {<br /> simpleRemote.sendiPodOn();<br /> }<br /> lastButtonState = IPODON_BUTTON_STATE;<br /> lastToggleTime = now;<br /> }<br /> else if ((IPODOFF_BUTTON_STATE != lastButtonState) && ((now - lastToggleTime) > DEBOUNCE_MILLIS))<br /> {<br /> if (IPODOFF_BUTTON_STATE == LOW)<br /> {<br /> simpleRemote.sendiPodOff();<br /> }<br /> lastButtonState = IPODOFF_BUTTON_STATE;<br /> lastToggleTime = now;<br /> }<br />}Anonymoushttp://www.blogger.com/profile/06754177464230059204noreply@blogger.com0tag:blogger.com,1999:blog-1220755731285193458.post-85234741374506702452010-02-09T02:02:00.001-08:002010-02-09T02:03:32.771-08:00Problems....the PCB for the buttons was soldered on backwards and in the process of fixing it, it got damaged beyond repair. also when making the plexiglass cover it got cracked. :(Anonymoushttp://www.blogger.com/profile/06754177464230059204noreply@blogger.com0tag:blogger.com,1999:blog-1220755731285193458.post-10841225263455266542010-02-08T02:25:00.001-08:002010-02-08T02:26:12.286-08:00Video!!!http://www.youtube.com/watch?v=Z8g9wtGML3s<br /><br />Video of the table hooked up to my Macbook. <br /><br />http://www.youtube.com/evansdustin <br /><br />My youtube channel that has the XBOX 360 Laptop my friend built.Anonymoushttp://www.blogger.com/profile/06754177464230059204noreply@blogger.com0tag:blogger.com,1999:blog-1220755731285193458.post-5223843109615835292010-02-07T21:52:00.001-08:002010-02-07T21:52:45.910-08:00Pictures!!here is a link to the project on my Flikr account. enjoy!<br /><br />http://www.flickr.com/photos/26028708@N04/sets/72157622372526921/Anonymoushttp://www.blogger.com/profile/06754177464230059204noreply@blogger.com0tag:blogger.com,1999:blog-1220755731285193458.post-1859620212135653012010-01-24T18:42:00.001-08:002010-01-24T18:42:57.130-08:00Parts list from RadioShackItem: 2711129<br />Description: 33K ohm 1/2W Resistor PK/5<br />Quantity: 1 @ $.99<br />Shipping Method: Standard Ground<br />Arrival dependent upon the shipping method selected.<br /> <br /> <br />Item: 2711342<br />Description: 47K ohm 1/4W 5% Resistor pk/5<br />Quantity: 1 @ $.99<br />Shipping Method: Standard Ground<br />Arrival dependent upon the shipping method selected.<br /> <br /> <br />Item: 2711339<br />Description: 22K ohm 1/4W 5% Resistor pk/5<br />Quantity: 1 @ $.99<br />Shipping Method: Standard Ground<br />Arrival dependent upon the shipping method selected.<br /> <br /> <br />Item: 2711347<br />Description: 100K ohm 1/4W 5% Resistor pk/5<br />Quantity: 1 @ $.99<br />Shipping Method: Standard Ground<br />Arrival dependent upon the shipping method selected.<br /> <br /> <br />Item: 2720135<br />Description: 0.1æF Disc Capacitors 2 Pack<br />Quantity: 1 @ $1.49<br />Shipping Method: Standard Ground<br />Arrival dependent upon the shipping method selected.<br /> <br /> <br />Item: 2721436<br />Description: 10æF 16V Tantalum Capacitor<br />Quantity: 1 @ $1.59<br />Shipping Method: Standard Ground<br />Arrival dependent upon the shipping method selected.<br /> <br /> <br />Item: 2750644<br />Description: SPST PUSHBTN SWCH<br />Quantity: 1 @ $2.69<br />Shipping Method: Standard Ground<br />Arrival dependent upon the shipping method selected.<br /> <br /> <br />Item: 2750648<br />Description: SPDT 6A PADDLE SW<br />Quantity: 1 @ $2.99<br />Shipping Method: Standard Ground<br />Arrival dependent upon the shipping method selected.<br /> <br /> <br />Sub-Total: $ 12.72<br />Tax: $ 1.28<br />---------------------------<br />Shipping/Handling: $ 6.05<br />---------------------------<br />Total for this address: $ 20.05<br />---------------------------<br />Order Total: $ 20.05<br />---------------------------Anonymoushttp://www.blogger.com/profile/06754177464230059204noreply@blogger.com0tag:blogger.com,1999:blog-1220755731285193458.post-77805288421360533232010-01-23T20:21:00.000-08:002010-01-23T20:30:00.590-08:00Parts List I just orderedSo Damion is making this whole thing easier by building a custom shield for the Arduino and in order to do that we needed parts.... I just ordered a total of $52.35 including:<br /><br />Status Product<br /> Qty Total<br />Item in Box PRT-08094 Polarized Connectors - Header (6-Pin)<br /> 6 $2.70<br />Item in Box PRT-08232 Polarized Connectors - Header (3-Pin)<br /> 1 $0.45<br />Item in Box PRT-08095 Polarized Connectors - Housing (2-Pin)<br /> 4 $1.80<br />Item in Box PRT-08096 Polarized Connectors - Housing (3-Pin)<br /> 1 $0.45<br />Item in Box PRT-00115 Break Away Female Headers<br /> 1 $1.50<br />Item in Box PRT-00119 DC Barrel Power Jack/Connector<br /> 1 $1.25<br />Item in Box PRT-08233 Polarized Connectors - Header (2-Pin) 4 $1.80<br />Item in Box PRT-08099 Polarized Connectors - Housing (6-Pin) 6 $2.70<br />Item in Box PRT-08100 Polarized Connectors - Crimp Pins <br /> 3 $5.85<br />Item in Box PRT-08032 Audio Jack 3.5mm <br /> 1 $1.50<br />Item in Box PRT-00116 Break Away Headers - Straight<br /> 2 $5.00<br />Item in Box COM-08963 Mini Button Pad PCB<br /> 1 $1.95<br />Item in Box COM-08998 Mini Button Pad Set - White<br /> 1 $4.95<br />Item in Box PRT-08992 Screw 2-56 Flat Head - 3/8"<br /> 4 $0.60<br />Item in Box PRT-08995 Machine Screw Nut 2-56<br /> 4 $0.60<br />Item in Box COM-00533 Basic LED - Red<br /> 1 $0.35<br />Item in Box PRT-08867 Hook-up Stranded Wire - Black<br /> 1 $2.50<br />Item in Box PRT-08865 Hook-up Stranded Wire - Red<br /> 1 $2.50<br />Item in Box TOL-08269 Wall Adapter Power Supply - 5VDC 1A 1 $5.95<br /> Subtotal $44.40<br /> Shipping and Handling<br /> + $7.95<br /> -----------------------------------------------------<br /> Grand Total: $52.35Anonymoushttp://www.blogger.com/profile/06754177464230059204noreply@blogger.com0tag:blogger.com,1999:blog-1220755731285193458.post-70382759898021286832009-10-17T16:54:00.000-07:002009-10-17T16:56:09.112-07:00Advanced iPod Remote CodeThis is the code that puts the iPod into Advanced Remote mode so far that is all it does. We need to figure out how to send Play/Pause etc after it is in Advanced Remote Mode.<br /><br />// array strings to tell the iPod what to do<br />const char AIR[] = {<br /> 0xFF, 0x55, 0x03, 0x00, 0x01, 0x04, 0xF8};<br />const char AIR_PLAY[] = {<br /> 0xFF, 0x55, 0x03, 0x00, 0x29, 0x01, 0xD3}; <br />void setup()<br />{<br /> Serial.begin(19200); // Setup the serial port<br /> delay(5000); // 5 second delay so we can plug in the ipod<br /> AIRR(); // calls the AIRR function<br /> AIRR_PLAY(); <br /><br />}<br /><br />void loop()<br />{<br /> // nothing in the loop but it is still needed<br />}<br /><br />void AIRR(){<br /> for (int i = 0; i < 9; i++) { // puts ipod in AIR mode <br /> Serial.print(AIR[i], BYTE);<br /> }<br />}<br /><br />void AIRR_PLAY(){<br /> for (int s = 0; s < 9; s++) { // Send Play/Pause command in AIR<br /> Serial.print(AIR_PLAY[s], BYTE);<br /> }<br />}Anonymoushttp://www.blogger.com/profile/06754177464230059204noreply@blogger.com0tag:blogger.com,1999:blog-1220755731285193458.post-90632314225311296732009-10-17T14:02:00.000-07:002009-10-17T14:17:12.353-07:00Just to get everyone up to speed....First post! Just to catch everyone up we're building an LED table kind of like this: http://www.youtube.com/watch?v=zCA79Du-WqY<br /><br />So far we have the table completely built (minus the LEDs)0. We've been programming the Arduino and got some basic animations figured out last week. This week we've been working on the iPod side of things. We have the basic remote figured out Play/Pause Next/Previous and Volume working. The volume shows the speaker going up and down however we implemented an equalizer that is directly connected to the line out of the iPod and it levels out the sound so the actual sound never gets louder or softer. To solve this we are going to be using speakers that have volume control built into them. Pictures of the table can be seen on my Flikr account here: http://www.flickr.com/photos/26028708@N04/sets/72157622372526921/ There are no videos of this table yet but you can see old project videos on my Youtube account here: http://www.youtube.com/evansdustin<br /><br />If anyone has any expieriance using the Advanced iPod Remote (AIR) please send me an email at evansdustin08 at Gmail.com thanks!<br /><br />Again this is the first post so I don't have any code to share. It is really starting to get to be a big project and I just wanted to start documenting what works and what doesn't. As we get the code figured out I'll post it for you all to enjoy and use.Anonymoushttp://www.blogger.com/profile/06754177464230059204noreply@blogger.com0