Introduction to Microcontrollers Arduino - Hack

Document Sample
Introduction to Microcontrollers  Arduino - Hack Powered By Docstoc
					Introduction to Microcontrollers:
    Skylar Roebuck and Lucas Libraro
             What we will learn you…
• Presentation learnin
    – The Arduino
    – Microcontroller basics
    – Introduction to programming
        • Variables
        • Binary
              – Introduction do the digital ‘1’ and ‘0’
        •   Data types
        •   Anatomy of a program
        •   Sketches- setup and loop
        •   Logic AND, OR, NOT
    – Circuit Construction
        •   What’s in the kit?
        •   Ohm’s Law
        •   Resistor Color Coding
        •   Pull Up and Pull Down

    Then we get building…
The Arduino
What is an Arduino

              The Arduino is first and
              foremost a
    So what is a microcontroller?
• Essentially, a microcontroller is a small
  computer on a single integrated circuit.

• The microcontroller has a simple CPU
  comprised of clock timers, input/output ports,
  and memory.
•   automatically controlled products and devices
•   automobile engine control systems
•   implantable medical devices
•   remote controls
•   office machines
•   appliances
•   power tools
•   And more and more and more
         Personal Project Uses:
• Microcontrollers are great at handling inputs and
  outputs for example:

• Using a temperature sensor and outputting the
  temperature on a screen.
• Using an infrared sensor and using it to guide a
  robot by controlling motors.
• Using servos to move a robotic arm
• Possibilities are endless.
So why the Arduino?

• Expandability
   – Easy to attach Ethernet shields, sensors, etc.

• Easy Setup
   – All you need is a standard USB cable for programming and power

• Breakout board
   – Circuit creation is made easy by not having to do any soldering

• Inexpensive

• Powerful
   – Fueled by the Atmega328 microcontroller
    The learnin

Pencils and Paper Time!
• A variable is how you store a value within a program

• Examples:
• Hackrva = “awesome”;
   – Assigns the string (a data type) Awesome to hackrva

• Hackrva = 2;
   – Assigns the integer 2 to the variable hackrva.
   – Further: hackrva = hackrva + 2;
              » NOW: hackrva = 4
                       Data types
• Data types are an important foundation to
  programming. For example, if you want a
  program to count to 10 then you want:
   – 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

• You do NOT want
   – 1.00000, 1.00001, 1.00002, etc.

• This is solved by using data types properly
                Data types mark 2
• In the example before, counting to 10, we would want
  that to be an integer so that it ignores all other values.

• This is done in conjunction with the variable and this
  process is known as defining or initializing variables:

• Int counter;
   – -this just tells the compiler that counter is an integer and it
     doesn’t need to be concerned with any other data.
                Data types mark 3
• Further there are many data types and the variable
  needs to be assigned according to what it will be used

Common data types are:
• String = “hack.rva rocks”;
• Char = “A”;
• Int = 1;
• Float = 1.5675;
   – Binary types
      • Boolean = 0; (only 0 or 1)
      • Byte = “00001111”;
                        The nitty gritty
•   The foundation of programming is
•   the ‘0’ and the ‘1’

•   Boolean                        Seems very polar but there are shades of gray we
•   ‘0’ – No                       will discuss later
•   ‘1’ – Yes

•   Binary
•   000 - 0
•   001 - 1
•   010 - 2
•   011 - 3        This is what the microcontroller understands
•   100 - 4
•   101 - 5
•   110 - 6
•   111 - 7
                 LOGIC Gates
• Logic comes into play when working and thinking
  on a binary level. They are essentially operations
  like +, -, *, / except on a binary numbers.

• In fact using logic is how you CREATE +,-,*,/
  well…you also need about 5000 transistors.

• The foundation basic gates are:
                 INPUT        OUTPUT
             A           B    A AND B
             0           0       0
             0           1       0
             1           0       0
             1           1       1

Example: We want LED3 to come on when LED1 and LED2
are both on:

If LED2 = 1 AND LED1 = 1 then LED3 = 1

Example: We want LED3 to come on when either LED1 and
LED2 are both on:

