Online Course: Microcontrollers and C Programming

Table of contents


An Introduction to Microcontrollers and the C Programming Language



{tabbedtable} Tab LabelMOOC
About this RoadTest

In this RoadTest, we will be giving away 5 registrations to the online course; Introduction to Microcontrollers and the C Programming Language offered through Valparaiso University and udemy. We are also giving away 5 kits that go along with the course. Applicants will be required to review the kit and the course as they go through the online class, posting the reviews on the element14 Community. Terms and Conditions apply. Please see the Terms and Conditions tab for more details.


About the Course:


The course will use the same mixed-mode format we use in our lecture-laboratories at Valparaiso University.  An emphasis is placed on enabling students to develop their skills by continually practicing with the tools real developers use every day.  A few short videos will kick off each of the sections followed by the step-by-step instructions to get you up and running. This is a learn at your own pace so no stress to complete in a specific time frame. And, if you have any questions along the way, our embedded system’s team will be here to help. That’s what we’re for – to make you successful.


  • The course is laboratory based.  Almost every lecture and section of the course leads directly to a hands-on laboratory assignment.  The more practice you get using the “real world” Texas Instruments hardware and software the more proficient you will be.
  • This course is go at your own pace. You will be able to follow along with the course materials at your own pace whenever you start!
  • The course does not waste your time.  From the very beginning, we jump right in to your first laboratory assignment.

What are people saying about this course?

More than I expected”

Great course - a good introduction to both C and Microcontrollers”

“Bottom line: I would recommend this course to a friend.”

“The Best Course to Learn C from a "Hands On" approach.”

The Kit

The RoadTesters


Congratulations to , p1unchy, , zuludalek and for being selected to RoadTest this course! I will contact you directly with the details of the kit this week.

Terms and Conditions

Online Course: Microcontrollers and C Programming

Terms and Conditions


These are the terms and conditions which govern the Online Course: Microcontrollers and C Programming RoadTest. This Contest requires participants to submit an application indicating their previous experience with this type of equipment/component, information on what they would do to test the equipment/component, and the applicant’s desire to post a thorough review of their experience with images, photos, or other supplemental materials.. Participants will be required to meet the Conditions for Participation.  The winners of this RoadTest will receive the item(s) listed below. RoadTest Reviews are due no later than 60 days after the receipt of the item(s). No other prizes are offered.

  1. 1. 1 The Principal terms of the Contest:

The following words and phrases are used in these terms and conditions and have the meanings given to them below.RoadTest: Online Course: Microcontrollers and C Programming (or the Contest)Key dates:Applications Close: 11:59PM (GMT) on 4 December 2015 Judging Close: midnight (GMT) on  11 December 2015 Announcement of Winner(s) (estimated): 14 December 2015 RoadTest Item(s):  Newark SKU: 53Y2815  Farnell SKU: 2496665 RoadTest Site:

Site or element14 Community:

Judges: members of the element14 community team chosen at the Organiser’s discretion.Judging Criteria: All of the following which will have equal weighting:

  1. 1.1 • Demonstrated competence with the technologies including links or descriptions of past projects
  2. 1.2 • Qualifications as indicated by current job role and/or schooling/vocational training;
  3. 1.3 • A thorough description of how the prize would be tested
  4. 1.4 • Likelihood that the Applicant will blog about the prize and provide a review on
  5. 1.5 • Originality;
  6. 1.6 • Innovation.

Organiser: Premier Farnell plc (registered in England and Wales under company number 876412) whose registered office is at Farnell House, Forge Lane, Leeds, UKConditions for Qualification: in addition to meeting the requirements of these terms, all persons applying to take part in the Contest (each one an Applicant) must:

  1. 1.7 • Provide a RoadTest application describing what he/she would do if awarded the Prize including similar previous projects, product experience and qualifications

