Our aim is to bring you not just books written by experts on their subjects, but books written by experts at writing books. Our authors don't just repeat the documentation, they explore the subject matter. They go off the beaten track to find out how things works and make things happen. 

We also use programmers to proofread our books and we do our best to ensure the layout is sympathetic to programs. We try not to have a page break in the middle of a program so that you can read everything without having to move to a new page and forget what you have read. Of course, this isn't always possible and when a program has to be split we attempt to find a location that divides the listing at a point of meaning - e.g. try not to split a function or subroutine.

As layout is important, we prefer our paperback imprints - they are close to what we would like to read. Until recently we didn't  make ebook versions available because free flowing layout is not good for programming titles. Now that Kindle supports "Print Replica" format we do offer ebook versions. These aren't pure ebooks and they lack some features. In particular at the moment you can't read them on a Kindle only via Kindle Reader on mobiles, tablets, portables and desktop computers. The advantage is that you see pages formatted as in the paper book. We hope that Amazon improves the Print Replica format in the future to allow us to provide a fuller ebook support. You can of course still read much of the content of our books on I Programmer and IoT-Programmer.

Please support our efforts by buying copies of our books and visiting the sites with ad-blocking off. We would like to encourage our authors to write more!

If you have any suggestions for titles contact us at: This email address is being protected from spambots. You need JavaScript enabled to view it.



Raspberry Pi IoT In Python
Using GPIO Zero


JavaScript Jems:
The Amazing Parts

Programmer's Guide 
To Theory

JavaScript Bitmap Graphics
With Canvas

Programmer's Python
Everything is an Object

javascriptGraphics180 pythoncoversmall



Raspberry Pi IoT in C
With Linux Drivers 

Raspberry Pi IoT in Python
With Linux Drivers



Update: 3 March 2020

NetBeans 8.2 seems to have stopped working under Raspian (Buster). It installs but wont open a new project. It still works under Windows 10. 

As NetBeans 11.2 works perfectly on the Pi there is no reason to continue to try and make the unsuported version work. Follow the instructions to install it on the Pi given below. 

The NetBeans 8.2 plugin library is include but you have to enable it. Make sure you click the check for newest buttons after enabling it.

Select the C++ plugin and install it. 

After this you can run NetBeans - the script in the bin directory - as usual.

I understand the the Apache team are working on native support for C/C++ but it probably wont be complete until version 12 some time this year.

Original Information

NetBeans has been moved to Apache and Oracle are slowly moving the source code of the project to its new home. At the moment they haven't made the C/C++ code available but the old plug in works. What this means is that you have two choices. However before this you need to make sure you have a JDK installed:

NetBeans is a Java program that will work on any machine that supports a Java Virtual Machine (JVM) and the Pi comes with a JVM already installed as part of Raspbian. If you are installing NetBeans on a PC or a Mac you need to check that Java is installed and if it isn't you need to install it.

To check open a command prompt, this works for Windows, Linux and Mac OSX, and type:

java -version

If you don't see a listing something like:

openjdk version "11.0.3" 2019-04-16 LTS
OpenJDK Runtime Environment Corretto- (build 11.0.3+7-LTS)
OpenJDK 64-Bit Server VM Corretto- 
                               (build 11.0.3+7-LTS, mixed mode)

then either Java isn't installed or it is miss configured. Consult the documentation on the website of the JDK you are using. You can use any JDK from 9 though 12.

If you haven't got Java working there is no point moving on to install NetBeans as it simply will not work.

  • You can stay with NetBeans 8.x and use the original Oracle downloads and installers. This makes it very easy to install and it all works exactly as described in the book. There is no particular disadvantage of this approach as there is nothing in NetBeans 11 that you need to work with C/C++.

You can find the 8.x series of NetBeans by following the Older releases link on the Apache download page.

It is currently here but given the changes occurring it could well change and you might need to visit what ever the current download page is.

A direct link to NetBeans 8.2 can be used but it might change - if so check out the new main download page.

As described in the book download the C/C++ version or the complete version.


  • The second option is to download and install the latest version of NetBeans - 11.x at the time of writing. 

