Editing Smarter Arduino Programming - Tips and Tricks

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 3: Line 3:
 
= Introduction =
 
= Introduction =
  
This draft is for an instructable now published with pictures at: https://www.instructables.com/id/Smarter-Arduino-Programming-Tips-and-Tricks/Updates will be made here, probably before anything at instructables, but look at it just for the graphics. Note that this is an article started by Russ Hensel, see "http://www.opencircuits.com/index.php?title=Russ_hensel#About My Articles" '''About My Articles'''
+
This draft is for an instructable not yet written.  Note that this is an article started by Russ Hensel, see "http://www.opencircuits.com/index.php?title=Russ_hensel#About My Articles" '''About My Articles'''
  
 
The following are some tips for better quicker programming of  Arduinos.  Much of the advice applies to other platforms so you may want to take a quick look even if you do not use the Arduino.  This advice applies to the standard computer arduino ide, but applies to other environments as well.  Some of the tips are fairly well known/standard but are often not used in the code I see published.
 
The following are some tips for better quicker programming of  Arduinos.  Much of the advice applies to other platforms so you may want to take a quick look even if you do not use the Arduino.  This advice applies to the standard computer arduino ide, but applies to other environments as well.  Some of the tips are fairly well known/standard but are often not used in the code I see published.
Line 19: Line 19:
 
= Easier Search =
 
= Easier Search =
  
Most programs consist of a bunch of subroutines.  If you have a list near the top of the program ( perhaps as comments ) it is easy to highlight them ( perhaps with a double click ) find it ctrl-f ( for find ) and then zip down to the routine ( or calls to it ) in a flash.
+
Most programs consist of a bunch of subroutines.  If you have a list near the top of the program ( perhaps as comments ) it is easy to highlight them ( perhaps with a double click ) it ctrl-f ( for find ) and then zip down to the routine ( or calls to it ) in a flash.
  
 
In the example I have a help routine rptHelp() with the relevant subroutine names as comments that serves this purpose, and in the loop() is a small command interpreter that dispatches to different subroutines.  Each can serve double duty as an assistant to finding the code.  Both are near the top of the program so you do not have to scroll a long distance to find them.
 
In the example I have a help routine rptHelp() with the relevant subroutine names as comments that serves this purpose, and in the loop() is a small command interpreter that dispatches to different subroutines.  Each can serve double duty as an assistant to finding the code.  Both are near the top of the program so you do not have to scroll a long distance to find them.
Line 39: Line 39:
 
</pre>
 
</pre>
  
Then at the top of BlinkInstruct.ino put the line
+
Then at the top of BlinkInstruct.h put the line
  
 
<pre>
 
<pre>
Line 58: Line 58:
 
= Add Some Documentation =
 
= Add Some Documentation =
  
Many program become difficult to use and modify because of inadequate documentation.  This can even trip up the author of the program.  So add some documentation.  But where:
+
Many program become difficult to use and modify because of inadaque documentation.  This can even trip up the autho of the program.  So add some documentation.  But where:
  
 
* Start with good naming, often if names are good you are done.
 
* Start with good naming, often if names are good you are done.
Line 72: Line 72:
 
= Serial Monitor =
 
= Serial Monitor =
  
Always have a serial monitor as part of your code.  This lets you more easily see what is going on in the program and optionally control and debug it.  If no serial monitor ( terminal program ) is connected there is generally no harm, the bits just go right in the bit bucket for recycling. Arduino.exe has its own serial monitor built in.  I wanted more so I have written a serial monitor for the PC end of the conversations:  [http://www.opencircuits.com/Python_Smart_Terminal Python Smart Terminal - OpenCircuits  ] and [https://www.instructables.com/id/Python-Terminal-for-Cheap-Pi-Arduino-Connection/ Python Terminal for Cheap Pi Arduino Connection]  Try it if you are a Python user as well ( and then you might also like:  '''[https://www.instructables.com/id/Arduino-and-Python-and-perhaps-a-Rasberry-Pi/ Arduino and Python and Perhaps a Rasberry Pi ]''' )
+
Always have a serial monitor as part of your code.  This lets you more easily see what is going on in the program and optionally control it.  I have another instructable that give a quite powereful way to do this that is also simple to implement.  If no serial monitor ( terminal program ) is connected there is generally no harm, the bits just go right in the bit bucket for recycling.
  
 
== Commands ==  
 
== Commands ==  
Line 78: Line 78:
 
Many programs boot up, set up, and run a loop forever doing one thing over and over.
 
Many programs boot up, set up, and run a loop forever doing one thing over and over.
  
I like to make my programs more interesting by letting a user control them using the serial monitor ( or other terminal program, see especially: [[Python Smart Terminal]] ).  I have written a library like object SerialCmd to support this.  SerialCmd.cpp and SerialCmd.h are used over and over in my different programs, they are essentially library programs and you can just use them as is without every looking at them.  
+
I like to make my programs mor interesitng by letting a user control them using the serial monitor ( or other terminal program, see especially: [[Python Smart Terminal]] ).  I have written a library like object SerialCmd to support this.  SerialCmd.cpp and SerialCmd.h are used over and over in my different programs, they are essentially library programs and you can just use them as is without every looking at them.  
  
 
So here I will not discuss there internals but just how they are used in the sample program.
 
So here I will not discuss there internals but just how they are used in the sample program.
Line 111: Line 111:
 
== Help ==
 
== Help ==
  
One of the commands that is made available using the serial monitor is "?" to ask for Help. It is implemented by rptHelp().  It is really simple it just prints a little reminder of the commands the program understands.  Really useful after switching between different programs or after not using a program for a period of time.
+
One of the commands that it then available is "?"  It is implemented by rptHelp().  It is really simple it just prints a little reminder of the commands the program understands.  Really useful after switching between different programs or after not using a program for a period of time.
  
 
= F...ing Strings =
 
= F...ing Strings =
Line 139: Line 139:
 
I have not looked hard but there may be more powerful IDE's for the Arduino.  They may take some effort to find and setup, I have not done this, but if you do not like arduino.exe look around.  Let me know what you like in the comments.
 
I have not looked hard but there may be more powerful IDE's for the Arduino.  They may take some effort to find and setup, I have not done this, but if you do not like arduino.exe look around.  Let me know what you like in the comments.
  
Notepad ++ is not an IDE but it is a better editor than the one in arduino.exe.  If you set it to treat .ino files as c++ it will do a lot of code highlighting and clever features like code folding  [[https://en.wikipedia.org/wiki/Code_folding Code Folding]].
+
Notepad ++ is not an IDE but it is a better editor than the one in arduino.exe.  If you set it to treat .ino files as c++ it will do a lot of code highlighting and clever features like code folding  [[https://en.wikipedia.org/wiki/Code_folding Coed Folding]].
  
  
 
  [[Category:Arduino/RaspberryPi]]
 
  [[Category:Arduino/RaspberryPi]]

Please note that all contributions to OpenCircuits may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see OpenCircuits:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)