Sunday, August 15, 2010

My Arduino book is for sale on Amazon

On arriving back from holiday (Italy) I was very pleasantly surprised to find '30 Arduino Projects for the Evil Genius' availabe on Amazon. So please go and buy it and write some great customer reviews.


There are also more details, youTube videos of some of the projects and the like at www.arduinoevilgenius.com


Mariano said...
This comment has been removed by the author.
Mariano said...

Great book with lots of interesting projects (especially the sensing type). My only suggestion being that the CODE for the projects could of used more detailed explanation. Some supplement code explanations on the Evil Genius site would add to this already great educational tool.

Simon Monk said...

Hi Mariano, thanks for the feedback. I think what I might do is add more comments into the code. More description in the book will have to wait until the second edition.

If you would repeat your kind comments as an Amazon review, that would be much appreciated.

Kind Regards,


Simon Monk said...

Hi Mariano, thanks for the Amazon review.

Which project sketches did you think would particularly benefit from more description? and I will put some more description as comments in the code.

I deliberately didn't put too much comment in as the listings printed in the book would be too long. But no reason why the downloaded sketches cannot be a bit better explained.

Thanks again. Si.

Mariano said...

Project 3
Its not all that clear to me how the arrays are working with the char* data type.

Project 5
How is the state variable being used to move through the program?

Project 10
Why are the constants 4 and 3 being defined as byte?

Thats all I have for you now but as I review some of the other projects I'll note anything that seems to be hmmmm.

Simon Monk said...

Thanks Mariano, this is very useful feedback.

I don't know if you are on the Arduino Forum, but if you are, I got a rather negative comment about the book. I don't really want to counter it myself, so if you feel like responding to:


it would be much appreciated.

Same goes for anyone else watching :-)

Mariano said...

There has to be at least one party pooper. I posted my review on the forum to help others see through the fog.

Not sure if this is to much of a burden, but could you post the color images on the site? I know that monochrome print helps keep cost down for everyone but some of the pics. are tough to see. I build from the schematic but its nice to have the option.

Simon Monk said...


I'll check with my publisher about the images. I must admit, I should have looked at the wiring diagrams in monochrome. Of course they looked fine in color!

So, which images? Primarily the wiring diagrams? or the pictures of the projects? or both?


Simon Monk said...

I just started looking through the code, to put comments in as per Mariano's requests. Looking at them, I think they are more things to be explained better in the next edition, so I will add some comments here for now..

Project 3. char* data types.
The C programming language uses arrays of the type 'char' to contain strings of characters. In this example we have an array of character arrays.
E.g. char* numbers[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."};

So, each letter or digit of the Morse alphabet is represented by a character array. E.g. the digit 4 is represented by '....-' and when we want the LED to flash that, we step over each character in turn and depending on whether its a '.' or a '-' flash it.

I will probably also put in some more information in chapter 2 about how character arrays work in C.

For now, this is quite a good explanations of char arrays in C, and hence Arduino:


Project 5. state variable
This is a technique for implementing a 'state machine'. You can think of this as a program that at any point of time is in one of in this case 4 states. The main loop then decides what needs doing when the state changes. In this case, change the lights, and then change to a different state. For more information on this approach, have a look at: http://en.wikipedia.org/wiki/Finite-state_machine

Project 10. pin variable defined as bytes.
Erm, well there is not really any good reason for this. It would be more consistent if I had just used 'int's like I have in most of the book. There is no significance.

Hope this helps - keep the questions / observations coming.

Mariano said...

It's just the wiring diagrams that can be a bit difficult to make out. Thanks for the further code description, it's clear to me now.

I'm working on another little project with the Arduino. I will use two sensors to capture the time1 and time2 values of an object(RC car) passing over the sensors. I want to determine the speed of the object by taking the difference in time1 and time2 and dividing it by the standard distance that I will be using. I want to use the millis() function. Do you have any pointers to how I can use this function to capture the two times. I'm not sure if I know exactly how the millis() function works.