you're reading...


Review: The Art of LEGO MINDSTORMS EV3 Programming

91ce9SYAxzLMany Mindstorms books teach how to use the kit by teaching how to make particular robots which work in a particular way. While this is a good way to learn how to build a Mindstorms robot, it is limiting the kinds of robots you learn to build and how the knowledge can be applied beyond those limited projects. Alternatively, there is The Art of LEGO MINDSTORMS EV3 Programming, a book focused primarily on the actual programming of the Mindstorms EV3 rather than overall robots.

The Art of LEGO MINDSTORMS EV3 Programming by Terry Griffin is book focused primarily on the programming language used by the Mindstorms EV3. The first two chapters are an introduction to Mindstorms and the programming environment, followed by a third that shows how to build the Tribot, a robot that will be utilized to test all the programs in the book. A single robot that is flexible enough to demonstrate all the software in the book that is not overly complex and does not overshadow the actual learning to program.

Once the robot is built, the book begins to explore the actual programming of it. Initially, the different motors and sensors are shown and taught how to be accessed via the code, but slowly the book moves on from there. Introducing more complexity into the programs, the book explores how to do more advance things using Mindstorms and how to access more than just the obvious things that make up basic robots.

As a developer, the most impressive thing to me is how the book explores some more complex computer programming concepts and applies them to the Mindstorms. Arrays, structures, multitasking, and other programming constructs are explored and explained in the book, opening the reader up to programming more on the computer beyond the robots and the LEGO, so they can learn about real computer science.

Most things I’ve come across about coding for LEGO Mindstorms EV3 have been very particular about building for specific robots (including LEGO’s own documentation), which is why I think this book is a great resource for people who aren’t looking to learn to build robots, but are looking to program more complex robots they want to build. The Art of LEGO MINDSTORMS EV3 Programming is the perfect resource for those looking to learn to program without the distractions of the hardware.

Be Sociable, Share!
  • This book is as good as everyone says it is. I’m currently working through the book; I’m up to chapter 17, and I have the MyBlocks to prove it. I’ve worked through every example and a few of the challenge projects as well. The information regarding the modulus operation is priceless. As a beginning computer science major, I must tip my hat to this book. The only bit I’m stuck on is re-coding the Load_CC My Block in chapter 16 to be a generic load block that reads a file and loads it to an array. I managed to make a generic SaveFile My Block from the Save_CC example, but I am still unable to get my LoadFile block to work right. I can bring in a data wire for the file’s name, but have been unable to write the code correctly to read in an outside array. So that would be my only complaint: Where is the forum for this book? I have some un-answered questions.

    • Did you try the No Starch website?

      • I looked there, but no forum. I suppose I could try contacting the author himself on No Starch. I dunno. Have you tried the aforementioned problem in chapter 16? The problem with the Load_CC My Block is that it needs the name of the array from whatever program you’re loading from. In this case, it is the “ColorCounts” array, just like in the book. I can pass in the name of a file to the load loop with a Constant text block, but I cannot pass in a name for an array (file blocks can be set to wired, array blocks cannot). So, as it’s written, you would have to manually change the name of the array inside the load block so it works with your program. This is not the best general solution. I’m missing something.

        • I don’t really know off-hand and I don’t have the book here with me. My go to resource for EV3 questions is the EV3 group on Facebook. Very knowledgable people who often work with LEGO for exhibits.

        • Bam! I figured it out, stranger. I just had to think it through again. Now my generic LoadFile My Block takes an array’s length as input, along with a text string for the file name and loads that file onto an array inside the LoadFile block and outputs that array. I just plug that output into the array in question in the program and it loads the data. And it’s generic, so it will work in any other program. I’m gonna join whatever the largest EV3 group is on FB and start posting pictures of my generic MyBlocks for all to use.