If LED2 = 1 OR LED1 = 1 then LED3 = 1

               INPUT          OUTPUT
           A           B       A OR B
           0           0         0
           0           1         1
           1           0         1
           1           1         1
NOT (invert)
             INPUT        OUTPUT
               A           NOT A
                0            1
                1            0

 Example: We want LED3 to be the opposite of its current
 state (if off then on and if on then off):

Anatomy of a Program
 How do we make it do what we want:
            Program it!
• High level languages
   – C++, C, Java – closest to natural human understanding
   – Arduino’s Programming Language

• Low level languages
   – Assembly Code– a little more difficult to interpret for a person
     but still possible

• Lowest (if you write this you have too much free time)
   – Machine Code – all patterns of ‘0’s and ‘1’s
   – The microcontroller might see:
   – And from this it will know a specific command.
                     A program.
• Basic life of a program:
   – User writes a program in C (a high level language)
   – A compiler will then take that code and converts it into
     Assembly language
   – Then an assembler will take that code and turn it into
     machine code.

   – We are using an Arduino IDE, or integrated development
     environment, so we will write code using Arduino’s
     language and it will take care of the rest!

   – Easy Peazy
           Programming Languages
• Obviously, not every programming language is the same. Each
  language differs in a way that makes it particularly good for

• Arduino is no different. Arduino has been simplified specifically to
  make it easy to program the Arduino microcontroller.

• Anatomy of an Arduino Program:
    – Arduino calls every program a Sketch (maybe they feel like that makes
      them edgy to be different)
    – Sketches are comprised of a SETUP and a LOOP section
    – Setup: Only Runs once and is used to set necessary registers and pins
    – Loop: This is the rest of the sketch and by default when a sketch
      finishes in this language it repeats the entire sketch. Essentially
      looping-a concept we will cover later.
What’s in the kits?
                  What’s in the kits?
Half-sized breadboard- 400 connection points, plenty of room
for beginner projects, with 2 power rails on the side.
                  What’s in the kits?
1K & 10K potentiometer - these pots have 0.1" spacing and fit very
nicely into a breadboard without modification
                  What’s in the kits?
2 small pushbuttons - Snap into the breadboard for button inputs
                   What’s in the kits?
5 bright red diffused LEDs (250mcd) - indicators, blinkies, bright
enough to see in the day, but diffused so that they are visible from
all angles.
                  What’s in the kits?
Red, green and blue ultra-bright LED - Can be used on their own, or
color-mixed to make nearly any color in the rainbow!
                 What’s in the kits?
5 100 ohm resistors - They can be used to protect pin outputs when
starting out
5 1K resistors - Good for use as LED limiting resistors
5 10K resistors - Great for pullups & pulldowns
A few more concepts before building:
• Ohm’s Law!
  – Georg Simon Ohm was kind of the Originial
    Gangster of circuit construction
  – He developed the simple relationship

                Or current = voltage / resistance
          Why is this important?
• Today we will be using LEDs or Light Emitting Diodes .
• LEDs are essentially switches that emit light.
• When hooked up correctly to a power source, the
  current will flow through the switch in the right
  direction and turn it on.
• BUT, LEDs are often delicate! With too much current
  the LED will blow and become unusable.

• SOLUTION: We use a resistor to buffer the current
  through the LED.
              Which resistor?
• Using Ohm’s we can determine exactly which
  resistor is best but it is always best to be safe
  than sorry.
  – The higher the resistance the dimmer the LED will

• We will be using the 1K resistors.
  – …and which one is that?
Resistor Color Coding
Resistor Color Coding


 100k ohms
         Pull up/pull down resistors
• Pull up/pull down is a way of setting up buttons so that they are reliable.

• When we use buttons today we will add a pull down resistor. This resistor
  ensures that the button registers as a ‘0’ or off whenever it is not being

• This is the function of a pull down resistor—it makes sure inputs are what
  we expect them to be.
Time to build!
Picture of build schematic
Program 1

       This program introduces
       everybody to the general
       setup of a typical sketch
Program 2
Program 3

Shared By:
Lingjuan Ma Lingjuan Ma