MintDuino Building an Arduino-Compatible Breadboard Microcontroller James Floyd Kelly & Marc de Vinck CREATE YOUR OWN 2-PLAYER LED GAME Project Book www.it-ebooks.info Project Book n Wire up and program the MintDuino to light an LED n Build a game that tests the reflexes of two players n Learn how to make your “game light” glow at random intervals n Construct a pushbutton circuit to control individual players’ LEDs n Put all of the components together, including simple code to control your game Get started with MintDuino, the Maker Shed kit that’s perfect for learning or teaching the fundamentals of how microcontrollers work. This hands-on book shows you how to build a complete MintDuino project from start to finish. Learn how to assemble the microcontroller on a breadboard (no soldering required), and immediately begin programming it. You’ll build the MintDuino Reflex Game in five separate stages or sub-tasks. Breaking down a large project into manageable tasks helps you track down errors quickly, and lets you see how each part of the circuit works. Once you complete the game, you’ll have the resources and experience to tackle more MintDuino projects. If you’re interested in the fascinating world of microcontrollers, you’ll enjoy this book. MintDuino Building an Arduino-Compatible Breadboard Microcontroller Twitter: @oreillymedia facebook.com/oreilly oreilly.com ISBN: 978-1-449-30766-0 US $4.99 CAN $5.99 www.it-ebooks.info MintDuino James Floyd Kelly and Marc de Vinck Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo www.it-ebooks.info MintDuino by James Floyd Kelly and Marc de Vinck Copyright © 2011 Blue Rocket Writing Services, Inc. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://my.safaribooksonline.com). For more informa- tion, contact our corporate/institutional sales department: (800) 998-9938 or corporate@oreilly.com. Editor: Brian Jepson Production Editor: Kristen Borg Proofreader: O’Reilly Production Services Cover Designer: Mark Paglietti Interior Designer: David Futato Illustrator: Robert Romano September 2011: First Edition. Revision History for the First Edition: September 12, 2011 First release December 16, 2011 Second release See http://oreilly.com/catalog/errata.csp?isbn=9781449307660 for release details. The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. The Maker Press series desig- nations, MintDuino, and related trade dress are trademarks of O’Reilly Media, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc., was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. ISBN: 978-1-449-30766-0 [LSI] 1325889248 www.it-ebooks.info Contents Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v 1/Build a Mintronics: MintDuino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Build the Power Supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Power the Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Getting Ready to Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2/The MintDuino Reflex Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3/Subtask 1: Light an LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Start Building . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Upload Your First Sketch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4/Subtask 2: Randomly Light an LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 The Game Takes Shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 5/Subtask 3: Light an LED with a Pushbutton . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Light the LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 6/Subtask 4: Add Buttons and LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Light LEDs for Each Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 7/Subtask 5: Program the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 The Final Sketch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 Contents iii www.it-ebooks.info www.it-ebooks.info Preface The MintDuino is deceiving—this little tin of electronics is capable of provid- ing the brains for an unlimited number of devices limited only by your imag- ination…and, of course, your bank account. While the MintDuino is certainly capable of being used during a moment of inspiration, you’ll find that the real power of the device comes when you sit down, figure out what you want to make, and then start tackling your project a bit at a time. Anyone who has done circuit building or programming (or both) knows that it rarely pays to just start inserting components and writing complex sketches (programs in Arduino-speak). When trouble arises in a circuit or a program, it can be a time-consuming process to track down the error (or more likely, errors) when you have too much complexity. That’s why it’s always a good idea to break a project idea down into manageable components—let’s call them subtasks. If your big project has five major subtasks, tackling the first subtask and building a slightly less complicated circuit with a slightly less complicated sketch will save time and reduce stress. Once you’ve got the first subtask figured out, you move on to the second. By the time you’ve got all five subtasks built and their individual sketches tested, you’re likely to have an increased chance of success when you pull them all together and build The Big Project. And that’s exactly what you’re going to do in this MintDuino Notebook. You’re going to be shown The Big Project…but you’re not going to be allowed to build it just yet. The Big project has subtasks, and first you’re going to learn how to get the subtasks to work. Once you’ve done that, you’ll be ready for the finale where you bring together all you’ve learned and tackle…The Big Project. So, what is The Big Project? Keep reading. www.it-ebooks.info What You Need The complete list of materials for this project is below, but you’ll find a partial list of components with each subtask that contains only those items used in that particular section: • 1 MintDuino—assembled (see http://makeprojects.com/Project/Build -a-Mintronics-MintDuino/608/1 for assembly instructions) • 1 9V battery • 1 FTDI adapter, such as the FTDI Friend (see http://www.makershed .com/ProductDetails.asp?ProductCode=MKAD22) • 1 USB cable (A to mini-B type) • A jumper wire kit, such as http://www.makershed.com/ProductDetails .asp?ProductCode=MKSEEED3 • 2 LEDs (you can use any color you have handy) Plus, you’ll need the following components, all of which are available in the Mintronics: Survival Pack: • 2 LEDs (one red and one green LED come with the Survival Pack, but you can use any color you have handy) • 1 mini breadboard • 1 9V battery connector • 3 resistors (100 ohm minimum) • Jumper wires (you’ll find enough wire in the Survival Pack to get you started, but you’ll need to dip into the jumper wire kit soon) • 2 pushbuttons • Enough jumper wire to get you through Subtask 3. Conventions Used in This Book The following typographical conventions are used in this book: Italic Indicates new terms, URLs, email addresses, filenames, and file exten- sions. Constant width Used for program listings, as well as within paragraphs to refer to pro- gram elements such as variable or function names, databases, data types, environment variables, statements, and keywords. vi Preface www.it-ebooks.info Constant width bold Shows commands or other text that should be typed literally by the user. Constant width italic Shows text that should be replaced with user-supplied values or by val- ues determined by context. TIP: This icon signifies a tip, suggestion, or general note. CAUTION: This icon indicates a warning or caution. Using Code Examples This book is here to help you get your job done. In general, you may use the code in this book in your programs and documentation. You do not need to contact us for permission unless you’re reproducing a significant portion of the code. For example, writing a program that uses several chunks of code from this book does not require permission. Selling or distributing a CD-ROM of examples from O’Reilly books does require permission. Answering a question by citing this book and quoting example code does not require per- mission. Incorporating a significant amount of example code from this book into your product’s documentation does require permission. We appreciate, but do not require, attribution. An attribution usually includes the title, author, publisher, and ISBN. For example: “MintDuino by James Floyd Kelly (O’Reilly). Copyright 2011 Blue Rocket Writing Services, Inc., 978-1-4493-0766-0.” If you feel your use of code examples falls outside fair use or the permission given above, feel free to contact us at permissions@oreilly.com. Safari® Books Online Safari Books Online is an on-demand digital library that lets you easily search over 7,500 technology and creative reference books and videos to find the answers you need quickly. With a subscription, you can read any page and watch any video from our library online. Read books on your cell phone and mobile devices. Access Preface vii www.it-ebooks.info new titles before they are available for print, and get exclusive access to manuscripts in development and post feedback for the authors. Copy and paste code samples, organize your favorites, download chapters, bookmark key sections, create notes, print out pages, and benefit from tons of other time-saving features. O’Reilly Media has uploaded this book to the Safari Books Online service. To have full digital access to this book and others on similar topics from O’Reilly and other publishers, sign up for free at http://my.safaribooksonline.com. How to Contact Us Please address comments and questions concerning this book to the pub- lisher: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 800-998-9938 (in the United States or Canada) 707-829-0515 (international or local) 707-829-0104 (fax) We have a web page for this book, where we list errata, examples, and any additional information. You can access this page at: http://www.oreilly.com/catalog/0636920020882 To comment or ask technical questions about this book, send email to: bookquestions@oreilly.com For more information about our books, courses, conferences, and news, see our website at http://www.oreilly.com. Find us on Facebook: http://facebook.com/oreilly Follow us on Twitter: http://twitter.com/oreillymedia Watch us on YouTube: http://www.youtube.com/oreillymedia Content Updates December 16, 2011 • Modified the book’s style and trim size. • Added a new chapter that explains how to build the Mintduino. viii Preface www.it-ebooks.info [...]... understand the proper wiring of the MintDuino, as well as the electronics components and programming elements required: 1 Wire up and program the MintDuino to light an LED—this will help us to not only light the Game Light but also the winning player’s green LED 2 Wire up and light an LED after a Random Wait Time—we will learn how to light an LED after waiting a random amount of time 3 Wire up and program... LED, and keep it from burning out 5 Lastly, cut (1) piece of red and black wire about 1 1/2" long and connect the right side rails together Remember to connect (+) to (+) and (-) to (-) Your breadboard should look just like Figure 1-2 Figure 1-2 Breadboard ready to be powered up Now we can power it up! Connect the battery clip’s red wire (+) to “d4” and the black wire (-) to “d5” Connect a 9v battery and... ground rail of the breadboard and the other into “a17” 4 Insert the other 22 pF capacitor with one pin into the the ground rail and the other into “a18” 5 While we are working on this part of the breadboard, let’s connect a ground connection to the microcontroller: cut a 1/2" piece of black wire and connect the ground rail of the breadboard to “a16” At this point, the center of your breadboard should... will thank you for it! OK, enough fun Unplug the battery and let’s get started with the micro controller Power the Microcontroller Now it’s time to connect power to the ATMega 328 chip (also known as an integrated circuit or IC) This is the brains of your MintDuino It combines a microprocessor, flash memory, RAM, and digital as well as analog inputs and outputs into a single chip known as a microcontroller. .. power that the ATMega can use Insert the 7805 into column “i” on the breadboard and rows 1, 2, and 3 The metal heatsink should be facing the right (or column “J”) Now we are going to add two 10 μF capacitors to the power regulator: 1 I like to trim the leads down so they don’t stick so far out of the breadboard One lead is longer than the other The long lead is the (+) lead and the short one is the... easy to identify the (+) and (-) leads 2 Take the first capacitor and insert the (+) lead into “g1” and the negative lead into “g2” Easy! 3 Take the other 10 μF capacitor, and insert the (-) lead into row 1 of the (-) power rail of the breadboard Insert the (+) lead into row 1 of the (+) rail of the breadboard Now lets get some regulated power over to the power rails of the breadboard Start by stripping... www.it-ebooks.info long Insert the wire from the (+) rail of the breadboard to “j3” of the breadboard Next, strip the ends of one piece of black wire cut to approximately 1/2" long Insert the wire from the (-) rail of the breadboard to “j2” of the breadboard Your breadboard should look like Figure 1-1 Figure 1-1 Breadboard with voltage regulator, capacitors, and wire Now it’s time to add the power LED Start by... crystal, and ground wire Build a Mintronics: MintDuino www.it-ebooks.info 5 Now you’re ready to connect the positive rail of the breadboard to the microcontroller: 1 Cut 3 pieces of red wire, all of them about 1/2" in length, and one black wire 1/2" in length 2 Use one red wire to connect the (+) rail of the breadboard to “j16” 3 Use another piece of red wire to connect the (+) rail of the breadboard. .. (+) longer than the short one (-)! Now you can insert the red LED into the breadboard: the longer lead (+) goes into “d2” and the negative (-) goes into “d1” Let’s get the power distributed around the board and to the LED: 1 Start by cutting one red wire, approximately 1/2" long and one black wire, approximately 1/2" long Strip both ends of each wire 2 Insert the red wire from “f1” to “e4”, and the black... required in order to light LEDs, wait a random amount of time, and test for pushbuttons to be pressed, we can pull it all together and build the MintDuino Reflex Game The fact that we’ll have multiple LEDS shouldn’t be a problem—if we know how to light one, well, we can light two…or three And if we know how to determine if a pushbutton has been pressed, we can probably figure out how to detect which . MintDuino Building an Arduino-Compatible Breadboard Microcontroller James Floyd Kelly & Marc de Vinck CREATE YOUR OWN 2-PLAYER LED GAME Project Book www.it-ebooks.info Project Book n Wire up and. you’re interested in the fascinating world of microcontrollers, you’ll enjoy this book. MintDuino Building an Arduino-Compatible Breadboard Microcontroller Twitter: @oreillymedia facebook.com/oreilly oreilly.com ISBN:. Online is an on-demand digital library that lets you easily search over 7,500 technology and creative reference books and videos to find the answers you need quickly. With a subscription, you can read