Minimum number of Prizes: 10Terms: these terms and conditions which govern the Contest and to which the Organiser reserves the right to make changes from time to time and the latest version of these Terms from time to time will be posted to the Site.

  1. 1. 2 Eligibility
  2. 2. 3 Applications:
  3. 3. 4 Selecting Winners:
  4. 4. 5 Liability:
  5. 5. 6 General:
  6. 1.8 2.1 Save as set out in these Terms, the RoadTest is open to any natural or legal person, firm or company or group of natural persons or unincorporated body.
  7. 1.9 2.2 All Applicants must be aged at least 18 at the time of their application.
  8. 1.10 2.3 Applicants must not enter the Contest if doing so or taking part may:
  9. 1.10.1 2.3.1 cause the Organiser and/or themselves to be in breach of any agreement (including but not limited to any contract of employment) to which they are a party or in breach of any law, regulation or rule having the force of law to which the Organiser or the Applicant may be subject or any policy of the Organiser or the Sponsor;
  10. 1.10.2 2.3.2 Require the Organiser to obtain any licence, authorisation or permission to deal with the Applicant; or
  11. 1.10.3 2.3.3 Be in breach of any policy or practice of their employer. Some employers prohibit or restrict their employees from taking part in contests such as these or receiving prizes under them and the Organiser respects those policies and practices.
  12. 1.10.4 The Organiser reserves the right to disqualify any Application made in breach of these Terms and to reject any Application which it reasonably believes may be or become in breach. The Organiser reserves the right to require evidence in such form as the Organiser may reasonably require of any Applicant’s compliance with any of these Terms and to disqualify any Applicant or Participant who cannot provide such evidence reasonably promptly.
  13. 1.11 2.4 Multiple applications are not permitted.
  14. 1.12 2.5 Applications may not be submitted by an agent whether acting on behalf of an undisclosed principal or otherwise.
  15. 1.13 2.6 The Contest is NOT open to:
  16. 1.13.1 2.6.1 Any person or entity who is a resident or national of any country which is subject to sanctions, embargoes or national trade restrictions of the United States of America, the European Union or the United Kingdom;
  17. 1.13.2 2.6.2 Any employee, director, member, shareholder (as appropriate) or any of their direct families (parents, siblings, spouse, partner, children) (“Direct Families”) of the Organiser.
  18. 1.14 3.1 Each Applicant must fully complete and submit a response by the Application Close.
  19. 1.15 3.2 By submitting a response, each Applicant:
  20. 1.15.1 3.2.1 Authorises the Organiser to use his or her personal data (as defined in the Data Protection Act 1998) for the purposes of running and promoting the RoadTest;
  21. 1.15.2 3.2.2 Authorises the Organizer to copy, reproduce and publish their application should they be accepted as a Participant;
  22. 1.15.3 3.2.3 Will be deemed to have read, accepted and agree to be bound by these Terms. Applicants are advised to print and keep safe these Terms;
  23. 1.15.4 3.2.4 Authorises the Organiser to copy, reproduce and use the application or subsequent Blogs submitted for the purposes of the Contest and as otherwise contemplated by these Terms. The Organiser will not be responsible for any inaccuracy, error or omission contained in any reproduction or use of the Project Blogs.
  24. 1.15.5 3.2.5 Licenses the Organiser to use the intellectual property in the Project (IP) for the purposes of this Contest. As between the Applicant and the Organiser the IP remains owned by the Applicant.
  25. 1.15.6 3.2.6 Grants the Organiser the right to use his or her likeness, photographs, logos, trademarks, audio or video recordings without restriction for the purposes of Contest or the promotion of it or the Site;
  26. 1.15.7 3.2.7 Agrees to participate positively in all publicity surrounding the Contest;
  27. 1.15.8 3.2.8 Agrees to be responsible for all expenses and costs incurred by him or her in preparing for, entering and participating in the Contest (save for any expenses expressly agreed by the Organiser to be borne by it in these Terms);
  28. 1.15.9 3.2.9 Confirms that he or she owns all IP used in his or her application or Project or Blogs and indemnifies the Organiser from any claim by a third party that use of any material provided by an Applicant to the Organiser infringes the intellectual property rights of any third party;
  29. 1.15.10 3.2.10 Agrees not to act in any way or fail to act in any way or be associated with any cause or group which would have a negative impact on the reputation of the Organiser and/or the Contest.
  30. 1.16 3.3 All applications submitted to this Contest must meet the following criteria:
  31. 1.16.1 3.3.1 Applications must not include or propose any of the following, the inclusion of which shall render any application null and void:

