PDF of this portion of workshop notes:
|
|
- Janel Thomas
- 5 years ago
- Views:
Transcription
1 PDF of this portion of workshop notes:
2 Teaching Engineering Design with Student-Owned Digital and Analog Lab Equipment John B. Schneider Washington State University June 15, 2015
3 Overview 3/61
4 Overview 3/61 Concentrate on the digital, microcontroller part of Digilent s products: chipkit.
5 Overview 3/61 Concentrate on the digital, microcontroller part of Digilent s products: chipkit. Introduction to Digilent.
6 Overview 3/61 Concentrate on the digital, microcontroller part of Digilent s products: chipkit. Introduction to Digilent. What is chipkit?
7 Overview 3/61 Concentrate on the digital, microcontroller part of Digilent s products: chipkit. Introduction to Digilent. What is chipkit? Why use chipkit in the engineering curriculum?
8 Overview 3/61 Concentrate on the digital, microcontroller part of Digilent s products: chipkit. Introduction to Digilent. What is chipkit? Why use chipkit in the engineering curriculum? Introduction to chipkit with hands-on exercises.
9 Overview 3/61 Concentrate on the digital, microcontroller part of Digilent s products: chipkit. Introduction to Digilent. What is chipkit? Why use chipkit in the engineering curriculum? Introduction to chipkit with hands-on exercises. Keep discussion at introductory level: Material suitable for an introductory course on engineering design, independent of discipline.
10 Digilent 4/61 learn.digilentinc.com
11 Digilent 4/61 learn.digilentinc.com Founded in 2000 specifically to promote electrical and computer engineering education at the university level.
12 Digilent 4/61 learn.digilentinc.com Founded in 2000 specifically to promote electrical and computer engineering education at the university level. World s leading supplier of programmable logic boards.
13 Digilent 4/61 learn.digilentinc.com Founded in 2000 specifically to promote electrical and computer engineering education at the university level. World s leading supplier of programmable logic boards. More than 1200 schools worldwide and 100,000 students/semester.
14 Digilent 4/61 learn.digilentinc.com Founded in 2000 specifically to promote electrical and computer engineering education at the university level. World s leading supplier of programmable logic boards. More than 1200 schools worldwide and 100,000 students/semester. More than 250,000 academic/demo boards/kits shipped.
15 Digilent 4/61 learn.digilentinc.com Founded in 2000 specifically to promote electrical and computer engineering education at the university level. World s leading supplier of programmable logic boards. More than 1200 schools worldwide and 100,000 students/semester. More than 250,000 academic/demo boards/kits shipped. Used in more than 90% of the world s top universities.
16 Digilent 4/61 learn.digilentinc.com Founded in 2000 specifically to promote electrical and computer engineering education at the university level. World s leading supplier of programmable logic boards. More than 1200 schools worldwide and 100,000 students/semester. More than 250,000 academic/demo boards/kits shipped. Used in more than 90% of the world s top universities. Previously concentrated efforts in higher education.
17 Digilent 4/61 learn.digilentinc.com Founded in 2000 specifically to promote electrical and computer engineering education at the university level. World s leading supplier of programmable logic boards. More than 1200 schools worldwide and 100,000 students/semester. More than 250,000 academic/demo boards/kits shipped. Used in more than 90% of the world s top universities. Previously concentrated efforts in higher education. Now interested in also serving the needs of hobbyists, K-12 students, and non-traditional students (e.g., those involved in free online courses).
18 chipkit 5/61 chipkit denotes open-source microcontroller-based hardware and software.
19 chipkit 5/61 chipkit denotes open-source microcontroller-based hardware and software. Inspired by (and generally compatible with) Arduino.
20 chipkit 5/61 chipkit denotes open-source microcontroller-based hardware and software. Inspired by (and generally compatible with) Arduino. From arduino.cc, Arduino is: Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It s intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments.
21 chipkit 5/61 chipkit denotes open-source microcontroller-based hardware and software. Inspired by (and generally compatible with) Arduino. From arduino.cc, Arduino is: Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It s intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. From wikipedia.org, Arduino is: Arduino is a single-board microcontroller designed to make the process of using electronics in multidisciplinary projects more accessible.
22 What Is Engineering? 6/61
23 What Is Engineering? 6/61 What is a scientist?
24 What Is Engineering? 6/61 What is a scientist? What is an engineer?
25 What Is Engineering? 6/61 What is a scientist? What is an engineer? The scientist describes what is.
26 What Is Engineering? 6/61 What is a scientist? What is an engineer? The scientist describes what is. The engineer creates what never was. Theodore von Kármán
27 What Is Engineering? 6/61 What is a scientist? What is an engineer? The scientist describes what is. The engineer creates what never was. Theodore von Kármán Engineering is a creative process.
28 Microprocessor vs. Microcontroller Microprocessor: heart of most computers; the central processing unit (CPU). 7/61
29 Microprocessor vs. Microcontroller Microprocessor: heart of most computers; the central processing unit (CPU). Microcontroller: a CPU plus added systems such as on-board memory, analog-to-digital converters, peripheral interfaces, etc. 7/61
30 Microprocessor vs. Microcontroller Microprocessor: heart of most computers; the central processing unit (CPU). Microcontroller: a CPU plus added systems such as on-board memory, analog-to-digital converters, peripheral interfaces, etc. Microcontrollers are the heart of most embedded systems, i.e., systems or devices that perform (dedicated) computations, often with some time constraint. 7/61
31 Teaching/Engaging 8/61 To teach students you have to engage them.
32 Teaching/Engaging 8/61 To teach students you have to engage them. But how?
33 Teaching/Engaging 8/61 To teach students you have to engage them. But how? By imparting knowledge and teaching skills such that:
34 Teaching/Engaging 8/61 To teach students you have to engage them. But how? By imparting knowledge and teaching skills such that: The link between the knowledge and the application of that knowledge is clear.
35 Teaching/Engaging 8/61 To teach students you have to engage them. But how? By imparting knowledge and teaching skills such that: The link between the knowledge and the application of that knowledge is clear. The skills are directly relevant to exciting technologies (and good careers!).
36 Teaching/Engaging 8/61 To teach students you have to engage them. But how? By imparting knowledge and teaching skills such that: The link between the knowledge and the application of that knowledge is clear. The skills are directly relevant to exciting technologies (and good careers!). Students learn through project-based activities.
37 Physical Computing 9/61 Physical Computing: A framework for engaging students.
38 Physical Computing 9/61 Physical Computing: A framework for engaging students. Traditional computing involves the manipulation of data within the computer and displaying data (text, music, images, videos).
39 Physical Computing 9/61 Physical Computing: A framework for engaging students. Traditional computing involves the manipulation of data within the computer and displaying data (text, music, images, videos). Physical computing involves using a computer (microcontroller) to interact with the physical world through sensors and various output devices (lights, displays, motors, actuators, etc.).
40 Student Engagement: Exciting Technologies 10/61 In May 2013, the McKinsey Global Institute published Disruptive Technologies: Advances that will transform life, business, and the global economy.
41 Student Engagement: Exciting Technologies 10/61 In May 2013, the McKinsey Global Institute published Disruptive Technologies: Advances that will transform life, business, and the global economy. This describes ten disruptive technologies they believe could have a large impact by 2025 (only 12 years from now!).
42 Student Engagement: Exciting Technologies 10/61 In May 2013, the McKinsey Global Institute published Disruptive Technologies: Advances that will transform life, business, and the global economy. This describes ten disruptive technologies they believe could have a large impact by 2025 (only 12 years from now!). Arguably every one of these technologies will have engineers and/or computer scientists intimately involved in their development, deployment, operation, and maintenance.
43 Student Engagement: Exciting Technologies 10/61 In May 2013, the McKinsey Global Institute published Disruptive Technologies: Advances that will transform life, business, and the global economy. This describes ten disruptive technologies they believe could have a large impact by 2025 (only 12 years from now!). Arguably every one of these technologies will have engineers and/or computer scientists intimately involved in their development, deployment, operation, and maintenance. Examples: Internet of Things (network of low-cost sensors and actuators for decision making and process optimization).
44 Student Engagement: Exciting Technologies 10/61 In May 2013, the McKinsey Global Institute published Disruptive Technologies: Advances that will transform life, business, and the global economy. This describes ten disruptive technologies they believe could have a large impact by 2025 (only 12 years from now!). Arguably every one of these technologies will have engineers and/or computer scientists intimately involved in their development, deployment, operation, and maintenance. Examples: Internet of Things (network of low-cost sensors and actuators for decision making and process optimization). Advanced Robotics (enhanced dexterity, sensing, and intelligence).
45 Student Engagement: Exciting Technologies 10/61 In May 2013, the McKinsey Global Institute published Disruptive Technologies: Advances that will transform life, business, and the global economy. This describes ten disruptive technologies they believe could have a large impact by 2025 (only 12 years from now!). Arguably every one of these technologies will have engineers and/or computer scientists intimately involved in their development, deployment, operation, and maintenance. Examples: Internet of Things (network of low-cost sensors and actuators for decision making and process optimization). Advanced Robotics (enhanced dexterity, sensing, and intelligence). Autonomous and Near-Autonomous Vehicles.
46 Student Engagement: Exciting Technologies 10/61 In May 2013, the McKinsey Global Institute published Disruptive Technologies: Advances that will transform life, business, and the global economy. This describes ten disruptive technologies they believe could have a large impact by 2025 (only 12 years from now!). Arguably every one of these technologies will have engineers and/or computer scientists intimately involved in their development, deployment, operation, and maintenance. Examples: Internet of Things (network of low-cost sensors and actuators for decision making and process optimization). Advanced Robotics (enhanced dexterity, sensing, and intelligence). Autonomous and Near-Autonomous Vehicles. 3D Printing.
47 Multidisciplinary 11/61 The four technologies on the previous page all involve physical computing.
48 Multidisciplinary 11/61 The four technologies on the previous page all involve physical computing. Note that none of these technologies fit neatly into a discipline you would find at a typical university (nor within a curriculum at most high schools).
49 Multidisciplinary 11/61 The four technologies on the previous page all involve physical computing. Note that none of these technologies fit neatly into a discipline you would find at a typical university (nor within a curriculum at most high schools). These technologies definitely involve computer science, electrical engineering, and mechanical engineering.
50 Multidisciplinary 11/61 The four technologies on the previous page all involve physical computing. Note that none of these technologies fit neatly into a discipline you would find at a typical university (nor within a curriculum at most high schools). These technologies definitely involve computer science, electrical engineering, and mechanical engineering. They also combine various aspects of multiple foundational disciplines such as mathematics, physics, and material science/chemistry.
51 chipkit Programming 12/61 chipkit programming: Done using MPIDE (MultiPlatform Integrated Development Environment).
52 chipkit Programming 12/61 chipkit programming: Done using MPIDE (MultiPlatform Integrated Development Environment). Fork from the Arduino IDE.
53 chipkit Programming 12/61 chipkit programming: Done using MPIDE (MultiPlatform Integrated Development Environment). Fork from the Arduino IDE. Completely open source (free).
54 chipkit Programming 12/61 chipkit programming: Done using MPIDE (MultiPlatform Integrated Development Environment). Fork from the Arduino IDE. Completely open source (free). Works on Mac, Windows, Linux.
55 chipkit Programming 12/61 chipkit programming: Done using MPIDE (MultiPlatform Integrated Development Environment). Fork from the Arduino IDE. Completely open source (free). Works on Mac, Windows, Linux. Created with beginners in mind (easy to learn).
56 chipkit Programming 12/61 chipkit programming: Done using MPIDE (MultiPlatform Integrated Development Environment). Fork from the Arduino IDE. Completely open source (free). Works on Mac, Windows, Linux. Created with beginners in mind (easy to learn). Programming done in C/C++.
57 chipkit Programming 12/61 chipkit programming: Done using MPIDE (MultiPlatform Integrated Development Environment). Fork from the Arduino IDE. Completely open source (free). Works on Mac, Windows, Linux. Created with beginners in mind (easy to learn). Programming done in C/C++. C and C++: Two of the most common and important programming languages!
58 chipkit Programming 12/61 chipkit programming: Done using MPIDE (MultiPlatform Integrated Development Environment). Fork from the Arduino IDE. Completely open source (free). Works on Mac, Windows, Linux. Created with beginners in mind (easy to learn). Programming done in C/C++. C and C++: Two of the most common and important programming languages! Used throughout academia and industry.
59 chipkit Programming 12/61 chipkit programming: Done using MPIDE (MultiPlatform Integrated Development Environment). Fork from the Arduino IDE. Completely open source (free). Works on Mac, Windows, Linux. Created with beginners in mind (easy to learn). Programming done in C/C++. C and C++: Two of the most common and important programming languages! Used throughout academia and industry. Especially common in embedded systems applications.
60 chipkit: Using It! 13/61 Project 1: Installing and running MPIDE. Installing a sketch on a chipkit board. Project 2: Blink an internal LED. Digital systems. Basic C/C++ syntax. Structure of a sketch. Project 3: Blink an external LED. Basic electric principles. Breadboards. Project 4: Button-controlled LEDs. Pull-up and pull-down resistors. Obtaining input. Logical operations. Project 5: A Trainable Blinking LED. Nonblocking delay. Button bounce. Project 6: The Serial Monitor. Serial communication. Debouncing. Project 7: Introduction to logic (controlling multiple LEDs). Truth tables. Project 8: Analog Output (a breathing LED). Pulse width modulation (PWM). Analog to digital conversion.
61 P1: MPIDE, Part 1 14/61 Installing MPIDE and running a sketch:
62 P1: MPIDE, Part 1 14/61 Installing MPIDE and running a sketch: Obtain from: Or, from a thumbdrive!
63 P1: MPIDE, Part 1 14/61 Installing MPIDE and running a sketch: Obtain from: Or, from a thumbdrive! Unzip the file (right click and select Extract file... ). Name of resulting folder will be same as file less.zip.
64 P1: MPIDE, Part 1 14/61 Installing MPIDE and running a sketch: Obtain from: Or, from a thumbdrive! Unzip the file (right click and select Extract file... ). Name of resulting folder will be same as file less.zip. Connect cable from computer to chipkit board (a driver will be installed automatically causing LEDs to flash).
65 P1: MPIDE, Part 1 14/61 Installing MPIDE and running a sketch: Obtain from: Or, from a thumbdrive! Unzip the file (right click and select Extract file... ). Name of resulting folder will be same as file less.zip. Connect cable from computer to chipkit board (a driver will be installed automatically causing LEDs to flash). Locate and double-click on mpide application within the extracted files (located in a sub-folder with same name as main folder).
66 P1: MPIDE, Part 2 15/61 After starting MPIDE, a window should appear similar to the one on the right.
67 P1: MPIDE, Part 2 15/61 After starting MPIDE, a window should appear similar to the one on the right. Rather than writing our own sketch, select File>Examples>1.Basics>Blink.
68 P1: MPIDE, Part 2 15/61 After starting MPIDE, a window should appear similar to the one on the right. Rather than writing our own sketch, select File>Examples>1.Basics>Blink. This sketch blinks an on-board LED.
69 P1: MPIDE, Part 2 15/61 After starting MPIDE, a window should appear similar to the one on the right. Rather than writing our own sketch, select File>Examples>1.Basics>Blink. This sketch blinks an on-board LED. We need to compile the sketch and transfer it to the chipkit board.
70 P1: MPIDE, Part 2 15/61 After starting MPIDE, a window should appear similar to the one on the right. Rather than writing our own sketch, select File>Examples>1.Basics>Blink. This sketch blinks an on-board LED. We need to compile the sketch and transfer it to the chipkit board. Go to Tools>Board>chipKIT and select chipkit Uno32 (or whatever board you have).
71 P1: MPIDE, Part 2 15/61 After starting MPIDE, a window should appear similar to the one on the right. Rather than writing our own sketch, select File>Examples>1.Basics>Blink. This sketch blinks an on-board LED. We need to compile the sketch and transfer it to the chipkit board. Go to Tools>Board>chipKIT and select chipkit Uno32 (or whatever board you have). Go to Tools>Serial Port and select the port connected to the chipkit board. (Windows: usually COM3 or higher. If unsure, can disconnect board and see which port disappears. Mac: something like /dev/tty.usbserial-ae00dnwc.)
72 P1: MPIDE, Part 3 16/61 Click the upload button to compile and transfer the code to the board. (Or, type Ctrl+U.)
73 P1: MPIDE, Part 3 16/61 Click the upload button to compile and transfer the code to the board. (Or, type Ctrl+U.) During the upload, two LEDS will flicker briefly.
74 P1: MPIDE, Part 3 16/61 Click the upload button to compile and transfer the code to the board. (Or, type Ctrl+U.) During the upload, two LEDS will flicker briefly. Then one LED should blink at two-second intervals (one second on; one second off).
75 Cost 17/61 Cost associated with using chipkit to do physical computing:
76 Cost 17/61 Cost associated with using chipkit to do physical computing: Software is free!
77 Cost 17/61 Cost associated with using chipkit to do physical computing: Software is free! $26.95 for chipkit Uno32.
78 Cost 17/61 Cost associated with using chipkit to do physical computing: Software is free! $26.95 for chipkit Uno32. Cost of parts for the project of interest (often pennies).
79 Cost 17/61 Cost associated with using chipkit to do physical computing: Software is free! $26.95 for chipkit Uno32. Cost of parts for the project of interest (often pennies). Must program using a computer.
80 Cost 17/61 Cost associated with using chipkit to do physical computing: Software is free! $26.95 for chipkit Uno32. Cost of parts for the project of interest (often pennies). Must program using a computer. (Laptop, desktop; Mac, Windows, Linux.)
81 Cost 17/61 Cost associated with using chipkit to do physical computing: Software is free! $26.95 for chipkit Uno32. Cost of parts for the project of interest (often pennies). Must program using a computer. (Laptop, desktop; Mac, Windows, Linux.) Cost is low enough that students can easily purchase their own hardware (less than the cost of textbook!).
82 Cost 17/61 Cost associated with using chipkit to do physical computing: Software is free! $26.95 for chipkit Uno32. Cost of parts for the project of interest (often pennies). Must program using a computer. (Laptop, desktop; Mac, Windows, Linux.) Cost is low enough that students can easily purchase their own hardware (less than the cost of textbook!). chipkit boards (and peripherals) available at
83 Graphical vs. Text-Based Programming 18/61 C/C++: Have their roots in work from Bell Labs in the 1960 s.
84 Graphical vs. Text-Based Programming 18/61 C/C++: Have their roots in work from Bell Labs in the 1960 s. Text-based instructions.
85 Graphical vs. Text-Based Programming 18/61 C/C++: Have their roots in work from Bell Labs in the 1960 s. Text-based instructions. Produce clean code that can execute very quickly.
86 Graphical vs. Text-Based Programming 18/61 C/C++: Have their roots in work from Bell Labs in the 1960 s. Text-based instructions. Produce clean code that can execute very quickly. Program statements unambiguously describe the flow of execution.
87 Graphical vs. Text-Based Programming 18/61 C/C++: Have their roots in work from Bell Labs in the 1960 s. Text-based instructions. Produce clean code that can execute very quickly. Program statements unambiguously describe the flow of execution. Have a syntactic overhead that presents an initial learning challenge.
88 Graphical vs. Text-Based Programming 18/61 C/C++: Have their roots in work from Bell Labs in the 1960 s. Text-based instructions. Produce clean code that can execute very quickly. Program statements unambiguously describe the flow of execution. Have a syntactic overhead that presents an initial learning challenge. In contrast to text-based programming, many graphical programming tools exist: LabVIEW, Simulink, NXT-G, etc.
89 Graphical vs. Text-Based Programming 18/61 C/C++: Have their roots in work from Bell Labs in the 1960 s. Text-based instructions. Produce clean code that can execute very quickly. Program statements unambiguously describe the flow of execution. Have a syntactic overhead that presents an initial learning challenge. In contrast to text-based programming, many graphical programming tools exist: LabVIEW, Simulink, NXT-G, etc. Provide a different way of creating and thinking about a program.
90 Graphical vs. Text-Based Programming 18/61 C/C++: Have their roots in work from Bell Labs in the 1960 s. Text-based instructions. Produce clean code that can execute very quickly. Program statements unambiguously describe the flow of execution. Have a syntactic overhead that presents an initial learning challenge. In contrast to text-based programming, many graphical programming tools exist: LabVIEW, Simulink, NXT-G, etc. Provide a different way of creating and thinking about a program. Some can be used for embedded systems programming.
91 Graphical vs. Text-Based Programming 18/61 C/C++: Have their roots in work from Bell Labs in the 1960 s. Text-based instructions. Produce clean code that can execute very quickly. Program statements unambiguously describe the flow of execution. Have a syntactic overhead that presents an initial learning challenge. In contrast to text-based programming, many graphical programming tools exist: LabVIEW, Simulink, NXT-G, etc. Provide a different way of creating and thinking about a program. Some can be used for embedded systems programming. Often proprietary (additional cost).
92 Graphical vs. Text-Based Programming 18/61 C/C++: Have their roots in work from Bell Labs in the 1960 s. Text-based instructions. Produce clean code that can execute very quickly. Program statements unambiguously describe the flow of execution. Have a syntactic overhead that presents an initial learning challenge. In contrast to text-based programming, many graphical programming tools exist: LabVIEW, Simulink, NXT-G, etc. Provide a different way of creating and thinking about a program. Some can be used for embedded systems programming. Often proprietary (additional cost). Both text-based and graphical programming have strengths and weaknesses.
93 Graphical vs. Text-Based Programming 18/61 C/C++: Have their roots in work from Bell Labs in the 1960 s. Text-based instructions. Produce clean code that can execute very quickly. Program statements unambiguously describe the flow of execution. Have a syntactic overhead that presents an initial learning challenge. In contrast to text-based programming, many graphical programming tools exist: LabVIEW, Simulink, NXT-G, etc. Provide a different way of creating and thinking about a program. Some can be used for embedded systems programming. Often proprietary (additional cost). Both text-based and graphical programming have strengths and weaknesses. Compelling reasons to be exposed to both!
94 chipkit: Using It! 19/61 Project 1: Installing and running MPIDE. Installing a sketch on a chipkit board. Project 2: Blink an internal LED. Digital systems. Basic C/C++ syntax. Structure of a sketch. Project 3: Blink an external LED. Basic electric principles. Breadboards. Project 4: Button-controlled LEDs. Pull-up and pull-down resistors. Obtaining input. Logical operations. Project 5: A Trainable Blinking LED. Nonblocking delay. Button bounce. Project 6: The Serial Monitor. Serial communication. Debouncing. Project 7: Introduction to logic (controlling multiple LEDs). Truth tables. Project 8: Analog Output (a breathing LED). Pulse width modulation (PWM). Analog to digital conversion.
95 P2: C/C++ Fundamentals, Part 1 20/61 C/C++ sketches (programs) organized in terms of functions.
96 P2: C/C++ Fundamentals, Part 1 20/61 C/C++ sketches (programs) organized in terms of functions. C/C++ functions share many properties with mathematical functions.
97 P2: C/C++ Fundamentals, Part 1 20/61 C/C++ sketches (programs) organized in terms of functions. C/C++ functions share many properties with mathematical functions. Information is passed in via arguments.
98 P2: C/C++ Fundamentals, Part 1 20/61 C/C++ sketches (programs) organized in terms of functions. C/C++ functions share many properties with mathematical functions. Information is passed in via arguments. Functions can return data
99 P2: C/C++ Fundamentals, Part 1 20/61 C/C++ sketches (programs) organized in terms of functions. C/C++ functions share many properties with mathematical functions. Information is passed in via arguments. Functions can return data (or be used for their side effects ).
100 P2: C/C++ Fundamentals, Part 1 20/61 C/C++ sketches (programs) organized in terms of functions. C/C++ functions share many properties with mathematical functions. Information is passed in via arguments. Functions can return data (or be used for their side effects ). Each function has:
101 P2: C/C++ Fundamentals, Part 1 20/61 C/C++ sketches (programs) organized in terms of functions. C/C++ functions share many properties with mathematical functions. Information is passed in via arguments. Functions can return data (or be used for their side effects ). Each function has: A return type (specifying what type of data the function returns; possibly void for nothing).
102 P2: C/C++ Fundamentals, Part 1 20/61 C/C++ sketches (programs) organized in terms of functions. C/C++ functions share many properties with mathematical functions. Information is passed in via arguments. Functions can return data (or be used for their side effects ). Each function has: A return type (specifying what type of data the function returns; possibly void for nothing). A name (certain restrictions apply).
103 P2: C/C++ Fundamentals, Part 1 20/61 C/C++ sketches (programs) organized in terms of functions. C/C++ functions share many properties with mathematical functions. Information is passed in via arguments. Functions can return data (or be used for their side effects ). Each function has: A return type (specifying what type of data the function returns; possibly void for nothing). A name (certain restrictions apply). An argument list (possibly empty).
104 P2: C/C++ Fundamentals, Part 1 20/61 C/C++ sketches (programs) organized in terms of functions. C/C++ functions share many properties with mathematical functions. Information is passed in via arguments. Functions can return data (or be used for their side effects ). Each function has: A return type (specifying what type of data the function returns; possibly void for nothing). A name (certain restrictions apply). An argument list (possibly empty). A body where the statements that specify what the function does are given.
105 P2: C/C++ Fundamentals, Part 1 20/61 C/C++ sketches (programs) organized in terms of functions. C/C++ functions share many properties with mathematical functions. Information is passed in via arguments. Functions can return data (or be used for their side effects ). Each function has: A return type (specifying what type of data the function returns; possibly void for nothing). A name (certain restrictions apply). An argument list (possibly empty). A body where the statements that specify what the function does are given. Body is enclosed in braces.
106 P2: C/C++ Fundamentals, Part 2 21/61 A function adheres to the following template: 1 return_type function_name(list, of, arguments) { 2 // This is a comment. 3 // Body of function enclosed in braces. 4 /* This is also a comment. It spans multiple lines. 5 Statements (instructions) in C/C++ must end with 6 a semicolon. */ 7 }
107 P2: C/C++ Fundamentals, Part 2 21/61 A function adheres to the following template: 1 return_type function_name(list, of, arguments) { 2 // This is a comment. 3 // Body of function enclosed in braces. 4 /* This is also a comment. It spans multiple lines. 5 Statements (instructions) in C/C++ must end with 6 a semicolon. */ 7 } C/C++ programs typically must have a function named main() which is where execution starts.
108 P2: C/C++ Fundamentals, Part 2 21/61 A function adheres to the following template: 1 return_type function_name(list, of, arguments) { 2 // This is a comment. 3 // Body of function enclosed in braces. 4 /* This is also a comment. It spans multiple lines. 5 Statements (instructions) in C/C++ must end with 6 a semicolon. */ 7 } C/C++ programs typically must have a function named main() which is where execution starts. (Other functions can be, and usually are, called from main().)
109 P2: C/C++ Fundamentals, Part 2 21/61 A function adheres to the following template: 1 return_type function_name(list, of, arguments) { 2 // This is a comment. 3 // Body of function enclosed in braces. 4 /* This is also a comment. It spans multiple lines. 5 Statements (instructions) in C/C++ must end with 6 a semicolon. */ 7 } C/C++ programs typically must have a function named main() which is where execution starts. (Other functions can be, and usually are, called from main().) There is no main() function in chipkit sketches!
110 P2: C/C++ Fundamentals, Part 2 21/61 A function adheres to the following template: 1 return_type function_name(list, of, arguments) { 2 // This is a comment. 3 // Body of function enclosed in braces. 4 /* This is also a comment. It spans multiple lines. 5 Statements (instructions) in C/C++ must end with 6 a semicolon. */ 7 } C/C++ programs typically must have a function named main() which is where execution starts. (Other functions can be, and usually are, called from main().) There is no main() function in chipkit sketches! Instead, a sketch must have a setup() function.
111 P2: C/C++ Fundamentals, Part 2 21/61 A function adheres to the following template: 1 return_type function_name(list, of, arguments) { 2 // This is a comment. 3 // Body of function enclosed in braces. 4 /* This is also a comment. It spans multiple lines. 5 Statements (instructions) in C/C++ must end with 6 a semicolon. */ 7 } C/C++ programs typically must have a function named main() which is where execution starts. (Other functions can be, and usually are, called from main().) There is no main() function in chipkit sketches! Instead, a sketch must have a setup() function. This is run once at the start of execution.
112 P2: C/C++ Fundamentals, Part 2 21/61 A function adheres to the following template: 1 return_type function_name(list, of, arguments) { 2 // This is a comment. 3 // Body of function enclosed in braces. 4 /* This is also a comment. It spans multiple lines. 5 Statements (instructions) in C/C++ must end with 6 a semicolon. */ 7 } C/C++ programs typically must have a function named main() which is where execution starts. (Other functions can be, and usually are, called from main().) There is no main() function in chipkit sketches! Instead, a sketch must have a setup() function. This is run once at the start of execution. It is used to initialize the chipkit board in whatever way is necessary.
113 P2: C/C++ Fundamentals, Part 2 21/61 A function adheres to the following template: 1 return_type function_name(list, of, arguments) { 2 // This is a comment. 3 // Body of function enclosed in braces. 4 /* This is also a comment. It spans multiple lines. 5 Statements (instructions) in C/C++ must end with 6 a semicolon. */ 7 } C/C++ programs typically must have a function named main() which is where execution starts. (Other functions can be, and usually are, called from main().) There is no main() function in chipkit sketches! Instead, a sketch must have a setup() function. This is run once at the start of execution. It is used to initialize the chipkit board in whatever way is necessary. Also, a sketch must have a loop() function.
114 P2: C/C++ Fundamentals, Part 2 21/61 A function adheres to the following template: 1 return_type function_name(list, of, arguments) { 2 // This is a comment. 3 // Body of function enclosed in braces. 4 /* This is also a comment. It spans multiple lines. 5 Statements (instructions) in C/C++ must end with 6 a semicolon. */ 7 } C/C++ programs typically must have a function named main() which is where execution starts. (Other functions can be, and usually are, called from main().) There is no main() function in chipkit sketches! Instead, a sketch must have a setup() function. This is run once at the start of execution. It is used to initialize the chipkit board in whatever way is necessary. Also, a sketch must have a loop() function. This is run repeatedly after setup() is run.
115 P2: C/C++ Fundamentals, Part 2 21/61 A function adheres to the following template: 1 return_type function_name(list, of, arguments) { 2 // This is a comment. 3 // Body of function enclosed in braces. 4 /* This is also a comment. It spans multiple lines. 5 Statements (instructions) in C/C++ must end with 6 a semicolon. */ 7 } C/C++ programs typically must have a function named main() which is where execution starts. (Other functions can be, and usually are, called from main().) There is no main() function in chipkit sketches! Instead, a sketch must have a setup() function. This is run once at the start of execution. It is used to initialize the chipkit board in whatever way is necessary. Also, a sketch must have a loop() function. This is run repeatedly after setup() is run. Execution only stops when power is removed.
116 P2: setup() and loop() 22/61 Flow of execution in a sketch: Execution starts here. Run once. setup() Run repeatedly. loop()
117 P2: setup() and loop() 22/61 Flow of execution in a sketch: Execution starts here. Run once. setup() Run repeatedly. loop() Both setup() and loop() are void functions (they don t return anything).
118 P2: setup() and loop() 22/61 Flow of execution in a sketch: Execution starts here. Run once. setup() Run repeatedly. loop() Both setup() and loop() are void functions (they don t return anything). Important: functions can be called from within other functions.
119 P2: setup() and loop() 22/61 Flow of execution in a sketch: Execution starts here. Run once. setup() Run repeatedly. loop() Both setup() and loop() are void functions (they don t return anything). Important: functions can be called from within other functions. When a function completes doing whatever it does, execution returns to the point in the sketch where it was called.
120 P2: setup() and loop() 22/61 Flow of execution in a sketch: Execution starts here. Run once. setup() Run repeatedly. loop() Both setup() and loop() are void functions (they don t return anything). Important: functions can be called from within other functions. When a function completes doing whatever it does, execution returns to the point in the sketch where it was called. There are many, many predefined functions that we can call!
121 P2: Digital Devices 23/61 Nearly all computers (and microcontrollers) are digital devices.
122 P2: Digital Devices 23/61 Nearly all computers (and microcontrollers) are digital devices. Inherently they operate with binary numbers where all data are a collection of ones and zeros.
123 P2: Digital Devices 23/61 Nearly all computers (and microcontrollers) are digital devices. Inherently they operate with binary numbers where all data are a collection of ones and zeros. Instead of one and zero, sometime we call these different values HIGH and LOW, or perhaps True and False, or even on and off.
124 P2: Digital Devices 23/61 Nearly all computers (and microcontrollers) are digital devices. Inherently they operate with binary numbers where all data are a collection of ones and zeros. Instead of one and zero, sometime we call these different values HIGH and LOW, or perhaps True and False, or even on and off. Computers use a voltage to represent different binary values.
125 P2: Digital Devices 23/61 Nearly all computers (and microcontrollers) are digital devices. Inherently they operate with binary numbers where all data are a collection of ones and zeros. Instead of one and zero, sometime we call these different values HIGH and LOW, or perhaps True and False, or even on and off. Computers use a voltage to represent different binary values. Typically a voltage of zero is taken to correspond to zero/low/false and a non-zero voltage is taken to correspond to one/high/true.
126 P2: Digital Devices 23/61 Nearly all computers (and microcontrollers) are digital devices. Inherently they operate with binary numbers where all data are a collection of ones and zeros. Instead of one and zero, sometime we call these different values HIGH and LOW, or perhaps True and False, or even on and off. Computers use a voltage to represent different binary values. Typically a voltage of zero is taken to correspond to zero/low/false and a non-zero voltage is taken to correspond to one/high/true. The chipkit boards operate at 3.3 Volts, i.e., voltages are either zero or 3.3 V.
127 P2: Digital Devices 23/61 Nearly all computers (and microcontrollers) are digital devices. Inherently they operate with binary numbers where all data are a collection of ones and zeros. Instead of one and zero, sometime we call these different values HIGH and LOW, or perhaps True and False, or even on and off. Computers use a voltage to represent different binary values. Typically a voltage of zero is taken to correspond to zero/low/false and a non-zero voltage is taken to correspond to one/high/true. The chipkit boards operate at 3.3 Volts, i.e., voltages are either zero or 3.3 V. Voltage is a measure of potential energy; basically how hard charges are being pushed to flow.
128 P2: Blink Sketch, Part 1 24/61 Here is the setup() function from the example Blink sketch: 1 void setup() { 2 // initialize the digital pin as an output. 3 // Pin 13 has an LED connected on most Arduino boards: 4 pinmode(13, OUTPUT); 5 } Anything from // to the end of the line is a comment and is ignored by the compiler.
129 P2: Blink Sketch, Part 1 24/61 Here is the setup() function from the example Blink sketch: 1 void setup() { 2 // initialize the digital pin as an output. 3 // Pin 13 has an LED connected on most Arduino boards: 4 pinmode(13, OUTPUT); 5 } Anything from // to the end of the line is a comment and is ignored by the compiler. Comments can also be enclosed between /* and */.
130 P2: Blink Sketch, Part 1 24/61 Here is the setup() function from the example Blink sketch: 1 void setup() { 2 // initialize the digital pin as an output. 3 // Pin 13 has an LED connected on most Arduino boards: 4 pinmode(13, OUTPUT); 5 } Anything from // to the end of the line is a comment and is ignored by the compiler. Comments can also be enclosed between /* and */. Line 1 specifies that setup() is a void function (it doesn t return anything).
131 P2: Blink Sketch, Part 1 24/61 Here is the setup() function from the example Blink sketch: 1 void setup() { 2 // initialize the digital pin as an output. 3 // Pin 13 has an LED connected on most Arduino boards: 4 pinmode(13, OUTPUT); 5 } Anything from // to the end of the line is a comment and is ignored by the compiler. Comments can also be enclosed between /* and */. Line 1 specifies that setup() is a void function (it doesn t return anything). setup() has an empty argument list (i.e., nothing appears between the parentheses) in line 1.
132 P2: Blink Sketch, Part 1 24/61 Here is the setup() function from the example Blink sketch: 1 void setup() { 2 // initialize the digital pin as an output. 3 // Pin 13 has an LED connected on most Arduino boards: 4 pinmode(13, OUTPUT); 5 } Anything from // to the end of the line is a comment and is ignored by the compiler. Comments can also be enclosed between /* and */. Line 1 specifies that setup() is a void function (it doesn t return anything). setup() has an empty argument list (i.e., nothing appears between the parentheses) in line 1. The body of setup() is given in lines 2 to 4.
133 P2: Blink Sketch, Part 1 24/61 Here is the setup() function from the example Blink sketch: 1 void setup() { 2 // initialize the digital pin as an output. 3 // Pin 13 has an LED connected on most Arduino boards: 4 pinmode(13, OUTPUT); 5 } Anything from // to the end of the line is a comment and is ignored by the compiler. Comments can also be enclosed between /* and */. Line 1 specifies that setup() is a void function (it doesn t return anything). setup() has an empty argument list (i.e., nothing appears between the parentheses) in line 1. The body of setup() is given in lines 2 to 4. Two of these lines are comments.
134 P2: Blink Sketch, Part 1 24/61 Here is the setup() function from the example Blink sketch: 1 void setup() { 2 // initialize the digital pin as an output. 3 // Pin 13 has an LED connected on most Arduino boards: 4 pinmode(13, OUTPUT); 5 } Anything from // to the end of the line is a comment and is ignored by the compiler. Comments can also be enclosed between /* and */. Line 1 specifies that setup() is a void function (it doesn t return anything). setup() has an empty argument list (i.e., nothing appears between the parentheses) in line 1. The body of setup() is given in lines 2 to 4. Two of these lines are comments. Connectors on the chipkit board are known as pins. Each pin has a number.
135 P2: Pins 25/61 The pins/connectors on a chipkit board are physically more like holes.
136 P2: Pins 25/61 The pins/connectors on a chipkit board are physically more like holes. On the board the pins are labeled with their corresponding numbers.
137 P2: Pins 25/61 The pins/connectors on a chipkit board are physically more like holes. On the board the pins are labeled with their corresponding numbers. Ground pin Digital pins Digital pin and its corresponding number Ground pins 5V source pin 3.3V source pin
138 P2: Pins 25/61 The pins/connectors on a chipkit board are physically more like holes. On the board the pins are labeled with their corresponding numbers. Ground pin Digital pins Digital pin and its corresponding number Ground pins 5V source pin 3.3V source pin Internally, pin 13 is tied to one of the LEDs (LD3).
139 P2: Pins 25/61 The pins/connectors on a chipkit board are physically more like holes. On the board the pins are labeled with their corresponding numbers. Ground pin Digital pins Digital pin and its corresponding number Ground pins 5V source pin 3.3V source pin Internally, pin 13 is tied to one of the LEDs (LD3). If pin 13 is HIGH, the LED is on.
140 P2: Pins 25/61 The pins/connectors on a chipkit board are physically more like holes. On the board the pins are labeled with their corresponding numbers. Ground pin Digital pins Digital pin and its corresponding number Ground pins 5V source pin 3.3V source pin Internally, pin 13 is tied to one of the LEDs (LD3). If pin 13 is HIGH, the LED is on. If pin 13 is LOW, the LED is off.
141 P2: Blink Sketch, Part 2 26/61 In setup() we call pinmode() to specify that pin 13 will be used for output.
142 P2: Blink Sketch, Part 2 26/61 In setup() we call pinmode() to specify that pin 13 will be used for output. pinmode(13, OUTPUT); // Set pin 13 to OUTPUT. pinmode() takes two arguments: the pin number and a value that specifies the mode.
143 P2: Blink Sketch, Part 2 26/61 In setup() we call pinmode() to specify that pin 13 will be used for output. pinmode(13, OUTPUT); // Set pin 13 to OUTPUT. pinmode() takes two arguments: the pin number and a value that specifies the mode. The mode is either INPUT or OUTPUT (predefined).
144 P2: Blink Sketch, Part 2 26/61 In setup() we call pinmode() to specify that pin 13 will be used for output. pinmode(13, OUTPUT); // Set pin 13 to OUTPUT. pinmode() takes two arguments: the pin number and a value that specifies the mode. The mode is either INPUT or OUTPUT (predefined). The loop() function in the Blink sketch is, essentially: 1 void loop() 2 { 3 digitalwrite(13, HIGH); // Turn on the LED. 4 delay(1000); // LED remains on for 1 second. 5 digitalwrite(13, LOW); // Turn off the LED. 6 delay(1000); // LED remains off for 1 second. 7 }
145 P2: Blink Sketch, Part 2 26/61 In setup() we call pinmode() to specify that pin 13 will be used for output. pinmode(13, OUTPUT); // Set pin 13 to OUTPUT. pinmode() takes two arguments: the pin number and a value that specifies the mode. The mode is either INPUT or OUTPUT (predefined). The loop() function in the Blink sketch is, essentially: 1 void loop() 2 { 3 digitalwrite(13, HIGH); // Turn on the LED. 4 delay(1000); // LED remains on for 1 second. 5 digitalwrite(13, LOW); // Turn off the LED. 6 delay(1000); // LED remains off for 1 second. 7 } digitalwrite() specifies the state of a pin (HIGH or LOW).
146 P2: Blink Sketch, Part 2 26/61 In setup() we call pinmode() to specify that pin 13 will be used for output. pinmode(13, OUTPUT); // Set pin 13 to OUTPUT. pinmode() takes two arguments: the pin number and a value that specifies the mode. The mode is either INPUT or OUTPUT (predefined). The loop() function in the Blink sketch is, essentially: 1 void loop() 2 { 3 digitalwrite(13, HIGH); // Turn on the LED. 4 delay(1000); // LED remains on for 1 second. 5 digitalwrite(13, LOW); // Turn off the LED. 6 delay(1000); // LED remains off for 1 second. 7 } digitalwrite() specifies the state of a pin (HIGH or LOW). delay() specifies an amount of delay in milliseconds.
147 Obtaining Help 27/61 To learn about predefined functions, and much, much more(!), in MPIDE go to Help>Reference.
148 Obtaining Help 27/61 To learn about predefined functions, and much, much more(!), in MPIDE go to Help>Reference. Yes, do it now!
149 Obtaining Help 27/61 To learn about predefined functions, and much, much more(!), in MPIDE go to Help>Reference. Yes, do it now! See what information you get for setup, HIGH, delay(), and/or digitalwrite().
150 Obtaining Help 27/61 To learn about predefined functions, and much, much more(!), in MPIDE go to Help>Reference. Yes, do it now! See what information you get for setup, HIGH, delay(), and/or digitalwrite(). QUIZ: Does the function pinmode() return anything?
151 chipkit: Using It! 28/61 Project 1: Installing and running MPIDE. Installing a sketch on a chipkit board. Project 2: Blink an internal LED. Digital systems. Basic C/C++ syntax. Structure of a sketch. Project 3: Blink an external LED. Basic electric principles. Breadboards. Project 4: Button-controlled LEDs. Pull-up and pull-down resistors. Obtaining input. Logical operations. Project 5: A Trainable Blinking LED. Nonblocking delay. Button bounce. Project 6: The Serial Monitor. Serial communication. Debouncing. Project 7: Introduction to logic (controlling multiple LEDs). Truth tables. Project 8: Analog Output (a breathing LED). Pulse width modulation (PWM). Analog to digital conversion.
152 P3: External LED Circuit 29/61 10 H G F H G A A B B C C D D E E F I I J J LED has a long leg and a short leg.
153 P3: External LED Circuit 29/61 H G F H G F I A B C D E I 20 J 25 J 30 LED has a long leg and a short leg. A B C D E Long leg is the anode (positive side) and must be attached to a pin (here, pin 3).
154 P3: External LED Circuit 29/61 H G F H G F I I A B C D E J 20 J 25 LED has a long leg and a short leg. 30 Long leg is the anode (positive side) and must be attached to a pin (here, pin 3). A B C D E Short leg is the cathode and connected to a 220 Ω resistor which is then connected to ground (0 V).
155 P3: External LED Circuit 29/61 H G F H G F I I J A B C D E J 20 LED has a long leg and a short leg. 25 Long leg is the anode (positive side) and must be attached to a pin (here, pin 3). 30 A B C D E Short leg is the cathode and connected to a 220 Ω resistor which is then connected to ground (0 V). Color bands on 220 Ω resistor: red, red, brown (and gold).
156 P3: Blink External LED 30/61 To blink an external LED, we can use nearly the same sketch (just change LED pin number).
157 P3: Blink External LED 30/61 To blink an external LED, we can use nearly the same sketch (just change LED pin number). But, now we must understand some basic circuit theory (which we won t get into here):
158 P3: Blink External LED 30/61 To blink an external LED, we can use nearly the same sketch (just change LED pin number). But, now we must understand some basic circuit theory (which we won t get into here): Voltage and current.
159 P3: Blink External LED 30/61 To blink an external LED, we can use nearly the same sketch (just change LED pin number). But, now we must understand some basic circuit theory (which we won t get into here): Voltage and current. Resistance and resistors.
160 P3: Blink External LED 30/61 To blink an external LED, we can use nearly the same sketch (just change LED pin number). But, now we must understand some basic circuit theory (which we won t get into here): Voltage and current. Resistance and resistors. LED behavior (non-linear device).
161 P3: Blink External LED 30/61 To blink an external LED, we can use nearly the same sketch (just change LED pin number). But, now we must understand some basic circuit theory (which we won t get into here): Voltage and current. Resistance and resistors. LED behavior (non-linear device). Why a resistor must be placed in series with an LED.
162 P3: Blink External LED 30/61 To blink an external LED, we can use nearly the same sketch (just change LED pin number). But, now we must understand some basic circuit theory (which we won t get into here): Voltage and current. Resistance and resistors. LED behavior (non-linear device). Why a resistor must be placed in series with an LED. How to connect elements (the use of wires) and the arrangement of electrical connections in a circuit breadboard.
163 P3: Blink External LED 30/61 To blink an external LED, we can use nearly the same sketch (just change LED pin number). But, now we must understand some basic circuit theory (which we won t get into here): Voltage and current. Resistance and resistors. LED behavior (non-linear device). Why a resistor must be placed in series with an LED. How to connect elements (the use of wires) and the arrangement of electrical connections in a circuit breadboard A A B B C C D D E F E F G H G H I I J J Wire Wires connect these three nodes
164 P3: Breadboards 31/61 Underlying electrical connections in a typical breadboard look like this (dark gray bands are metal strips):
165 P3: Breadboards 31/61 Underlying electrical connections in a typical breadboard look like this (dark gray bands are metal strips): A 30 A B B C C D D E F E F G H G H I I J J Strip of metal called a rail Strip of metal called a node "valley"
166 P3: Breadboards 31/61 Underlying electrical connections in a typical breadboard look like this (dark gray bands are metal strips): A 30 A B B C C D D E F E F G H G H I I J J Strip of metal called a rail Strip of metal called a node "valley" Wires that are electrically connected are all at the same voltage (metal/wires have almost no resistance).
167 P3: Breadboards 31/61 Underlying electrical connections in a typical breadboard look like this (dark gray bands are metal strips): A 30 A B B C C D D E F E F G H G H I I J J Strip of metal called a rail Strip of metal called a node "valley" Wires that are electrically connected are all at the same voltage (metal/wires have almost no resistance). To blink an external LED, we need to connect, in series, an LED and current limiting resistor between a pin and ground (0 V).
168 P3: External LED Circuit 32/ F G D A B C D E H F G E H I I J J(Repeat of earlier slide.) LED has a long leg and a short leg. Long leg is the anode (positive side) and must be attached to a pin (here, pin 3). A B C Short leg is the cathode and connected to a 220 Ω resistor which is then connected to ground (0 V). Color bands on 220 Ω resistor: red, red, brown (and gold).
169 Engineering in the 21st Century 33/61 As a university professor for 25 years, I have often told my students: Math is the language of engineering.
170 Engineering in the 21st Century 33/61 As a university professor for 25 years, I have often told my students: Math is the language of engineering. I no longer say this!
171 Engineering in the 21st Century 33/61 As a university professor for 25 years, I have often told my students: Math is the language of engineering. I no longer say this! I now tell them, As an engineer you have to be bilingual, understanding both mathematics and algorithmic problem solving.
172 Engineering in the 21st Century 33/61 As a university professor for 25 years, I have often told my students: Math is the language of engineering. I no longer say this! I now tell them, As an engineer you have to be bilingual, understanding both mathematics and algorithmic problem solving. Engineers must understand various aspects of programming and computer science.
173 Engineering in the 21st Century 33/61 As a university professor for 25 years, I have often told my students: Math is the language of engineering. I no longer say this! I now tell them, As an engineer you have to be bilingual, understanding both mathematics and algorithmic problem solving. Engineers must understand various aspects of programming and computer science. It has often been said that a person does not really understand something until after teaching it to someone else.
174 Engineering in the 21st Century 33/61 As a university professor for 25 years, I have often told my students: Math is the language of engineering. I no longer say this! I now tell them, As an engineer you have to be bilingual, understanding both mathematics and algorithmic problem solving. Engineers must understand various aspects of programming and computer science. It has often been said that a person does not really understand something until after teaching it to someone else. Actually a person does not really understand something until after teaching it to a computer, i.e., expressing it as an algorithm. Donald E. Knuth
175 chipkit: Using It! 34/61 Project 1: Installing and running MPIDE. Installing a sketch on a chipkit board. Project 2: Blink an internal LED. Digital systems. Basic C/C++ syntax. Structure of a sketch. Project 3: Blink an external LED. Basic electric principles. Breadboards. Project 4: Button-controlled LEDs. Pull-up and pull-down resistors. Obtaining input. Logical operations. Project 5: A Trainable Blinking LED. Nonblocking delay. Button bounce. Project 6: The Serial Monitor. Serial communication. Debouncing. Project 7: Introduction to logic (controlling multiple LEDs). Truth tables. Project 8: Analog Output (a breathing LED). Pulse width modulation (PWM). Analog to digital conversion.
176 P4: Button-Controlled LED Circuit 35/ A A B B C C D D E E F F G G H H I I J J
177 P4: Button-Controlled LED 36/61 Next, add a button such that when it is pressed, a HIGH voltage (3.3 V) is present at one of the pins and when it is not pressed, a LOW voltage (0 V) is present.
178 P4: Button-Controlled LED 36/61 Next, add a button such that when it is pressed, a HIGH voltage (3.3 V) is present at one of the pins and when it is not pressed, a LOW voltage (0 V) is present. We can use the function digitalread() to determine the voltage present at the pin and then make a decision in our sketch whether or not to turn on the LED.
179 P4: Button-Controlled LED 36/61 Next, add a button such that when it is pressed, a HIGH voltage (3.3 V) is present at one of the pins and when it is not pressed, a LOW voltage (0 V) is present. We can use the function digitalread() to determine the voltage present at the pin and then make a decision in our sketch whether or not to turn on the LED. Create simple light switch.
180 P4: Button-Controlled LED 36/61 Next, add a button such that when it is pressed, a HIGH voltage (3.3 V) is present at one of the pins and when it is not pressed, a LOW voltage (0 V) is present. We can use the function digitalread() to determine the voltage present at the pin and then make a decision in our sketch whether or not to turn on the LED. Create simple light switch. To accomplish this, we need to understand logical constructs, relational operators, and the use of pull-down resistors (which we won t delve into here).
181 P4: Button-Controlled LED 36/61 Next, add a button such that when it is pressed, a HIGH voltage (3.3 V) is present at one of the pins and when it is not pressed, a LOW voltage (0 V) is present. We can use the function digitalread() to determine the voltage present at the pin and then make a decision in our sketch whether or not to turn on the LED. Create simple light switch. To accomplish this, we need to understand logical constructs, relational operators, and the use of pull-down resistors (which we won t delve into here). The previous slide provides the circuit layout and the following slides the associated sketch.
182 P4: Button-Controlled LED 36/61 Next, add a button such that when it is pressed, a HIGH voltage (3.3 V) is present at one of the pins and when it is not pressed, a LOW voltage (0 V) is present. We can use the function digitalread() to determine the voltage present at the pin and then make a decision in our sketch whether or not to turn on the LED. Create simple light switch. To accomplish this, we need to understand logical constructs, relational operators, and the use of pull-down resistors (which we won t delve into here). The previous slide provides the circuit layout and the following slides the associated sketch. Here pin 12 controls the LED and pin 7 detects the voltage from the button. Pull-down resistor of 10 kω: brown, black, orange (and gold).
183 P4: Button with Pull-Down Resistor 37/61 Button and resistor are in series between 3.3 V and 0 V. chipkit pin is attached to point between between button and resistor.
184 P4: Button with Pull-Down Resistor 37/61 Button and resistor are in series between 3.3 V and 0 V. chipkit pin is attached to point between between button and resistor.
185 P4: Button with Pull-Down Resistor 37/61 Button and resistor are in series between 3.3 V and 0 V. chipkit pin is attached to point between between button and resistor. When button not pushed, pin is LOW.
186 P4: Button with Pull-Down Resistor 37/61 Button and resistor are in series between 3.3 V and 0 V. chipkit pin is attached to point between between button and resistor. When button not pushed, pin is LOW.
187 P4: Button with Pull-Down Resistor 37/61 Button and resistor are in series between 3.3 V and 0 V. chipkit pin is attached to point between between button and resistor. When button not pushed, pin is LOW. When pushed, pin is HIGH.
188 P4: Button-Controlled LED 38/61 Sketch uses variables to provide meaningful labels for the pins. 1 const int leda = 12; // LED pin used for output. 2 const int btna = 7; // Button pin used for input. 3 4 void setup() { 5 pinmode(leda, OUTPUT); // Set the LED pin to OUTPUT. 6 pinmode(btna, INPUT); // Set the button pin to INPUT. 7 } 8 9 void loop() { 10 // Read and determine button A state. 11 if (digitalread(btna) == HIGH){ 12 digitalwrite(leda, HIGH); 13 } 14 else { 15 digitalwrite(leda, LOW); 16 } 17 }
189 P4: Button-Controlled LED Circuit 39/ A A B B C C D D E E F F G G H H I I J J
190 Simulating vs. Doing 40/61 Something every child has said to a parent:
191 Simulating vs. Doing 40/61 Something every child has said to a parent: Look at what I made!
192 Simulating vs. Doing 40/61 Something every child has said to a parent: Look at what I made! Something almost no child has said to a parent:
193 Simulating vs. Doing 40/61 Something every child has said to a parent: Look at what I made! Something almost no child has said to a parent: Look at what I simulated.
194 Simulating vs. Doing 40/61 Something every child has said to a parent: Look at what I made! Something almost no child has said to a parent: Look at what I simulated. Building things is inherently more satisfying (engaging!) than simulating things.
195 Simulating vs. Doing 40/61 Something every child has said to a parent: Look at what I made! Something almost no child has said to a parent: Look at what I simulated. Building things is inherently more satisfying (engaging!) than simulating things. The following is definitely true: In theory there is no difference between theory and practice, but in practice there is! Attributed to several people
196 Simulating vs. Doing 40/61 Something every child has said to a parent: Look at what I made! Something almost no child has said to a parent: Look at what I simulated. Building things is inherently more satisfying (engaging!) than simulating things. The following is definitely true: In theory there is no difference between theory and practice, but in practice there is! Attributed to several people Building actual working physical systems enhances, reinforces, and extends the learning that is possible via simulation.
197 chipkit: Using It! 41/61 Project 1: Installing and running MPIDE. Installing a sketch on a chipkit board. Project 2: Blink an internal LED. Digital systems. Basic C/C++ syntax. Structure of a sketch. Project 3: Blink an external LED. Basic electric principles. Breadboards. Project 4: Button-controlled LEDs. Pull-up and pull-down resistors. Obtaining input. Logical operations. Project 5: A Trainable Blinking LED. Nonblocking delay. Button bounce. Project 6: The Serial Monitor. Serial communication. Debouncing. Project 7: Introduction to logic (controlling multiple LEDs). Truth tables. Project 8: Analog Output (a breathing LED). Pulse width modulation (PWM). Analog to digital conversion.
198 P5: Trainable Blinking LED 42/61
199 P5: Trainable Blinking LED 42/61 Use same circuit as before.
200 P5: Trainable Blinking LED 42/61 Use same circuit as before. Blink the LED.
201 P5: Trainable Blinking LED 42/61 Use same circuit as before. Blink the LED. On and off time is determined by a button push: duration the user pushes button dictates on and off time.
202 P5: Trainable Blinking LED 42/61 Use same circuit as before. Blink the LED. On and off time is determined by a button push: duration the user pushes button dictates on and off time. Must use a non-blocking delay to accomplish this!
203 P5: Trainable Blinking LED 42/61 Use same circuit as before. Blink the LED. On and off time is determined by a button push: duration the user pushes button dictates on and off time. Must use a non-blocking delay to accomplish this! Useful function: millis() which returns number of milliseconds since sketch started to execute.
204 P5: Trainable Blinking LED 42/61 Use same circuit as before. Blink the LED. On and off time is determined by a button push: duration the user pushes button dictates on and off time. Must use a non-blocking delay to accomplish this! Useful function: millis() which returns number of milliseconds since sketch started to execute. Useful programming construct: while(/* Conditional. */) {/* Statements. */} This repeatedly executes the code within braces (if any) while conditional within parentheses is true.
205 P5: Trainable Blinking LED 42/61 Use same circuit as before. Blink the LED. On and off time is determined by a button push: duration the user pushes button dictates on and off time. Must use a non-blocking delay to accomplish this! Useful function: millis() which returns number of milliseconds since sketch started to execute. Useful programming construct: while(/* Conditional. */) {/* Statements. */} This repeatedly executes the code within braces (if any) while conditional within parentheses is true. One way to do nothing while the button is pressed: while (digitalread(buttonpin) == HIGH) {}
206 P5: Trainable Blinking LED, Part 1/3 43/61 Sketch to create a trainable blinking LED. 1 int ledpin = 12; // Label Pin 12 ledpin. 2 int buttonpin = 7; // Label Pin 7 buttonpin. 3 4 // Initialize delay and start time. 5 int msdelay = 500; // 500 ms delay = 0.5 seconds. 6 unsigned int starttime = 0; // Time of last LED change. 7 int ledstate = LOW; 8 9 void setup() { 10 pinmode(buttonpin, INPUT); // Set buttonpin for input. 11 pinmode(ledpin, OUTPUT); // Set ledpin for output. 12 }
207 P5: Trainable Blinking LED, Part 2/3 44/61 1 void loop() { 2 starttime = millis(); // Time at start of loop. 3 // If the button is pressed "record" amount of delay. 4 if (digitalread(buttonpin) == HIGH) { 5 digitalwrite(ledpin, HIGH); // Turn on LED. 6 while (digitalread(buttonpin) == HIGH) {} 7 msdelay = (millis() - starttime); 8 9 } else { 10 // If button not pressed, blink the LED without blocking
208 P5: Trainable Blinking LED, Part 3/3 45/61 1 // If button not pressed, blink the LED without blocking. 2 while (digitalread(buttonpin) == LOW) { 3 if ((millis() - starttime) > msdelay) { 4 starttime = millis(); 5 if (ledstate == LOW) { 6 ledstate = HIGH; 7 } else { 8 ledstate = LOW; 9 } 10 // Set LED in accordance with ledstate variable. 11 digitalwrite(ledpin, ledstate); 12 } 13 } 14 } 15 }
209 P5: Trainable Blinking LED 46/61 Wonderful thing about the trainable blinking LED:
210 P5: Trainable Blinking LED 46/61 Wonderful thing about the trainable blinking LED: Sometimes it doesn t work!
211 P5: Trainable Blinking LED 46/61 Wonderful thing about the trainable blinking LED: Sometimes it doesn t work! Sometimes when the user releases the button the LED glows continuously with a dim glow.
212 P5: Trainable Blinking LED 46/61 Wonderful thing about the trainable blinking LED: Sometimes it doesn t work! Sometimes when the user releases the button the LED glows continuously with a dim glow. Why???
213 P5: Trainable Blinking LED 46/61 Wonderful thing about the trainable blinking LED: Sometimes it doesn t work! Sometimes when the user releases the button the LED glows continuously with a dim glow. Why??? Button bounce.
214 P5: Trainable Blinking LED 46/61 Wonderful thing about the trainable blinking LED: Sometimes it doesn t work! Sometimes when the user releases the button the LED glows continuously with a dim glow. Why??? Button bounce. Voltage transition is not necessarily a smooth thing.
215 P5: Trainable Blinking LED 46/61 Wonderful thing about the trainable blinking LED: Sometimes it doesn t work! Sometimes when the user releases the button the LED glows continuously with a dim glow. Why??? Button bounce. Voltage transition is not necessarily a smooth thing. Great opportunity to explore need to address real world issues that are often abstracted away in the classroom.
216 chipkit: Using It! 47/61 Project 1: Installing and running MPIDE. Installing a sketch on a chipkit board. Project 2: Blink an internal LED. Digital systems. Basic C/C++ syntax. Structure of a sketch. Project 3: Blink an external LED. Basic electric principles. Breadboards. Project 4: Button-controlled LEDs. Pull-up and pull-down resistors. Obtaining input. Logical operations. Project 5: A Trainable Blinking LED. Nonblocking delay. Button bounce. Project 6: The Serial Monitor. Serial communication. Debouncing. Project 7: Introduction to logic (controlling multiple LEDs). Truth tables. Project 8: Analog Output (a breathing LED). Pulse width modulation (PWM). Analog to digital conversion.
217 P6: Serial Monitor 48/61 Debugging sketches using MPIDE can be challenging!
218 P6: Serial Monitor 48/61 Debugging sketches using MPIDE can be challenging! Often helpful to display information on the computer that is communicated using the Serial Monitor.
219 P6: Serial Monitor 48/61 Debugging sketches using MPIDE can be challenging! Often helpful to display information on the computer that is communicated using the Serial Monitor. Once a sketch has started running, click on window. to open the Serial Monitor
220 P6: Serial Monitor 48/61 Debugging sketches using MPIDE can be challenging! Often helpful to display information on the computer that is communicated using the Serial Monitor. Once a sketch has started running, click on to open the Serial Monitor window. A window should open similar to the following:
221 P6: Serial Monitor 49/61 Must initialize the serial connection in the setup() function, e.g, make the following call in setup(): Serial.begin(9600)}
222 P6: Serial Monitor 49/61 Must initialize the serial connection in the setup() function, e.g, make the following call in setup(): Serial.begin(9600)} Note that Serial is a global object that has already been created for you.
223 P6: Serial Monitor 49/61 Must initialize the serial connection in the setup() function, e.g, make the following call in setup(): Serial.begin(9600)} Note that Serial is a global object that has already been created for you. Generate output using class functions Serial.print() (produces no line terminator)
224 P6: Serial Monitor 49/61 Must initialize the serial connection in the setup() function, e.g, make the following call in setup(): Serial.begin(9600)} Note that Serial is a global object that has already been created for you. Generate output using class functions Serial.print() (produces no line terminator) or Serial.println() (produces newline terminator).
225 P6: Serial Monitor 49/61 Must initialize the serial connection in the setup() function, e.g, make the following call in setup(): Serial.begin(9600)} Note that Serial is a global object that has already been created for you. Generate output using class functions Serial.print() (produces no line terminator) or Serial.println() (produces newline terminator). Be sure to see what the Help reference manual has to say about these!
226 P6: Serial Monitor 50/61 Simple example: display an integer count starting from 1 with a half second delay between increments.
227 P6: Serial Monitor 50/61 Simple example: display an integer count starting from 1 with a half second delay between increments. 1 int count = 0; 2 3 void setup() 4 { 5 Serial.begin(9600); 6 } 7 8 void loop() { 9 count = count + 1; 10 Serial.print(count); 11 Serial.print(" "); 12 delay(500); 13 }
228 chipkit: Using It! 51/61 Project 1: Installing and running MPIDE. Installing a sketch on a chipkit board. Project 2: Blink an internal LED. Digital systems. Basic C/C++ syntax. Structure of a sketch. Project 3: Blink an external LED. Basic electric principles. Breadboards. Project 4: Button-controlled LEDs. Pull-up and pull-down resistors. Obtaining input. Logical operations. Project 5: A Trainable Blinking LED. Nonblocking delay. Button bounce. Project 6: The Serial Monitor. Serial communication. Debouncing. Project 7: Introduction to logic (controlling multiple LEDs). Truth tables. Project 8: Analog Output (a breathing LED). Pulse width modulation (PWM). Analog to digital conversion.
229 P7: Logic (Circuit) 52/ A A B B C C D D E E F F G G H H I I J J
PDF of this portion of workshop notes:
PDF of this portion of workshop notes: http://goo.gl/jfpeym Teaching Engineering Design with Student-Owned Digital and Analog Lab Equipment John B. Schneider Washington State University June 15, 2015 Overview
More informationPDF of these workshop notes:
PDF of these workshop notes: http://goo.gl/qwkwdn Enhancing First Year Engineering Education through Student-Owned Design Kits John B. Schneider jschneider@digilentinc.com August 9, 2013 Outline 3/43 Who/what
More informationDigital Pins and Constants
Lesson Lesson : Digital Pins and Constants Digital Pins and Constants The Big Idea: This lesson is the first step toward learning to connect the Arduino to its surrounding world. You will connect lights
More informationProcedure: Determine the polarity of the LED. Use the following image to help:
Section 2: Lab Activity Section 2.1 Getting started: LED Blink Purpose: To understand how to upload a program to the Arduino and to understand the function of each line of code in a simple program. This
More informationNote. The above image and many others are courtesy of - this is a wonderful resource for designing circuits.
Robotics and Electronics Unit 2. Arduino Objectives. Students will understand the basic characteristics of an Arduino Uno microcontroller. understand the basic structure of an Arduino program. know how
More informationLab 01 Arduino 程式設計實驗. Essential Arduino Programming and Digital Signal Process
Lab 01 Arduino 程式設計實驗 Essential Arduino Programming and Digital Signal Process Arduino Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's
More informationUniversity of Portland EE 271 Electrical Circuits Laboratory. Experiment: Arduino
University of Portland EE 271 Electrical Circuits Laboratory Experiment: Arduino I. Objective The objective of this experiment is to learn how to use the Arduino microcontroller to monitor switches and
More informationIME-100 ECE. Lab 3. Electrical and Computer Engineering Department Kettering University. G. Tewolde, IME100-ECE,
IME-100 ECE Lab 3 Electrical and Computer Engineering Department Kettering University 3-1 1. Laboratory Computers Getting Started i. Log-in with User Name: Kettering Student (no password required) ii.
More informationIntroduction to Arduino
Introduction to Arduino Paco Abad May 20 th, 2011 WGM #21 Outline What is Arduino? Where to start Types Shields Alternatives Know your board Installing and using the IDE Digital output Serial communication
More informationStenBOT Robot Kit. Stensat Group LLC, Copyright 2018
StenBOT Robot Kit 1 Stensat Group LLC, Copyright 2018 Legal Stuff Stensat Group LLC assumes no responsibility and/or liability for the use of the kit and documentation. There is a 90 day warranty for the
More informationAdapted from a lab originally written by Simon Hastings and Bill Ashmanskas
Physics 364 Arduino Lab 1 Adapted from a lab originally written by Simon Hastings and Bill Ashmanskas Vithayathil/Kroll Introduction Last revised: 2014-11-12 This lab introduces you to an electronic development
More informationPrototyping & Engineering Electronics Kits Basic Kit Guide
Prototyping & Engineering Electronics Kits Basic Kit Guide odysseyboard.com Please refer to www.odysseyboard.com for a PDF updated version of this guide. Guide version 1.0, February, 2018. Copyright Odyssey
More informationArduino 101 AN INTRODUCTION TO ARDUINO BY WOMEN IN ENGINEERING FT T I NA A ND AW E S O ME ME NTO R S
Arduino 101 AN INTRODUCTION TO ARDUINO BY WOMEN IN ENGINEERING FT T I NA A ND AW E S O ME ME NTO R S Overview Motivation Circuit Design and Arduino Architecture Projects Blink the LED Switch Night Lamp
More informationAlessandra de Vitis. Arduino
Alessandra de Vitis Arduino Arduino types Alessandra de Vitis 2 Interfacing Interfacing represents the link between devices that operate with different physical quantities. Interface board or simply or
More informationThursday, September 15, electronic components
electronic components a desktop computer relatively complex inside: screen (CRT) disk drive backup battery power supply connectors for: keyboard printer n more! Thursday, September 15, 2011 integrated
More informationSerial.begin ( ); Serial.println( ); analogread ( ); map ( );
Control and Serial.begin ( ); Serial.println( ); analogread ( ); map ( ); A system output can be changed through the use of knobs, motion, or environmental conditions. Many electronic systems in our world
More informationBlinking an LED 1 PARTS: Circuit 2 LED. Wire. 330Ω Resistor
Circuit PIN 3 RedBoard Blinking an LED LED (Light-Emitting Diode) Resistor (33 ohm) (Orange-Orange-Brown) LEDs (light-emitting diodes) are small, powerful lights that are used in many different applications.
More informationLesson 8: Digital Input, If Else
Lesson 8 Lesson 8: Digital Input, If Else Digital Input, If Else The Big Idea: This lesson adds the ability of an Arduino sketch to respond to its environment, taking different actions for different situations.
More informationIME-100 Interdisciplinary Design and Manufacturing
IME-100 Interdisciplinary Design and Manufacturing Introduction Arduino and Programming Topics: 1. Introduction to Microprocessors/Microcontrollers 2. Introduction to Arduino 3. Arduino Programming Basics
More informationAdvanced Activities - Information and Ideas
Advanced Activities - Information and Ideas Congratulations! You successfully created and controlled the robotic chameleon using the program developed for the chameleon project. Here you'll learn how you
More informationRobotics Adventure Book Scouter manual STEM 1
Robotics Robotics Adventure Book Scouter Manual Robotics Adventure Book Scouter manual STEM 1 A word with our Scouters: This activity is designed around a space exploration theme. Your Scouts will learn
More informationHalloween Pumpkinusing. Wednesday, October 17, 12
Halloween Pumpkinusing Blink LED 1 What you will need: 1 MSP-EXP430G2 1 3 x 2 Breadboard 3 560 Ohm Resistors 3 LED s (in Red Color Range) 3 Male to female jumper wires 1 Double AA BatteryPack 2 AA Batteries
More informationArduino Programming. Arduino UNO & Innoesys Educational Shield
Arduino Programming Arduino UNO & Innoesys Educational Shield www.devobox.com Electronic Components & Prototyping Tools 79 Leandrou, 10443, Athens +30 210 51 55 513, info@devobox.com ARDUINO UNO... 3 INNOESYS
More informationROBOTLINKING THE POWER SUPPLY LEARNING KIT TUTORIAL
ROBOTLINKING THE POWER SUPPLY LEARNING KIT TUTORIAL 1 Preface About RobotLinking RobotLinking is a technology company focused on 3D Printer, Raspberry Pi and Arduino open source community development.
More informationArduino Prof. Dr. Magdy M. Abdelhameed
Course Code: MDP 454, Course Name:, Second Semester 2014 Arduino What is Arduino? Microcontroller Platform Okay but what s a Microcontroller? Tiny, self-contained computers in an IC Often contain peripherals
More informationECGR 4101/5101, Fall 2016: Lab 1 First Embedded Systems Project Learning Objectives:
ECGR 4101/5101, Fall 2016: Lab 1 First Embedded Systems Project Learning Objectives: This lab will introduce basic embedded systems programming concepts by familiarizing the user with an embedded programming
More informationHow to Use an Arduino
How to Use an Arduino By Vivian Law Introduction The first microcontroller, TMS-1802-NC, was built in 1971 by Texas Instruments. It owed its existence to the innovation and versatility of silicon and the
More informationLaboratory of Sensors Engineering Sciences 9 CFU
Laboratory of Sensors Engineering Sciences 9 CFU Contacts Alexandro Catini catini@ing.uniroma2.it Phone: +39 06 7259 7347 Department of Electronic Engineering First Floor - Room B1-07b Course Outline THEORY
More informationArduino 05: Digital I/O. Jeffrey A. Meunier University of Connecticut
Arduino 05: Digital I/O Jeffrey A. Meunier jeffm@engr.uconn.edu University of Connecticut About: How to use this document I designed this tutorial to be tall and narrow so that you can read it on one side
More informationCoding Workshop. Learning to Program with an Arduino. Lecture Notes. Programming Introduction Values Assignment Arithmetic.
Coding Workshop Learning to Program with an Arduino Lecture Notes Table of Contents Programming ntroduction Values Assignment Arithmetic Control Tests f Blocks For Blocks Functions Arduino Main Functions
More informationIntroduction To Arduino
Introduction To Arduino What is Arduino? Hardware Boards / microcontrollers Shields Software Arduino IDE Simplified C Community Tutorials Forums Sample projects Arduino Uno Power: 5v (7-12v input) Digital
More informationRobotics and Electronics Unit 5
Robotics and Electronics Unit 5 Objectives. Students will work with mechanical push buttons understand the shortcomings of the delay function and how to use the millis function. In this unit we will use
More informationPhysics 364, Fall 2012, Lab #9 (Introduction to microprocessor programming with the Arduino) Lab for Monday, November 5
Physics 364, Fall 2012, Lab #9 (Introduction to microprocessor programming with the Arduino) Lab for Monday, November 5 Up until this point we have been working with discrete digital components. Every
More informationRedBoard Hookup Guide
Page 1 of 11 RedBoard Hookup Guide CONTRIBUTORS: JIMB0 Introduction The Redboard is an Arduino-compatible development platform that enables quick-and-easy project prototyping. It can interact with real-world
More informationSten-SLATE ESP Kit. Description and Programming
Sten-SLATE ESP Kit Description and Programming Stensat Group LLC, Copyright 2016 Overview In this section, you will be introduced to the processor board electronics and the arduino software. At the end
More informationGoal: We want to build an autonomous vehicle (robot)
Goal: We want to build an autonomous vehicle (robot) This means it will have to think for itself, its going to need a brain Our robot s brain will be a tiny computer called a microcontroller Specifically
More informationLab 2.2 Ohm s Law and Introduction to Arduinos
Lab 2.2 Ohm s Law and Introduction to Arduinos Objectives: Get experience using an Arduino Learn to use a multimeter to measure Potential units of volts (V) Current units of amps (A) Resistance units of
More informationCounter & LED (LED Blink)
1 T.R.E. Meeting #1 Counter & LED (LED Blink) September 17, 2017 Contact Info for Today s Lesson: President Ryan Muller mullerr@vt.edu 610-573-1890 Learning Objectives: Learn how to use the basics of Arduino
More informationIME-100 ECE. Lab 4. Electrical and Computer Engineering Department Kettering University. G. Tewolde, IME100-ECE,
IME-100 ECE Lab 4 Electrical and Computer Engineering Department Kettering University 4-1 1. Laboratory Computers Getting Started i. Log-in with User Name: Kettering Student (no password required) ii.
More informationARDUINO INDUSTRIAL 1 01 Code: A000126
ARDUINO INDUSTRIAL 1 01 Code: A000126 The Industrial 101 is a small form-factor YUN designed for product integration. OVERVIEW: Arduino Industrial 101 is an Evaluation board for Arduino 101 LGA module.
More informationFinite State Machine Lab
Finite State Machine Module: Lab Procedures Goal: The goal of this experiment is to reinforce state machine concepts by having students design and implement a state machine using simple chips and a protoboard.
More informationSpecification. 1.Power Supply direct from Microcontroller Board. 2.The circuit can be used with Microcontroller Board such as Arduino UNO R3.
Part Number : Product Name : FK-FA1410 12-LED AND 3-BOTTON SHIELD This is the experimental board for receiving and transmitting data from the port of microcontroller. The function of FK-FA1401 is fundamental
More informationArduino Micro Breadboard Laboratory Interface Processor (Micro BLIP) User Manual
Arduino Micro Breadboard Laboratory Interface Processor (Micro BLIP) MicroBLIP circuit board v2.0 Operating System v2.0.0 1/22/2019 User Manual 2 1 Setup and Operation 1.1 Introduction For the past ten
More informationkeyestudio Keyestudio MEGA 2560 R3 Board
Keyestudio MEGA 2560 R3 Board Introduction: Keyestudio Mega 2560 R3 is a microcontroller board based on the ATMEGA2560-16AU, fully compatible with ARDUINO MEGA 2560 REV3. It has 54 digital input/output
More informationFall Harris & Harris
E11: Autonomous Vehicles Fall 2011 Harris & Harris PS 1: Welcome to Arduino This is the first of five programming problem sets. In this assignment you will learn to program the Arduino board that you recently
More informationUSER MANUAL ARDUINO I/O EXPANSION SHIELD
USER MANUAL ARDUINO I/O EXPANSION SHIELD Description: Sometimes Arduino Uno users run short of pins because there s a lot of projects that requires more than 20 signal pins. The only option they are left
More informationLab-3: LCDs Serial Communication Analog Inputs Temperature Measurement System
Mechatronics Engineering and Automation Faculty of Engineering, Ain Shams University MCT-151, Spring 2015 Lab-3: LCDs Serial Communication Analog Inputs Temperature Measurement System Ahmed Okasha okasha1st@gmail.com
More informationARDUINO YÚN Code: A000008
ARDUINO YÚN Code: A000008 Arduino YÚN is the perfect board to use when designing connected devices and, more in general, Internet of Things projects. It combines the power of Linux with the ease of use
More informationLab 2 - Powering the Fubarino. Fubarino,, Intro to Serial, Functions and Variables
Lab 2 - Powering the Fubarino Fubarino,, Intro to Serial, Functions and Variables Part 1 - Powering the Fubarino SD The Fubarino SD is a 56 pin device. Each pin on a chipkit device falls broadly into one
More informationDigital Design through. Arduino
Digital Design through 1 Arduino G V V Sharma Contents 1 Display Control through Hardware 2 1.1 Powering the Display.................................. 2 1.2 Controlling the Display.................................
More informationEK307 Lab: Microcontrollers
EK307 Lab: Microcontrollers Laboratory Goal: Program a microcontroller to perform a variety of digital tasks. Learning Objectives: Learn how to program and use the Atmega 323 microcontroller Suggested
More informationArdOS The Arduino Operating System Quick Start Guide and Examples
ArdOS The Arduino Operating System Quick Start Guide and Examples Contents 1. Introduction... 1 2. Obtaining ArdOS... 2 3. Installing ArdOS... 2 a. Arduino IDE Versions 1.0.4 and Prior... 2 b. Arduino
More information3. The circuit is composed of 1 set of Relay circuit.
Part Number : Product Name : FK-FA1420 ONE CHANNEL 12V RELAY MODULE This is the experimental module for a relay controller as the fundamental controlling programming. It is adaptable or is able to upgrade
More informationSPDM Level 2 Smart Electronics Unit, Level 2
SPDM Level 2 Smart Electronics Unit, Level 2 Evidence Folder John Johns Form 3b RSA Tipton 1.1 describe the purpose of circuit components and symbols. The candidate can describe the purpose of a range
More informationOBSTACLE AVOIDANCE ROBOT
e-issn 2455 1392 Volume 3 Issue 4, April 2017 pp. 85 89 Scientific Journal Impact Factor : 3.468 http://www.ijcter.com OBSTACLE AVOIDANCE ROBOT Sanjay Jaiswal 1, Saurabh Kumar Singh 2, Rahul Kumar 3 1,2,3
More informationArduino 07 ARDUINO WORKSHOP 2007
ARDUINO WORKSHOP 2007 PRESENTATION WHO ARE WE? Markus Appelbäck Interaction Design program at Malmö University Mobile networks and services Mecatronics lab at K3, Malmö University Developer, Arduino community
More informationCode&Drive First steps
Code&Drive First steps Now that you have built the Code & Drive, you can set the Build&Code 4in1 board using any of the following software: Arduino IDE, Bitbloq or a visual programming software by blocks
More informationPhysical Computing Self-Quiz
Physical Computing Self-Quiz The following are questions you should be able to answer without reference to outside material by the middle of the semester in Introduction to Physical Computing. Try to answer
More informationUpdate: Ver 1.3 Dec Arduino Learning Guide For Beginner Using. Created by Cytron Technologies Sdn Bhd - All Rights Reserved
Update: Ver 1.3 Dec 2018 Arduino Learning Guide For Beginner Using Created by Cytron Technologies Sdn Bhd - All Rights Reserved LESSON 0 SETTING UP HARDWARE & SOFTWARE Part 1: Put Up Label Stickers for
More informationLaboratory 1 Introduction to the Arduino boards
Laboratory 1 Introduction to the Arduino boards The set of Arduino development tools include µc (microcontroller) boards, accessories (peripheral modules, components etc.) and open source software tools
More informationArduino and Matlab for prototyping and manufacturing
Arduino and Matlab for prototyping and manufacturing Enrique Chacón Tanarro 11th - 15th December 2017 UBORA First Design School - Nairobi Enrique Chacón Tanarro e.chacon@upm.es Index 1. Arduino 2. Arduino
More informationLecture 6: Embedded Systems and Microcontrollers
Lecture 6: Embedded Systems and Microcontrollers Bo Wang Division of Information & Computing Technology Hamad Bin Khalifa University bwang@hbku.edu.qa 1 What is Embedded System? Embedded System = Computers
More informationArduino Programming and Interfacing
Arduino Programming and Interfacing Stensat Group LLC, Copyright 2017 1 Robotic Arm Experimenters Kit 2 Legal Stuff Stensat Group LLC assumes no responsibility and/or liability for the use of the kit and
More informationAbout SunFounder Preface SunFounder is a technology company focused on Raspberry Pi and Arduino open source community development. Committed to the pr
About r Preface r is a technology company focused on Raspberry Pi and Arduino open source community development. Committed to the promotion of open source culture, we strive to bring the fun of electronics
More informationEXPERIMENT 7 Please visit https://www.arduino.cc/en/reference/homepage to learn all features of arduino before you start the experiments
EXPERIMENT 7 Please visit https://www.arduino.cc/en/reference/homepage to learn all features of arduino before you start the experiments TEMPERATURE MEASUREMENT AND CONTROL USING LM35 Purpose: To measure
More informationArduino - DigitalReadSerial
arduino.cc Arduino - DigitalReadSerial 5-6 minutes Digital Read Serial This example shows you how to monitor the state of a switch by establishing serial communication between your Arduino or Genuino and
More information1/Build a Mintronics: MintDuino
1/Build a Mintronics: The is perfect for anyone interested in learning (or teaching) the fundamentals of how micro controllers work. It will have you building your own micro controller from scratch on
More informationMAE106 Laboratory Exercises Lab # 1 - Laboratory tools
MAE106 Laboratory Exercises Lab # 1 - Laboratory tools University of California, Irvine Department of Mechanical and Aerospace Engineering Goals To learn how to use the oscilloscope, function generator,
More information3.The circuit board is composed of 4 sets which are 16x2 LCD Shield, 3 pieces of Switch, 2
Part Number : Product Name : FK-FA1416 MULTI-FUNCTION 16x2 LCD SHIELD This is the experimental board of Multi-Function 16x2 LCD Shield as the fundamental programming about the digits, alphabets and symbols.
More informationENGR 40M Project 3c: Switch debouncing
ENGR 40M Project 3c: Switch debouncing For due dates, see the overview handout 1 Introduction This week, you will build on the previous two labs and program the Arduino to respond to an input from the
More informationTANGIBLE MEDIA & PHYSICAL COMPUTING INTRODUCTION TO ARDUINO
TANGIBLE MEDIA & PHYSICAL COMPUTING INTRODUCTION TO ARDUINO AGENDA ARDUINO HARDWARE THE IDE & SETUP BASIC PROGRAMMING CONCEPTS DEBUGGING & HELLO WORLD INPUTS AND OUTPUTS DEMOS ARDUINO HISTORY IN 2003 HERNANDO
More informationUpdate: Ver 1.3 Dec Arduino Learning Guide For Beginner Using. Created by Cytron Technologies Sdn Bhd - All Rights Reserved
Update: Ver 1.3 Dec 2018 Arduino Learning Guide For Beginner Using Created by Cytron Technologies Sdn Bhd - All Rights Reserved LESSON 0 SETTING UP HARDWARE & SOFTWARE Part 1: Put Up Label Stickers for
More informationUniversity of Hull Department of Computer Science C4DI Interfacing with Arduinos
Introduction Welcome to our Arduino hardware sessions. University of Hull Department of Computer Science C4DI Interfacing with Arduinos Vsn. 1.0 Rob Miles 2014 Please follow the instructions carefully.
More informationSchedule. Sanford Bernhardt, Sangster, Kumfer, Michalaka. 3:10-5:00 Workshop: Build a speedometer 5:15-7:30 Dinner and Symposium: Group 2
Schedule 8:00-11:00 Workshop: Arduino Fundamentals 11:00-12:00 Workshop: Build a follower robot 1:30-3:00 Symposium: Group 1 Sanford Bernhardt, Sangster, Kumfer, Michalaka 3:10-5:00 Workshop: Build a speedometer
More informationCSCI 1100L: Topics in Computing Lab Lab 11: Programming with Scratch
CSCI 1100L: Topics in Computing Lab Lab 11: Programming with Scratch Purpose: We will take a look at programming this week using a language called Scratch. Scratch is a programming language that was developed
More informationanalogwrite(); The analogwrite function writes an analog value (PWM wave) to a PWM-enabled pin.
analogwrite(); The analogwrite function writes an analog value (PWM wave) to a PWM-enabled pin. Syntax analogwrite(pin, value); For example: analogwrite(2, 255); or analogwrite(13, 0); Note: Capitalization
More informationIAS0430 MICROPROCESSOR SYSTEMS
IAS0430 MICROPROCESSOR SYSTEMS Fall 2018 Arduino and assembly language Martin Jaanus U02-308 martin.jaanus@ttu.ee 620 2110, 56 91 31 93 Learning environment : http://isc.ttu.ee Materials : http://isc.ttu.ee/martin
More informationARDUINO LEONARDO ETH Code: A000022
ARDUINO LEONARDO ETH Code: A000022 All the fun of a Leonardo, plus an Ethernet port to extend your project to the IoT world. You can control sensors and actuators via the internet as a client or server.
More informationARDUINO YÚN MINI Code: A000108
ARDUINO YÚN MINI Code: A000108 The Arduino Yún Mini is a compact version of the Arduino YUN OVERVIEW: Arduino Yún Mini is a breadboard PCB developed with ATmega 32u4 MCU and QCA MIPS 24K SoC CPU operating
More informationARDUINO M0 PRO Code: A000111
ARDUINO M0 PRO Code: A000111 The Arduino M0 Pro is an Arduino M0 with a step by step debugger With the new Arduino M0 Pro board, the more creative individual will have the potential to create one s most
More informationArduino Internals. Dale Wheat. Apress
Arduino Internals Dale Wheat Apress Contents About the Authors About the Technical Reviewers Acknowledgments Preface xv xvi xvii xviii Chapter 1: Hardware 1 What Is an Arduino? 1 The Arduino Uno 2 Processor
More informationArduino ADK Rev.3 Board A000069
Arduino ADK Rev.3 Board A000069 Overview The Arduino ADK is a microcontroller board based on the ATmega2560 (datasheet). It has a USB host interface to connect with Android based phones, based on the MAX3421e
More informationEmbedded Systems and Kinetic Art. CS5968: Erik Brunvand School of Computing. FA3800: Paul Stout Department of Art and Art History.
Embedded Systems and Kinetic Art CS5968: Erik Brunvand School of Computing FA3800: Paul Stout Department of Art and Art History Logistics Class meets Wednesdays from 3:05-6:05 We ll start meeting in MEB
More informationLogistics. Embedded Systems. Kinetic Art. This Class. Embedded Systems and Kinetic Art. Kinetic Art
Embedded Systems and Kinetic Art CS5968: Erik Brunvand School of Computing FA3800: Paul Stout Department of Art and Art History Logistics Class meets Wednesdays from 3:05-6:05 We ll start meeting in MEB
More informationCARTOOINO Projects Book
1 CARTOOINO Projects Book Acknowledgement Acknowledgement This Cartooino Projects Book is a cartoon based adaptation of the Arduino Projects Book. The Cartooino Project Book was developed by the GreenLab
More informationCS12020 (Computer Graphics, Vision and Games) Worksheet 1
CS12020 (Computer Graphics, Vision and Games) Worksheet 1 Jim Finnis (jcf1@aber.ac.uk) 1 Getting to know your shield First, book out your shield. This might take a little time, so be patient. Make sure
More informationWorkshop on Microcontroller Based Project Development
Organized by: EEE Club Workshop on Microcontroller Based Project Development Presented By Mohammed Abdul Kader Assistant Professor, Dept. of EEE, IIUC Email:kader05cuet@gmail.com Website: kader05cuet.wordpress.com
More informationIntroduction to Arduino. Wilson Wingston Sharon
Introduction to Arduino Wilson Wingston Sharon cto@workshopindia.com Physical computing Developing solutions that implement a software to interact with elements in the physical universe. 1. Sensors convert
More informationIntroduction to Microcontrollers Using Arduino. PhilRobotics
Introduction to Microcontrollers Using Arduino PhilRobotics Objectives Know what is a microcontroller Learn the capabilities of a microcontroller Understand how microcontroller execute instructions Objectives
More informationArduino Uno. Arduino Uno R3 Front. Arduino Uno R2 Front
Arduino Uno Arduino Uno R3 Front Arduino Uno R2 Front Arduino Uno SMD Arduino Uno R3 Back Arduino Uno Front Arduino Uno Back Overview The Arduino Uno is a microcontroller board based on the ATmega328 (datasheet).
More informationThe Big Idea: Background:
Lesson 7 Lesson 7: For For Loops Loops The Big Idea: This lesson simplifies the control of digital pins by assigning the pin numbers to an integer variable and by calling the digitalwrite command multiple
More informationTA0297 WEMOS D1 R2 WIFI ARDUINO DEVELOPMENT BOARD ESP8266
TA0297 WEMOS D1 R2 WIFI ARDUINO DEVELOPMENT BOARD ESP8266 Contents 1. Overview TA0297... 3 2. Getting started:... 3 2.1. What is WeMos D1 R2 Wifi Arduino Development Board?... 3 2.2. What is IDUINO UNO?...
More informationIntro to Arduino. Zero to Prototyping in a Flash! Material designed by Linz Craig and Brian Huang
Intro to Arduino Zero to Prototyping in a Flash! Material designed by Linz Craig and Brian Huang Overview of Class Getting Started: Installation, Applications and Materials Electrical: Components, Ohm's
More informationREQUIRED MATERIALS Epiphany-DAQ board Wire Jumpers Switch LED Resistors Breadboard Multimeter (if needed)
Page 1/6 Lab 1: Intro to Microcontroller Development, 06-Jan-16 OBJECTIVES This lab will introduce you to the concept of developing with a microcontroller while focusing on the use of General Purpose Input/Output
More informationSmart Objects. SAPIENZA Università di Roma, M.Sc. in Product Design Fabio Patrizi
Smart Objects SAPIENZA Università di Roma, M.Sc. in Product Design Fabio Patrizi 1 What is a Smart Object? Essentially, an object that: Senses Thinks Acts 2 Example 1 https://www.youtube.com/watch?v=6bncjd8eke0
More informationMicrocontrollers for Ham Radio
Microcontrollers for Ham Radio MARTIN BUEHRING - KB4MG MAT T PESCH KK4NLK TOM PERRY KN4LSE What is a Microcontroller? A micro-controller is a small computer on a single integrated circuit containing a
More informationLayad Circuits Arduino Basic Kit B. Content Summary
Layad Circuits This kit is a careful selection of sensors, displays, modules, an Arduino Uno, connectors and other essential parts meant to facilitate learning of the hardware and software components of
More informationBASIC ARDUINO WORKSHOP. Mr. Aldwin and Mr. Bernardo
BASIC ARDUINO WORKSHOP Mr. Aldwin and Mr. Bernardo 1 BASIC ARDUINO WORKSHOP Course Goals Introduce Arduino Hardware and Understand Input Software and Output Create simple project 2 Arduino Open-source
More informationMegamark Processing 3.0 Setup Guide. Downloading and Installing Processing 3.0
Megamark Processing 3.0 Setup Guide Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. There are tens of thousands of students,
More informationIntroduction to Arduino
Introduction to Arduino Mobile Computing, aa. 2016/2017 May 12, 2017 Daniele Ronzani - Ph.D student in Computer Science dronzani@math.unipd.it What are Microcontrollers Very small and simple computers
More information