PDF of this portion of workshop notes:

Size: px
Start display at page:

Download "PDF of this portion of workshop notes:"

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: 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 information

PDF of these workshop notes:

PDF 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 information

Digital Pins and Constants

Digital 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 information

Procedure: Determine the polarity of the LED. Use the following image to help:

Procedure: 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 information

Note. The above image and many others are courtesy of - this is a wonderful resource for designing circuits.

Note. 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 information

Lab 01 Arduino 程式設計實驗. Essential Arduino Programming and Digital Signal Process

Lab 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 information

University of Portland EE 271 Electrical Circuits Laboratory. Experiment: Arduino

University 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 information

IME-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. 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 information

Introduction to Arduino

Introduction 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 information

StenBOT Robot Kit. Stensat Group LLC, Copyright 2018

StenBOT 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 information

Adapted from a lab originally written by Simon Hastings and Bill Ashmanskas

Adapted 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 information

Prototyping & Engineering Electronics Kits Basic Kit Guide

Prototyping & 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 information

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

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 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 information

Alessandra de Vitis. Arduino

Alessandra 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 information

Thursday, September 15, electronic components

Thursday, 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 information

Serial.begin ( ); Serial.println( ); analogread ( ); map ( );

Serial.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 information

Blinking an LED 1 PARTS: Circuit 2 LED. Wire. 330Ω Resistor

Blinking 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 information

Lesson 8: Digital Input, If Else

Lesson 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 information

IME-100 Interdisciplinary Design and Manufacturing

IME-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 information

Advanced Activities - Information and Ideas

Advanced 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 information

Robotics Adventure Book Scouter manual STEM 1

Robotics 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 information

Halloween Pumpkinusing. Wednesday, October 17, 12

Halloween 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 information

Arduino Programming. Arduino UNO & Innoesys Educational Shield

Arduino 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 information

ROBOTLINKING THE POWER SUPPLY LEARNING KIT TUTORIAL

ROBOTLINKING 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 information

Arduino Prof. Dr. Magdy M. Abdelhameed

Arduino 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 information

ECGR 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: 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 information

How to Use an Arduino

How 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 information

Laboratory of Sensors Engineering Sciences 9 CFU

Laboratory 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 information

Arduino 05: Digital I/O. Jeffrey A. Meunier University of Connecticut

Arduino 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 information

Coding Workshop. Learning to Program with an Arduino. Lecture Notes. Programming Introduction Values Assignment Arithmetic.

Coding 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 information

Introduction To Arduino

Introduction 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 information

Robotics and Electronics Unit 5

Robotics 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 information

Physics 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 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 information

RedBoard Hookup Guide

RedBoard 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 information

Sten-SLATE ESP Kit. Description and Programming

Sten-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 information

Goal: We want to build an autonomous vehicle (robot)

Goal: 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 information

Lab 2.2 Ohm s Law and Introduction to Arduinos

Lab 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 information

Counter & LED (LED Blink)

Counter & 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 information

IME-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. 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 information

ARDUINO INDUSTRIAL 1 01 Code: A000126

ARDUINO 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 information

Finite State Machine Lab

Finite 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 information

Specification. 1.Power Supply direct from Microcontroller Board. 2.The circuit can be used with Microcontroller Board such as Arduino UNO R3.

Specification. 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 information

Arduino Micro Breadboard Laboratory Interface Processor (Micro BLIP) User Manual

Arduino 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 information

keyestudio Keyestudio MEGA 2560 R3 Board

keyestudio 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 information

Fall Harris & Harris

Fall 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 information

USER MANUAL ARDUINO I/O EXPANSION SHIELD

USER 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 information

Lab-3: LCDs Serial Communication Analog Inputs Temperature Measurement System

Lab-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 information

ARDUINO YÚN Code: A000008

ARDUINO 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 information

Lab 2 - Powering the Fubarino. Fubarino,, Intro to Serial, Functions and Variables

Lab 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 information

Digital Design through. Arduino

Digital 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 information

EK307 Lab: Microcontrollers

EK307 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 information

ArdOS The Arduino Operating System Quick Start Guide and Examples

ArdOS 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 information

3. The circuit is composed of 1 set of Relay circuit.

