loading

My brother posted a video about this on facebook almost a year ago. Some old floppy drives playing Bach's masterpiece Toccata & Fugue and it got me really interested. So I read about it when the author posted a how-to on his blog and did a couple of tweaking using SammyIAm's Musical Floppy program when the project gained a lot of attention.

WHAT YOU NEED

1) Arduino - Ideally, you need the Arduino UNO but any Arduino would work. You just need to tweak something in the program with the pin assignments. In this mini-project however, I used Duemilanove. It works almost accurately as Arduino UNO and I didn't have to tweak anything.

2) Floppy Drives/Disks - Any floppy drive would work but it's a lot easier to use the 34-pin simply because it's common. Other than that, you would only be needing to determine 3 pins from your floppy. Pin assignments are available online, particularly here. Furthermore, I was trying to acquire a 5.25 floppy drive but to no avail, and ebay sells them around $20 so I said never mind about that. As a result, this project is composed only of the 3.25 floppy disk drives. You also need some floppy diskettes for this project.

3) Power Supply - Again, it depends on you. You can use any 5-volt power supply available but since an ATX power supply is just lying around at home, I conveniently used it instead.

4) CAT5 UTP Cable - Only because of the wires. I want my wires to be color-coded.

5) Breadboard - If you want a solderless-free project.

6) Soldering Iron/Lead - For soldering the pins you would need to connect your CAT5 UTP cable to, but if you still have the flat ribbon cable then good for you. Might as well use that to make it easier.

7) Cutter, Phillips/Flathead screwdrivers - For dismantling purposes.

Step 1: Prepare your power supply.

Again, it depends on you. You can use any 5-volt power supply available but since an ATX power supply is just lying around the house, it would be pretty convenient to use it here. However, if you just have the power supply (without a motherboard), to activate it you need to short two wires, BLACK and GREEN as shown on the image. Connect these two wires and your power supply is then activated.

