.. _exercises: Exercises / Tutorials ========================== There are many things you can do with your smorphi_single and smorphi\ :sup:`2` robots. Do explore some of the exercises/tutorials to access some mini projects and tasks you can do with your Smorphi `here `_ We provide 2 different types of coding interfaces for users: * For beginners who are just starting out in coding, you can try out the exercises using our Blockly code programme which is more beginner friendly. * For people with some coding experience, you can try out the exercises using C++. * The exercises are split according to whichever coding interface you use. Exercises that are not specified are for both users. List of Robot exercises: ------------------------- :ref:`Exercise 1 - Putting your robot together ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Assemble your robot and link your robot to its control app for a quick start :ref:`Exercise 2 - Setting up your Smorphi for coding ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Learn about the arduino coding software and how to set up which in order to customise your Smorphi single / Smorphi\ :sup:`2` to perform various tasks. :ref:`Exercise 2A - Setting up your Smorphi for coding - Arduino portable (Windows) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Learn about the arduino coding software and how to set up which in order to customise your Smorphi single / Smorphi\ :sup:`2` to perform various tasks. :ref:`Exercise 2B - Setting up your Smorphi for coding - Arduino portable (MacOS) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Learn about the arduino coding software and how to set up which in order to customise your Smorphi single / Smorphi\ :sup:`2` to perform various tasks. :ref:`Exercise 3 - Documentation ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Look through and understand how to read coding documentation, and explore the various functions provided. :ref:`Exercise 4 - Introduction to Blockly ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Learn about Blockly and how to set up which you will need to customise your Smorphi to perform various tasks. :ref:`Exercise 5 - Basic Blockly coding ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Learn basic blockly coding structures, like variables, loops and conditionals. :ref:`Exercise 6 - Basic C++ / Arduino coding ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Learn basic Arduino coding structures, like variables, loops and conditionals. :ref:`Exercise 7 - Temperature sensor (Blockly) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Set up and use Blockly to control your Smorphi single / Smorphi\ :sup:`2` kit's temperature sensor for various activities and purposes :ref:`Exercise 8 - Temperature sensor (C++ / Arduino) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Set up and use C++ code to control your Smorphi single / Smorphi\ :sup:`2` kit's temperature sensor for various activities and purposes :ref:`Exercise 9 - Sound sensor (Blockly) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Set up and use Blockly to control your Smorphi single / Smorphi\ :sup:`2` kit's sound sensors for various activities and purposes :ref:`Exercise 10 - Sound sensor (C++ / Arduino) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Set up and use C++ code to control your Smorphi single / Smorphi\ :sup:`2` kit's sound sensors for various activities and purposes :ref:`Exercise 11 - Infrared (IR) for obstacle detection (Blockly) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Set up and use Blockly to control your Smorphi single / Smorphi\ :sup:`2` kit's IR sensors for various obstacle-detection purposes :ref:`Exercise 12 - Infrared (IR) for obstacle detection (C++ / Arduino) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Set up and use C++ to control your Smorphi single / Smorphi\ :sup:`2` kit's IR sensors for various obstacle-detection purposes `Exercise 13 - Simple line following using 2 IR sensors `_ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Code your Smorphi\ :sup:`2` to follow a line on the ground utilising 2 IR sensors `Exercise 14 - Line following and obstacle detection combined `_ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Challenge yourself by implementing line following with obstacle detection at the same time using just IR sensors :ref:`Exercise 15 - Pixycam ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Introducing the Pixycam usage and set up :ref:`Exercise 16 - Integrate Pixycam onto robot using ICSP protocol (Recommended Methodology) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Connecting Pixycam to your Smorphi\ :sup:`2` as a sensor :ref:`Exercise 17 - Integrate Pixycam onto robot using I2C protocol ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Connecting Pixycam to your Smorphi\ :sup:`2` as a sensor :ref:`Exercise 18 - Simple maze navigation ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Code your Smorphi single / Smorphi\ :sup:`2` to navigater through a simple maze :ref:`Exercise 19 - Pixycam colour detection (Blockly) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Code your Smorphi\ :sup:`2` to detect colours using Blockly :ref:`Exercise 20 - Pixycam Maze Solving with shape change (C++ / Arduino) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Code your Smorphi\ :sup:`2` to navigate through a slightly more complicated maze with varying widths that require shape change :ref:`Exercise 21 - Huskycam Maze Solving with shape change (C++ / Arduino) ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Code your Smorphi\ :sup:`2` to navigate through a slightly more complicated maze with varying widths that require shape change :ref:`Exercise 22 - Customise your app to control Smorphi ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Make your own app that you can use to control Smorphi :ref:`Exercise 23 - Make your own library ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Code exploration exercise to understand the background functions in depth :ref:`Exercise 24 - OTA (Over The Air) code upload methodology ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Setup and upload code to your smorphi robot using OTA method :ref:`Exercise 25 - Introduction to IoT(Internet of Things) / Blynk platform ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Learn about IoT and Blynk platform :ref:`Exercise 26 - Setting up Blynk platform ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Learn to setup Blynk platform and integrate Smorphi masterboard with the Blynk cloud and Blynk app :ref:`Exercise 27 - Smorphi control using Blynk Buttons ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Control Smorphi robot using buttons on Blynk platform interface :ref:`Exercise 28 - Smorphi control using Blynk Joystick ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Control Smorphi robot using joystick on Blynk platform interface :ref:`Exercise 29 - Huskylens camera ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Introducing the Huskylens camera usage and set up .. toctree:: :maxdepth: 1 :hidden: exercise_1/exercise_1 exercise_2/exercise_2 exercise_2A/exercise_2A exercise_2B/exercise_2B exercise_3/exercise_3 exercise_4/exercise_4 exercise_5/exercise_5 exercise_6/exercise_6 exercise_7/exercise_7 exercise_8/exercise_8 exercise_9/exercise_9 exercise_10/exercise_10 exercise_11/exercise_11 exercise_12/exercise_12 exercise_15/exercise_15 exercise_16/exercise_16 exercise_17/exercise_17 exercise_18/exercise_18 exercise_19/exercise_19 exercise_20/exercise_20 exercise_21/exercise_21 exercise_22/exercise_22 exercise_23/exercise_23 exercise_24/exercise_24 exercise_25/exercise_25 exercise_26/exercise_26 exercise_27/exercise_27 exercise_28/exercise_28 exercise_29/exercise_29