3. 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 information

SPDM Level 2 Smart Electronics Unit, Level 2

SPDM 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 information

OBSTACLE AVOIDANCE ROBOT

OBSTACLE 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 information

Arduino 07 ARDUINO WORKSHOP 2007

Arduino 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 information

Code&Drive First steps

Code&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 information

Physical Computing Self-Quiz

Physical 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 information

Update: Ver 1.3 Dec Arduino Learning Guide For Beginner Using. Created by Cytron Technologies Sdn Bhd - All Rights Reserved

Update: 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 information

Laboratory 1 Introduction to the Arduino boards

Laboratory 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 information

Arduino and Matlab for prototyping and manufacturing

Arduino 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 information

Lecture 6: Embedded Systems and Microcontrollers

Lecture 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 information

Arduino Programming and Interfacing

Arduino 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 information

About SunFounder Preface SunFounder is a technology company focused on Raspberry Pi and Arduino open source community development. Committed to the pr

About 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 information

EXPERIMENT 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 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 information

Arduino - DigitalReadSerial

Arduino - 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 information

1/Build a Mintronics: MintDuino

1/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 information

MAE106 Laboratory Exercises Lab # 1 - Laboratory tools

MAE106 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 information

3.The circuit board is composed of 4 sets which are 16x2 LCD Shield, 3 pieces of Switch, 2

3.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 information

ENGR 40M Project 3c: Switch debouncing

ENGR 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 information

TANGIBLE MEDIA & PHYSICAL COMPUTING INTRODUCTION TO ARDUINO

TANGIBLE 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 information

Update: Ver 1.3 Dec Arduino Learning Guide For Beginner Using. Created by Cytron Technologies Sdn Bhd - All Rights Reserved

Update: 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 information

University of Hull Department of Computer Science C4DI Interfacing with Arduinos

University 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 information

Schedule. Sanford Bernhardt, Sangster, Kumfer, Michalaka. 3:10-5:00 Workshop: Build a speedometer 5:15-7:30 Dinner and Symposium: Group 2

Schedule. 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 information

CSCI 1100L: Topics in Computing Lab Lab 11: Programming with Scratch

CSCI 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 information

analogwrite(); 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. 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 information

IAS0430 MICROPROCESSOR SYSTEMS

IAS0430 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 information

ARDUINO LEONARDO ETH Code: A000022

ARDUINO 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 information

ARDUINO YÚN MINI Code: A000108

ARDUINO 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 information

ARDUINO M0 PRO Code: A000111

ARDUINO 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 information

Arduino Internals. Dale Wheat. Apress

Arduino 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 information

Arduino ADK Rev.3 Board A000069

Arduino 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 information

Embedded 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. 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 information

Logistics. Embedded Systems. Kinetic Art. This Class. Embedded Systems and Kinetic Art. Kinetic Art

Logistics. 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 information

CARTOOINO Projects Book

CARTOOINO 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 information

CS12020 (Computer Graphics, Vision and Games) Worksheet 1

CS12020 (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 information

Workshop on Microcontroller Based Project Development

Workshop 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 information

Introduction to Arduino. Wilson Wingston Sharon

Introduction 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 information

Introduction to Microcontrollers Using Arduino. PhilRobotics

Introduction 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 information

Arduino Uno. Arduino Uno R3 Front. Arduino Uno R2 Front

Arduino 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 information

The Big Idea: Background:

The 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 information

TA0297 WEMOS D1 R2 WIFI ARDUINO DEVELOPMENT BOARD ESP8266

TA0297 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 information

Intro 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 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 information

REQUIRED MATERIALS Epiphany-DAQ board Wire Jumpers Switch LED Resistors Breadboard Multimeter (if needed)

REQUIRED 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 information

Smart 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 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 information

Microcontrollers for Ham Radio

Microcontrollers 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 information

Layad Circuits Arduino Basic Kit B. Content Summary

Layad 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 information

BASIC ARDUINO WORKSHOP. Mr. Aldwin and Mr. Bernardo

BASIC 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 information

Megamark Processing 3.0 Setup Guide. Downloading and Installing Processing 3.0

Megamark 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 information

Introduction to Arduino

Introduction 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