<p>EVERYONE WHOS REPORTING BUGS, please raise the issues on github. thanks.<br><br>i dont maintain this project, but as a github-er that writes other projects, this is the most direct and effective way to sort issues. link here:<br><br>https://github.com/SammyIAm/Moppy/issues</p>
<p>I'm getting an error on NetBeans saying that gnu.io does not exist.</p>
<p>run it on linux!</p>
<p>Keep getting this error message and I saved TimeOne in library:</p><p>Arduino: 1.6.7 (Windows 10), Board: &quot;Arduino/Genuino Uno&quot;</p><p>C:\Users\Oscar\Documents\Arduino\Moppy\Moppy.ino:1:22: fatal error: TimerOne.h: No such file or directory</p><p> #include &lt;TimerOne.h&gt;</p><p> ^</p><p>compilation terminated.</p><p>exit status 1</p><p>Error compiling.</p><p> This report would have more information with</p><p> &quot;Show verbose output during compilation&quot;</p><p> enabled in File &gt; Preferences.</p>
Have you installed the library?
<p>Wow! Really Cool! imagine a giant piano organ full of floopy drives :D linked to the piano keys for manual playing or automated by arduino. Nice Job.</p>
<p>WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.<br>java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.8.0_05\jre\bin\rxtxSerial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform thrown while loading gnu.io.RXTXCommDriver<br>Exception in thread &quot;AWT-EventQueue-0&quot; java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.8.0_05\jre\bin\rxtxSerial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform</p>
<p>I have this problem when I run the MoppyDrive and I relly need help!!</p><p>WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.<br>java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.8.0_05\jre\bin\rxtxSerial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform thrown while loading gnu.io.RXTXCommDriver<br>Exception in thread &quot;AWT-EventQueue-0&quot; java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.8.0_05\jre\bin\rxtxSerial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform</p><p>thanks for helping me!!</p>
<p>I would like to ask, if putting a floppy disk into the the floppy drive is required or optional. No music will be played if the floppy disk is not inserted? Thanks.</p>
<p>It's optional</p>
<p>I made it and played some songs as other youtubers, but I don't see that someone uploaded Sweet Child o' Mine so here it is https://www.youtube.com/watch?v=Zr24s9YTMAk</p>
It was a easy build. Nice instructible, one problem tho, the pin diagram is wrong, those are not the pins. other than that a job well done.<br>i built mine with 4 drives. by far the biggest probl em was conecting all the drives to the power supply because I lacked adaptor cables ( molex to floppy molex aka 4 pin )
<p>Hi</p><p>I am getting the following error message, i copied rxtxparallel.dll and rxtxserial.dll under bin and rxtxcomm under ext.. </p><p>please let me know what can i do to fix it see below the error:</p><p>ant -f &quot;C:\\Users\\Ed\\Downloads\\Darth Vador Musical Floppy\\MoppyDesk\\MoppyDesk&quot; -Dnb.internal.action.name=run run</p><p>init:</p><p>Deleting: C:\Users\Ed\Downloads\Darth Vador Musical Floppy\MoppyDesk\MoppyDesk\build\built-jar.properties</p><p>deps-jar:</p><p>Updating property file: C:\Users\Ed\Downloads\Darth Vador Musical Floppy\MoppyDesk\MoppyDesk\build\built-jar.properties</p><p>compile:</p><p>run:</p><p>java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver</p><p>Exception in thread &quot;AWT-EventQueue-0&quot; java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path</p><p>at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)</p><p>at java.lang.Runtime.loadLibrary0(Runtime.java:849)</p><p>at java.lang.System.loadLibrary(System.java:1088)</p><p>at gnu.io.CommPortIdentifier.&lt;clinit&gt;(CommPortIdentifier.java:123)</p><p>at moppydesk.MoppyMainWindow.updateComSelectionMenu(MoppyMainWindow.java:55)</p><p>at moppydesk.MoppyMainWindow.&lt;init&gt;(MoppyMainWindow.java:43)</p><p>at moppydesk.MoppyUI.startup(MoppyUI.java:19)</p><p>at org.jdesktop.application.Application$1.run(Application.java:171)</p><p>at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)</p><p>at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)</p><p>at java.awt.EventQueue.access$300(EventQueue.java:103)</p><p>at java.awt.EventQueue$3.run(EventQueue.java:706)</p><p>at java.awt.EventQueue$3.run(EventQueue.java:704)</p><p>at java.security.AccessController.doPrivileged(Native Method)</p><p>at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)</p><p>at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)</p><p>at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)</p><p>at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)</p><p>at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)</p><p>at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)</p><p>at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)</p><p>at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)</p>
<p>how would i hook up 8 i have a bread board an uno and a working power supply</p>
<p>i'm using arduino for the power supply.. it works.. why i must take an external power supply? and u have done a mistake for the red wire. it must be connected on 12-11 and not on 13-14. sorry for my english</p>
<p>The Arduino's 5v regulator is designed to provide power for the ATMega and communication, but no recommended for driving motors. It may work, but you're risking burning out your Arduino.<br><br>The red wire needs to be connected to 12 if your floppy is set to &quot;Drive B&quot;, but 14 if it's set to &quot;Drive A&quot;. (The tutorial is a little confused on this point though)</p>
<p>Do i need to worry about the twist in the ide cable i am using? it changes where pins go on the other side.</p>
<p>The twist only really affects where the &quot;Drive Select&quot; pins are located. The STEP and DIRECTION pins should still be the same. You might have to poke around a bit to find the drive select pins, but the LED on the drive should come on when you've found them.</p>
<p>why do you use a cat5 UTP cable? why not for example cat3?</p>
<p>are you sure about the connections you wrote in the article? I connected many times and I've tried avery combination, the arduino code compiled, if i manually connect the drive wire the servo move a bit but if i connect everything to the arduino nothing moves.</p>
<p>In the arduino program, have you selected the proper board under &quot;tools&quot; and &quot;board&quot;?</p>
<p>The motor only briefly spins when I connect the power, then stops. If I sit there, plugging, and unplugging the power, it will *kind of* work, but I have no idea what's going on.</p>
<p>It properly resets the drive when you plug it in, but it doesn't play music.</p>
<p>Aha! It seems to be a problem with the direction set pin. It will work in one direction, but it doesn't flip.</p>
<p>I have no idea why I can't get my drive to reverse the motor.</p>
<p>Never mind, after some trial and error, I figured it out.</p>
<p>I have the same problem, how did you solve it??</p>
<p>I shifted all the wires to the left.</p>
<p>hey i keep getting this message, no matter what i do, i am not quite sure what i am doing wrong, or what i have to do, to get this right.<br>WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.</p><p>java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver</p><p>Exception in thread &quot;AWT-EventQueue-0&quot; java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path</p><p>at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)</p><p>at java.lang.Runtime.loadLibrary0(Runtime.java:849)</p><p>at java.lang.System.loadLibrary(System.java:1088)</p><p>at gnu.io.CommPortIdentifier.&lt;clinit&gt;(CommPortIdentifier.java:123)</p><p>at moppydesk.MoppyMainWindow.updateComSelectionMenu(MoppyMainWindow.java:55)</p><p>at moppydesk.MoppyMainWindow.&lt;init&gt;(MoppyMainWindow.java:43)</p><p>at moppydesk.MoppyUI.startup(MoppyUI.java:19)</p><p>at org.jdesktop.application.Application$1.run(Application.java:171)</p><p>at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)</p><p>at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)</p><p>at java.awt.EventQueue.access$200(EventQueue.java:103)</p><p>at java.awt.EventQueue$3.run(EventQueue.java:694)</p><p>at java.awt.EventQueue$3.run(EventQueue.java:692)</p><p>at java.security.AccessController.doPrivileged(Native Method)</p><p>at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)</p><p>at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)</p><p>at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)</p><p>at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)</p><p>at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)</p><p>at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)</p><p>at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)</p><p>at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)</p>
<p><a href="http://www.instructables.com/id/Musical-Floppy-Drives/" rel="nofollow">http://www.instructables.com/id/Musical-Floppy-Dri...</a></p>
<p>I get the window and all, but it wont let me connect to my uno, i had used a micro before but that was unfortunately lost in an accident and now it wont work with my uno. If it helps i'm running windows 8 64 bit with the 64 bit environment and everything. When i try to connect it gives me &quot;gnu.io.NoSuchPortException&quot; And when i look back at the output i get</p><p>&quot;ant -f C:\\Users\\Alex\\Documents\\NetBeansProjects\\Moppy-moppy-advanced\\Java\\MoppyDesk -Dnb.internal.action.name=run run</p><p>init:</p><p>Deleting: C:\Users\Alex\Documents\NetBeansProjects\Moppy-moppy-advanced\Java\MoppyDesk\build\built-jar.properties</p><p>deps-jar:</p><p>Updating property file: C:\Users\Alex\Documents\NetBeansProjects\Moppy-moppy-advanced\Java\MoppyDesk\build\built-jar.properties</p><p>compile:</p><p>run:</p><p>Aug 19, 2014 2:25:22 PM java.util.prefs.WindowsPreferences &lt;init&gt;</p><p>WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.</p><p>Aug 19, 2014 2:25:27 PM moppydesk.ui.MoppyControlWindow connect</p><p>SEVERE: null</p><p>gnu.io.NoSuchPortException</p><p>at gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:269)</p><p>at moppydesk.outputs.MoppyCOMBridge.&lt;init&gt;(MoppyCOMBridge.java:29)</p><p>at moppydesk.ui.MoppyControlWindow.initializeReceivers(MoppyControlWindow.java:254)</p><p>at moppydesk.ui.MoppyControlWindow.connect(MoppyControlWindow.java:201)</p><p>at moppydesk.ui.MoppyControlWindow.connectButtonActionPerformed(MoppyControlWindow.java:284)</p><p>at moppydesk.ui.MoppyControlWindow.access$100(MoppyControlWindow.java:29)</p><p>at moppydesk.ui.MoppyControlWindow$2.actionPerformed(MoppyControlWindow.java:128)</p><p>at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)</p><p>at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)</p><p>at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)</p><p>at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)</p><p>at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)</p><p>at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)</p><p>at java.awt.Component.processMouseEvent(Component.java:6516)</p><p>at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)</p><p>at java.awt.Component.processEvent(Component.java:6281)</p><p>at java.awt.Container.processEvent(Container.java:2229)</p><p>at java.awt.Component.dispatchEventImpl(Component.java:4872)</p><p>at java.awt.Container.dispatchEventImpl(Container.java:2287)</p><p>at java.awt.Component.dispatchEvent(Component.java:4698)</p><p>at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)</p><p>at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)</p><p>at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)</p><p>at java.awt.Container.dispatchEventImpl(Container.java:2273)</p><p>at java.awt.Window.dispatchEventImpl(Window.java:2719)</p><p>at java.awt.Component.dispatchEvent(Component.java:4698)</p><p>at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)</p><p>at java.awt.EventQueue.access$200(EventQueue.java:103)</p><p>at java.awt.EventQueue$3.run(EventQueue.java:694)</p><p>at java.awt.EventQueue$3.run(EventQueue.java:692)</p><p>at java.security.AccessController.doPrivileged(Native Method)</p><p>at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)</p><p>at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)</p><p>at java.awt.EventQueue$4.run(EventQueue.java:708)</p><p>at java.awt.EventQueue$4.run(EventQueue.java:706)</p><p>at java.security.AccessController.doPrivileged(Native Method)</p><p>at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)</p><p>at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)</p><p>at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)</p><p>at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)</p><p>at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)</p><p>at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)</p><p>at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)</p><p>at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)</p><p>BUILD SUCCESSFUL (total time: 15 seconds)&quot; It even recognizes that my uno is on com8 and even if i change the com port it sees the new one but wont connect, I've even re-installed everything and it still wont work. Any suggestions?</p>
<p>For all the floppy drives I was able to test, the Drive B Enable pins were 12 and 13, instead of 12 and 11. Not sure why!</p>
How many drives you can on an adruino to close and which pins do you have to use. <br>Thanks in advance.
<p>You have to count your remaining pins</p>
Depends on the model of Arduino that you use, as for UNO, since you will be needing two pins to control a single floppy drive, you can connect up to 8 drives maximum.
cool thats the max drives i gone use :). <br>thnx :) <br>
Congrats! Hope you post your version here on instructables too. :)
i dont have everyting bad i can upload some imige from it :) hope you like it and i have to solder 2 drive the 11 e 12 pin bekose i forgot somting famalie say when i was a chld (all the botom pins are ground) and the 2 drive dont have te pin 11 bad thy workd :)
hire is the schematiks i drow for the print (whel i modefide it after i have to repear a little mistake i maket ) now it is posibel to use a kabel that is strait or whit a twist in it.
Thank you for this supplemental data. Will help many people who would want to try this out! Wish you could post your version of Instructables.
Yay! Congrats!!! :D
<p>I got the rxtx error, but i don't understand how to get the files from the website into my own PC. I tried all kinds of stuff but I don't get how Github works, do you have to download the files??</p><p>Please help!!! ;)</p>
I've got this successfully working with 6 floppy drives. No soldering required, just use jumper wires and a breadboard. <br> <br>If anybody wants to check out my circuit diagram then it's here: <br>http://easyeda.com/6oGASrJDVd <br> <br>It's probably not very good but feel free to improve it. I do believe it's pretty much correct. The best thing would be to make a proper edge connector soldered into place, rather than just pushed together. <br> <br>YYMV however though because of the floppy drive types - some are very quiet! <br> <br>The java software I've found it quite flaky and often crashes. Also more complicated midis don't even have a chance.
can we program the microprocessor with PIC16F877 ?
What would need to be changed to accommodate 4 floppy drives? (How would i get another pin to have output) I connected it to the next pin in line, and it didn't seem to work... I take it as probably because the code doesn't have it written for another pin? How would this be changed?
I made it with four, and had the extra connected to one of the other drives (Two floppies, same output) http://www.youtube.com/watch?v=VGtxO9Bie0k But i would love to have four floppy drives, with four different outputs...
Would like to get this working, but despite plenty of googling around RXTX issues, I can't get Netbeans IDE to run the MoppyDesk due to a run time error:<br> <em>&quot;java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver<br> Exception in thread &quot;AWT-EventQueue-0&quot; java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path&quot;</em>
Fixed as follows in Windows7 64bit: &quot;copy rxtxSerial.dll into WINDOWS/system32&quot;
So im using ribon cable and cat 5 ethernet. im confused because im hooked in to all the right pins but i cant get any of six different drive to step unless i get frustrated and i mash a big wire across the pins. this is frustrating

About This Instructable

318,694 views

259 favorites

License:

Bio: I love internet reading. I think I have acquired more knowledge from the internet than I have and probably ever will from a standard institution ... More »
More by Analogue-Chick: Make Your Images Interesting with Galaxy Overlay Control Arduino Wirelessly with MATLAB Steampunk Bonsai
Add instructable to: