JavaScript Robotics: An Introduction to Cylon JS
4.5 (27 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
2,350 students enrolled
Wishlisted Wishlist

Please confirm that you want to add JavaScript Robotics: An Introduction to Cylon JS to your Wishlist.

Add to Wishlist

JavaScript Robotics: An Introduction to Cylon JS

Interacting with the Arduino using the JavaScript framework, Cylon JS.
4.5 (27 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
2,350 students enrolled
Created by Tony Thorsen
Last updated 2/2016
Current price: $10 Original price: $20 Discount: 50% off
5 hours left at this price!
30-Day Money-Back Guarantee
  • 2 hours on-demand video
  • 2 Articles
  • 3 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Install and configure the Cylon.js framework
  • Develop simple applications to control physical devices and electronic components
  • Learn how to incorporate fun things like an Xbox 360 or DualShock controller into your JavaScript applications
View Curriculum
  • A basic understanding of JavaScript is preferred.
  • A basic understanding of electronics & circuitry is recommended, but not necessary.
  • You'll need a basic text editor and internet access for the coding demos, and that's it. We'll download things as we go. You're not required to purchase any hardware, though this course is going to focus heavily on developing against things like the Arduino, so access to platforms like this is preferred to completely follow along with the demos.

This course is intended for anyone who would love to get introduced to controlling electronic components with JavaScript for IoT, robotics or even home automation projects.

This course will give an introduction on how to control components connected to an Arduino with a JavaScript framework called Cylon JS.

I will start off by taking you through an overview as to why I picked JavaScript as the language of choice, as well as some of the tools you will see throughout the course.

I will then guide you through the basics of the Arduino microcontroller and how you can get set up to develop with it using JavaScript.

The Cylon JS framework will then be introduced, and sample circuits will be constructed to demonstrate how to interact with them using Cylon.

All of the code from the demos I show, slideshows, circuit diagrams, and necessary links will be added as resources that can be accessed and/or downloaded at any point.

The development is done on a Windows platform, though only minimal code demonstrated is Windows-specific. I will point out where you might need to veer off if you're using a different OS.

Who is the target audience?
  • This course is intended for students interested in using JavaScript to control physical devices (e.g. microcontrollers). This is not a course strictly on JavaScript development, so the basics of the language will not be covered. This really isn't a course on electronics basics, though we'll cover quite a bit of the introductory material necessary to follow along.
  • This course is also intended for those of you who don't mind a bad pun or cheesy joke here and there.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
17 Lectures
4 Lectures 13:20

I will give you a brief introduction as to who I am, and why I feel certified to teach this course. I will also give a overview of what you can expect to learn in this course, as well as why I chose JavaScript as the language of choice for the development.

Preview 05:04

This lecture covers most of the tools you will see throughout the course. Some will be downloaded and configured along the way as part of the demos, but there will be some more common tools that I will use regularly throughout the course.

I compiled a list to give to you ahead of time, so that you have a "one-stop shop" where you can reference the tools used, instead of sprinkling the information throughout the course. I have provided external links where you can download (and purchase, if need be) the various tools.


This lecture covers the Fritzing application, which was not listed in the 'Tools' lecture. We won't be actively using this application throughout the course, but I will be showing circuit diagrams in some of the demos that I created using this application. This lecture will show you where you can find the application and how to get going with it, so that you, too, can easily create your own circuit diagrams.


As we wrap up this section of the course, I will be highlighting the key takeaway points from this introductory section.

Getting Started
4 Lectures 26:50

This lecture will introduce the Arduino microcontroller in its various forms, the development choices available to you on this platform, and where you can pick one up for yourself.

Preview 08:38

This lecture introduces the firmata protocol, as well as how it applies to the development we will be doing throughout this section.


This lecture covers the basics of Node JS and NPM: what they are, where to find them, how to get them set up, as well as a couple of small demos on how to actually use them.



This quiz covers the introductory lectures on the Arduino platform, as well as the introductory JavaScript lectures.

All about the Arduino
3 questions
1 Lecture 10:57

This lecture gives an introduction to the Cylon.js framework, as well as a command-line tool, Gort, that will be used for communication with the Arduino microcontroller. A demonstration is given on how to get both of these set up and running.

Introducing Cylon.js
Working with LEDs
3 Lectures 30:50

Here, I introduce the Cylon JS framework with a basic LED circuit.

"Hello, LED"

Expanding on demo #1, this lecture demonstrates how to change the brightness of an LED using Pulse Width Modulation and the "brightness" function in Cylon.

LED Brightness

The last of the LED demos, this lecture really "shines" with the introduction of the RGB LED.


Just a quick quiz to asses what we've learned thus far about developing with LEDs using Cylon JS.

Working with LEDs
4 questions
Relays & Switches
2 Lectures 24:01

Back to LEDs again, but this time we're going to add an extra component to switch them on and off: a relay.

Working with Relays

I will be demonstrating how to read input on the digital pins using a momentary switch and pull-down resistor.

Momentary Switch

This quiz will address points made in the lecture on relays.

Relays with Cylon
4 questions
Beyond the Basics: Using an Xbox 360 Controller with Cylon.js
3 Lectures 27:51

This lecture introduces you to the circuit diagram and necessary components. It also guides you through installing the necessary NPM packages, and helps ensure that your host machine is properly communicating with your controller.

Introduction and Configuration

This lecture finalizes the configuration for the Xbox controller, in order for Cylon to properly work with it. The various event handlers for the controller's buttons and joysticks are discussed and demonstrated, as well.

Controller Mapping and Event Handling

This lecture builds upon the last one and does something a little more meaningful with the buttons' event handlers. We'll use the A, B, and X buttons to light up the RGB LED, and then we'll use the left and right bumper buttons to toggle two LEDs wired to a relay on and off.

Preview 06:54
About the Instructor
Tony Thorsen
4.5 Average rating
27 Reviews
2,350 Students
1 Course
Developer, Maker, Home Automation Tinkerer, LEGO Fanatic

I am the owner, developer, and Chief Masher Upper at Dev Mashup. I'm very passionate about technology and mentoring others. My goal is to show that passion through teaching these courses in hopes of helping you grow as a developer.

I have over a decade of development experience. I love tinkering with technologies of any kind and try to remain platform agnostic. I'm not a die-hard Mac, Linux or Windows guy, and use all of them on a semi-regular basis, though most of my experience has come on the Windows platform.

In terms of development, most of my experience has been with .NET, namely C#. I have done projects in Java, as well, and have some experience with C/C++. I have also worked with web technologies, such as Angular, HTML, CSS and a host of other JS libraries. REST & SOAP technologies like WCF and WebAPI, as well as in Node JS and Golang, round out most of my server-side/backend technology experiences. In terms of database management systems, I have worked with Oracle, MySQL and SQL Server (2000, 2005, 2008) over the years. I have created a couple of iOS and Windows Phone apps, so I have a bit of experience with Objective-C and XAML/Silverlight, as well.