(a) (a) Applications or designs which relate to socially taboo topics, such as illicit drug use or sexual gratification;(b) (b) Applications or designs that are or could reasonably be considered to be illegal, immoral, discriminatory or offensive as determined by the Organiser and/or the Judges;(c) (c) Applications or applications in relation to them which if accepted would infringe or breach any of the policies or terms of access or use of the Site.

  1. 1.17 3.4 No proposed Application may contain any of the hazardous substances identified by Article 4 of Directive 2002/95/EC of the European Parliament on the Restrictions on the Use of Substances in Electronic and Electrical Equipment ("the Directive") or the use of such hazardous substances in the in any such Project must not exceed the maximum concentration values set out in the Directive.
  2. 1.18 3.5 A proposed Application must not have been entered into any other Contest, unless that Contest has closed and the Application did not win a prize.
  3. 1.19 4.1 Winners will be selected by the Organiser on the basis of the quality of his or her Application and its adherence to these Terms.
  4. 1.20 4.2 The total number of Winners selected will be at least the minimum number set out in condition 1 above but the actual number is at the sole discretion of the Organizer.
  5. 1.21 4.3 The Organiser will use all reasonable efforts to announce the Participants within 10 business days the Applications Close.
  6. 1.22 4.4 The winner(s) will be selected by the Organiser in their absolute discretion based on the Judging Criteria. Winners must meet all eligibility requirements of these Terms. There shall be such number of winners as the Organiser shall determine.
  7. 1.23 4.5 The Organiser’s decision is final and without right of appeal. No correspondence will be entered into. The Organiser reserves the right not to select a winner if, in their sole discretion, they do not consider any of the applications to merit the Prize.
  8. 1.24 4.6 The Organiser will use all reasonable efforts to complete judging by Judging and Voting Close and to notify the winner(s) via a blog posted on the Contest Site by the Announcement of Winner Date.
  9. 1.25 4.7 Winners agree to take part in all publicity which the Organiser or the Sponsor wishes to use to promote the RoadTest, the Products featured or other Contests with which the Organiser may be connected from time to time.
  10. 1.26 4.8 Details of the Winners will also be published in the media.
  11. 1.27 5.1 The Organiser hereby excludes all and any Liability arising out of the Contest or the acceptance, use, quality, condition, suitability or performance of any Prize, even where that Liability may arise from the Organiser’s negligence.
  12. 1.28 5.2 Nothing in these Terms will affect any Liability of the Organiser for death or personal injury arising from its negligence, for breach of Part II of the Consumer Protection Act 1987 (in the event that any entrant is entitled to claim rights under the Consumer Protection Act 1987) or for any matter in relation to which it would be illegal for the Organiser to exclude or to attempt to exclude its Liability.
  13. 1.29 5.3 Subject to 10.2, neither the Organiser, any parent company nor any subsidiary of the Organiser or such parent company or any of their directors, officers and employees (together referred to in these terms and the ‘Associates’) makes any guarantee, warranty or representation of any kind, express or implied, with respect to this Contest or the Prizes potentially available under it. Neither the Organiser nor any of its Associates shall be responsible for any Liability that may arise out of or in connection with person’s participation in this Contest, the claiming, redemption or value of any prizes under it, the use or enjoyment of such prizes or any events or circumstances arising out of or in connection with any of them. Any implied warranties of condition, merchantability or suitability or fitness for purpose of any of them are hereby expressly excluded. Wherever used in these Terms, ‘Liability’ shall mean any and all costs, expenses, claims, damages, actions, proceedings, demands, losses and other liabilities (including legal fees and costs on a full indemnity basis) arising directly or indirectly out of or in connection with the matter concerned.
  14. 1.30 6.1 The RoadTest is organised and sponsored by the Organiser. The Organiser reserves the right to delegate all or any of its powers, rights and obligations arising in relation to the RoadTest to any Associate and certain such rights and powers are assumed by the Organiser on behalf of itself and each Associate. Reference to “Organiser” shall be deemed to include reference to each Associate.
  15. 1.31 6.2 The RoadTest may be terminated at any time if there are, in the sole opinion of the Organiser, an insufficient number of entries, or if the Applications are not of an appropriate standard for a Contest of this nature. The Organiser has the right to cancel or suspend the RoadTest at any time due to circumstances outside its reasonable control.
  16. 1.32 6.3 The Organiser shall have the sole discretion to disqualify (without correspondence or right of appeal) any Applicant it considers to be adversely affecting the process or the operation of the RoadTest or to be in breach of these Terms or to be acting in a disruptive manner or with intent to annoy, abuse, threaten or harass any other Applicant or Participant.
  17. 1.33 6.4 The Organiser has the right to amend or add to these Terms from time to time. Revised Terms and Conditions will be posted on the RoadTest Site and it is a condition of entry to the RoadTest that Applicants and Winners agree to comply with these Terms and, if appropriate, such Terms as amended from time to time.
  18. 1.34 6.5 Headings are for convenience only and do not affect the interpretation or construction of these Terms and Conditions.
  19. 1.35 6.6 These Terms and the operation of the RoadTest shall be governed by and construed in accordance with English Law and any claim or matter arising under these Terms shall be subject to the exclusive jurisdiction of the English courts.
  20. 1.36 the exclusive jurisdiction of the English courts.