If you do this it doesn't have the C/C++ option included and you have to set it up so that it makes use of the 8.2 plugin.  

The procedure described below works for Raspian, Linux, Windows or OSX.

Go to the NetBeans web site https://netbeans.apache.org and navigate to the download page. Select the latest version and download the zip listed as "Binaries". Its name should be something like:


according to the version number. You will also see installers for various operating systems at the time of writing there isn't an installer for Raspian and the other installers often fail to find the installed JDK - working with the binary is just as easy.

After the download is complete you have to extract the files in the zip to a suitable directory. If you are the only person going to use NetBeans then your Linux home directory or Program Files under Windows is suitable. Extract all of the files into the directory.

Navigate to the directory and then netbeans/bin and run the file netbeans for a Linux installation or netbeans.exe or netbeans64.exe for a 32 or 64 bit Windows installation. These small programs install NetBeans and subsequently runs the IDE after installation. Run it in a terminal, accept the license agreement and wait while it installs.

At this point you will have a working NetBeans IDE and you can use it to create Java, PHP and JavaScript programs but, at the time of writing the C/C++ plugin is not installed and an upgraded version isn't available. As a temporary solution you have to use the original 8.2 plugin - this is likely to change as the NetBeans project develops.

All you have to do is use the Tools | Plugins menu option and, in the Settings tab of the dialog box that appears enable the NetBeans IDE 8.2 update center. If it isn't in the list for any reason add:


Next go to the Available Plugins tab and click the Newest button to update the list. It is also worth selecting the Updates tab and click the Check For Updates tab to make sure everything is up-to-date before installing the plugin. Search for or find the C/C++ plugin, select it and click the install button. Follow the installers instruction and allow it to install and upgrade everything it wants to.


If installation fails make sure you have all of the other plugins up-to-date and try again or check to see if it works after up-date.

If you are using NetBeans under Raspian you can add it to the Programming group in the menu. All you have to do is select Preferences, Main Menu Editor. Then select the Programming group and select New Item. Fill in the dialog that appears as shown:


The command is:


adjusted to reference your home directory rather than that of user pi if necessary. After this you can run NetBeans from the menu. If you want to add an icon then simply right click on the menu item, select properties and click on the default icon. Next simply navigate to /home/pi/netbeans/nb/ and select netbeans.icon.

If you are using NetBeans on a Pi then you can now create a new C/C++ project as described in a later section. If you are using NetBeans on a deskopt machine you now need to setup a remote connection to a Pi to work with C/C++.


 If you are looking for downloadable project files - there aren't any. The reason is that Android Studio changes too often to keep the details up to date. What would happen is that any project file would generate messages about being out of date almost as soon as it was published. Instead here are source code listing that you can copy and paste into a new project. This is a much better way of trying out code in Android Studio. 

So start a new project and paste the code into the appropriate file.



Pages 292-



Page 124

All variables named temp1 should be temp.

So the bottom part  of the page should read:


All we now have to do do is to put the two bytes together as a 16-bit integer. As the micro:bit supports a 16-bit int we can do this very easily:


int16_t temp= (b2<<8 | b1) ;


Finally we need to convert this to a floating point value. As already discussed, the micro:bit doesn’t support this in hardware. As all we really want is two digits to give the tens and two digits to give the fractional part it is easier to work in integer arithmetic using temperature*100:


temp = temp * 100 / 16;

This gives us an integer value that represents the temperature in hundredths of a degree centigrade, e.g. 25.45C is represented as 2545. Notice that this only works because int16_t really is a 16-bit integer. If you were to use a 32‑bit int:


int temp= (b2<<8 | b1);

then temp1 would be correct for positive temperatures but it would give the wrong answer for negative values because the sign bit isn't propagated into the top 16 bits. So if using a 32-bit integer, propagate the sign bit manually:


int temp=(b2<<8 | b1); if(b2 & 0x80) temp=temp | 0xFFFF0000;

Assuming we have the temperature in 100ths in temp, we can now display it on the micro:bit's LED matrix. First we need to convert it into a string:


char buff[10];



Note: It is correct in the final listing.