Comment List
  • Brian,




    • I'm running VMs here also (ESXi 5.5).  I'm running one main VM as a digital library/wiki/controller and another six or seven for various in-progress projects.
    • Concur on the SD card comment.  They've been averaging approx. a 14 month life span here.  I buy the low end cards and run the RPi's 24x7.
    • I like being able to program I2C controls in C.  I'm thinking that it's good to know how to do it with baseline code before using a library like WiringPi (which only works on the RPi and not the micro-controller or the CubieTruck).  It makes porting your software to different platforms much easier. 
    • This course is my first attempt at working with a micro-controller.  I'm a bit frustrated with the Code Composer also.  Until recently, I've used only Vi to write code.
    • I will post my progress with attaching a radio to the micro-controller.  I have a teaching job this Spring (in addition to my day job), so things may be a bit slow for awhile.


    R/ Tim

  • Tim


    Thank you.  I think I am going to use ATMEGA 328P and the NRF24L01 for the sensors for cost reasons.  I can purchase Arduino clones for about $2.00 from Hong Kong (  OSHPark will make 3 protoboards from me for about $10.00.  I just make a protoboard that will accept the arduino clone then create all my connections on the board as needed.  This allows for a very small sensor package.  Still working the design, I want to add some security so the end product will use a crypto chip of some sort, not that far yet. 


    I read the datasheet on the MSP430FR family of chips and it has crypto built in that would work and everything else I need is on the chip but the chip is about $10.00.  I still may change my design - after I complete the class I am going to play with eagle to design a board for this chip and compare the cost.  It may turn out I change my design. 


    My final design concept is to build a low power sensor to receive and send data to a gateway.  I like the NRF24L01 for cost and freq plus the data is isolated from the computer network.  This will remove the Internet as an attack vector.  The encryption (digital signature) will protect against replay attacks securing another attack vector.  I have done extensive battery bleed down testing and determined the best way to power the sensor is two AA batteries tied direct.  This will give the longest battery life if the sensor is a sleep 99% of the time.  Based on my testing I can run the sensor for 1 to 2 seconds, 4 times an hour and get about 6 months.  The next step is remove the Arduino libraries and interact with microcontroller direct to speed things up so I can wake the sensor up collect my data and send to the gateway in less than 2 seconds.   The sensors are not too hard the issue is processing the information at the gateway. 


    I want to tie the gateway into a linux server via serial to help protect from remote attacks.  I am thinking about using MQTT because it is easy to secure.  The MQTT server will be isolated on the local network and the only ports that will be open will be to interact with MQTT to query the data.  Now the big issue, the controller.  I would like to use a controller that will work with commercial products so I run a mixed environment, but nothing works with my limited testing so far.  This market is too new and everyone is locking things down to their products.  The few open sources products I have seen over complicate the issue.  I see this as a simple database to store the data and a web interface and mobile interface to query the data.  MQTT is a nice standard and allows a mysql database to store the data.  I will just have to write my own interface to interact with the database which I was trying to avoid. 


    Raspberry pi is also a promising path - I just hate the SD card.  It will wear out over time.  So I am focusing on VMs (linux).  I have a business level network setup at the house with EXSI and raid. 


    I really like the MSP430FR family - I do not like the IDE but it is not that big of deal.  If I can design a protoboard in eagle and keep the cost below $15.00 per board I may switch.  Right now I need to figure out a generic sensor design that I can use code to determine the function of the sensor.  Once that is done and working I will move on to the gateway.  I like but I am trying to get away from libraries to increase the level of security.  This could lead me down any road at this point.  I am curisous to know how the RPi works for you.  If you do not mind to post your progress once in while.  I am planning on creating a project on element 14 from mine once I finish the course.  Right now I am on section 10 and love the course.  I really need to learn I2C and serial so I can get away from the libraries.  I have talked to the instructor and he is going to post more advance stuff this spring.  They are working on the material now.  Those are the type of course I am looking for.     




  • Brian, 


    I have a similar environment (Linux/Windows/Android) here, too.  Have been working with Linux and various commercial Unixes (hobby and professionally) since the mid-90's. 


    Keeping in mind that I'm only up to Section 5 in the course...   For the Code Composer install, there was no need to troubleshoot.  It installs/runs just fine on my instance of Ubuntu 14.02.2 (kernel=3.19.0-42-generic, hardware=old Gateway box with a dual-core AMD chip), with a MATE desktop.


    The only snag in the training material is a reference to the calculator in Microsoft Windows, to perform the conversions between the different number bases.  The good news is that Ubuntu's default calculator is a suitable substitute.  It just doesn't align with the picture in the training (it's close though).


    I can blame Drew Fustini (here at Element14) for getting me involved in the hardware side of things.  I managed to win one of the original RPi's in a contest and some breadboards in one of Drew's short notice drawings.  Also was chosen as a participant in the RIoTboard Road Test.


    I bought a number of different $5 FM receiver breakout boards from Amazon & Adafruit.  Although they were intended for the Arduino, I managed to convert a lot of Arduino code so that it'd run on the RPi.  Have gotten them to work on the RPi, the RIoTboard, and (to some degree) on a CubieTruck (haven't yet worked out the I2C reset on the CT).  Will eventually try tying the Launchpad to at least one of them.


    I'm interested in home automation but my wife won't let me "tie into the house".  I've been limited to controlling the office lights and the radio boards, as well as experimenting with a number of breadboard'ed sensors.  So far, I can control them via IRC, Jabber, web, Gleebox, and the command line, as well as via a couple hardware (doorbell) buttons attached to the side of my desk (for controlling the lights).  I haven't yet acquired the proper "hang" for polling the buttons properly but they work.  Have also been trying to incorporate a HackRF one into the mess (learning how to reverse engineer a connection to a weather station's wireless outdoor temperature sensor).


    TI has Wifi expansions for the micro-controller (see TI LaunchPad - BoosterPacks).  They're a bit more expensive than the Launchpad we're using for the course, but it may be the simplest approach for what you're doing.


    Unrelated: I'm a little irked this morning.  I visited the Udeny course site (prior to logging in) to discover that Udemy has the course on sale for $10.  If anyone else is thinking about taking the course, you can buy it now and take it whenever. (IIRC, I paid ~$70 for the course.)


    R/ Tim

  • I work in a mixed environment here at the house, Linux/Windows and I am curious to know how Linux is working out for you with the course.  Most of my electronics stuff is done in windows, as I am self and taught and windows keep the learning curve low for me.  I am working on a project, home automation system, that will be using Linux servers to collect and manage the data.  My end state is to publish the data to a mysql database and this will require me to run a Linux server with a microcontroller to collect the data.


    What I would like to know is how much of a Linux background you have and how much trouble shooting time you spent to get everything working.  I have a couple of ways to move forward with my project and the easiest right now is use a MQTT Server to receive the data but I do not want to go that way as it is another server to manage.  I would prefer to use a microcontroller to receive the data and then pass the data via serial to the computer.  The fewer servers I have the more secure the network will be.  To minimize the attack vectors I want to run a harden Linux server with the fewest open ports as possible.

  • Thank you - I am looking forward to this.  I can not wait to start.  This course is the missing piece I need.  The programming is nothing new for me as a computer programmer but the electronics side especially sections 10-17 is what has been my weakest link.  Trying to teach myself how the ADC works, serial communication etc.. is no easy task with no formal training in these areas.  The concept is very similar to computer programming but trying to read the data sheets is like learning a new language.  It will be nice to have a structured environment to start from.


    Side note - if any other of the winners need help with the programming side, I am more than willing to provide any assistance I can to them.  

  • congratulations for the winners of road test ! hope to get on board for future road tests

  • Thank you looking forward for a wonderful experience.

  • Awesome!  Looking forward to working on this!


    Thank you !

  • WOW! Something for the New Year. Looking forward to getting to grips with this.

  • Great news, tis the season to be jolly right enough.  I am so looking forward to getting started on it.  ,  thank you