1 / 66

What is Arduino ?

What is Arduino ?. Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. Arduino can be used to develop stand-alone interactive objects or can be connected to software on your computer.

kendall
Download Presentation

What is Arduino ?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. What is Arduino? Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. Arduino can be used to develop stand-alone interactive objects or can be connected to software on your computer. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. Arduino web site: www.arduino.cc Instructor: Dr. Yu.Vlasov

  2. Instructor: Dr. Yu.Vlasov

  3. Arduino Arduino BT Adruino boards Arduino MINI Arduino NANO LilyPad Arduino Ethernet shield Xbee shield (Not to scale) Instructor: Dr. Yu.Vlasov

  4. ("Duemilanove" means 2009 in Italian) Arduino Duemilanove Microcontroller Instructor: Dr. Yu.Vlasov

  5. Arduino Board Overview USB chip Digital input/output pins USB connector Power LED Reset button Microcontroller chip Power connector Analog Input pins Power pins Instructor: Dr. Yu.Vlasov

  6. Arduino Board Schematic Instructor: Dr. Yu.Vlasov

  7. ArduinoDuemilanove Microcontroller Board Duemilanove - the latest revision (2009) of the basic Arduino USB board. It connects to the computer with a standard USB cable and contains everything else you need to program and use the board. It can be extended with a variety of shields: custom daughter-boards with specific features. • It has: • 14 digital input/output pins (of which 6 can be used as PWM (Pulse Width Modulation) outputs) • 6 analog inputs • a 16 MHz crystal oscillator • a USB connection • a power jack • an ICSP (In-Circuit Serial Programming) header • a reset button. Instructor: Dr. Yu.Vlasov

  8. Digital or Analog? • Digital – may take two values only: ON or OFF (1 or 0) • Analog – has many (infinite) values Computers don’t really do analog -- so they fake it, with quantization Instructor: Dr. Yu.Vlasov

  9. ArduinoDuemilanove Microcontroller Board Power: The Arduino Duemilanove can be powered via the USB connection or with an external power supply. The power source is selected automatically. External (non-USB) power can come either from an AC-to-DC adapter (wall-wart) or battery. The adapter can be connected by plugging a 2.1 mm center-positive plug into the board's power jack. Leads from a battery can be inserted in the Gnd and Vin pin headers of the POWER connector. The board can operate on an external supply of 6 to 20 volts. If supplied with less than 7 V, however, the 5 V pin may supply less than five volts and the board may be unstable. If using more than 12 V, the voltage regulator may overheat and damage the board. The recommended range is 7 to 12 volts. Instructor: Dr. Yu.Vlasov

  10. ArduinoDuemilanove Microcontroller Board • The power pins are as follows: • Vin. The input voltage to the Arduino board when it's using an external power source (as opposed to 5 volts from the USB connection or other regulated power source). You can supply voltage through this pin, or, if supplying voltage via the power jack, access it through this pin. • 5V. The regulated power supply used to power the microcontroller and other components on the board. This can come either from Vin via an on-board regulator, or be supplied by USB or another regulated 5V supply. • 3V3. A 3.3 volt supply generated by the on-board FTDI chip. Maximum current draw is 50 mA. • GND. Ground pins. USB connector Power connector 3V3 output 5V output Vin Instructor: Dr. Yu.Vlasov

  11. ArduinoDuemilanove Microcontroller Board The Duemilanove basic board uses the Atmel ATmega328 chip (http://www.atmel.com/dyn/resources/prod_documents/8161S.pdf). Instructor: Dr. Yu.Vlasov

  12. Using the breadboard(Socket board) The metal strips are laid out as shown in orange. The long top and bottom row of holes are usually used for power supply connections. The bread board has many strips of metal (copper usually) which run underneath the board. To use the bread board, the legs of components are placed in the holes (the sockets). The holes are made so that they will hold the component in place. The circuit is built by placing components and connecting them together with jumper wires. Instructor: Dr. Yu.Vlasov

  13. What do you need to start workingwith Arduino? Arduino board – will be provided USB cable – will be provided Computer with USB interface USB driver and Arduino application – to be downloaded from (http://arduino.cc/en/Main/Software) Instructor: Dr. Yu.Vlasov

  14. Download the Arduino environment To program the Arduino board you need the Arduino environment. Download the latest version from the page: http://arduino.cc/en/Main/Software When the download finishes, unzip the downloaded file. Make sure to preserve the folder structure. Double-click the folder to open it. There should be a few files and sub-folders inside. Doubleclick -- it will start Arduino software Instructor: Dr. Yu.Vlasov

  15. Download USB drivers To connect your Arduino board to computer you need USB drivers for the FTDI chip on the board. You'll want to install the USB drivers before plugging in the Arduino for the first time. Download the latest version from the page: http://www.ftdichip.com/Drivers/VCP.htm (You can download executable file http://www.ftdichip.com/Drivers/CDM/CDM%202.04.16.exe running which will install drivers) Install the drivers. Instructor: Dr. Yu.Vlasov

  16. Arduino software UPLOAD BUTTON INPUT AREA STATUS BAR PROGRAM NOTIFICATION AREA Instructor: Dr. Yu.Vlasov

  17. Arduino software Select your port Select microcontroller type Instructor: Dr. Yu.Vlasov

  18. Power up! (USB) Now we are ready for the moment of truth, it's time to plug your Arduino in and power it up. The most common way to do this is to plug one end of the USB cable into the Arduino and the other end into a computer. The computer will then power the Arduino. Plug the square end of USB cable into your Arduino; the other end – into computer. You should get a small green light on the right side of the Arduino, as shown here Instructor: Dr. Yu.Vlasov

  19. Example 01 Your first program: /* * “Hello World!” * This is the Hello World! for Arduino. * It shows how to send data to the computer */ void setup() // run once, when the sketch starts { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Is anybody out there?"); // prints phrase with ending line break } void loop() // run over and over again { // do nothing! } // After sending program to the Arduino, press Reset button on the board and watch Serial monitor Run this program. What do you see on the Serial Monitor? Instructor: Dr. Yu.Vlasov

  20. Arduino Program (Sketch) Structure Declare variables at top • Initialize • setup() – run once at beginning, set pins • Running • loop() – run repeatedly, after setup() Example of a bare minimum program: void setup() { } void loop() { } Instructor: Dr. Yu.Vlasov

  21. Arduino “Language” • Language is standard C/C++ (but made easy) • Lots of useful functions pinMode() – set a pin as input or output digitalWrite() – set a digital pin high/low digitalRead() – read a digital pin’s state analogRead() – read an analog pin analogWrite() – write an “analog” PWM value delay() – wait an amount of time (ms) millis() – get the current time • And many others. And libraries. And examples! Instructor: Dr. Yu.Vlasov

  22. Format of variables – 01 All variables have to be declared before they are used. Declaring a variable means defining its type, and optionally, setting an initial value (initializing the variable). For example, int inputVariable = 0; declares that variable inputVariable is of type int, and that its initial value is zero. Instructor: Dr. Yu.Vlasov

  23. Format of variables – 02 • char – a data type that takes up 1 byte of memory that stores a character value. Character literals are written in single quotes, like this: 'A'. • byte – a byte stores an 8-bit unsigned number, from 0 to 255. • int – integers are your primary datatype for number storage, and store a 2 byte value. This yields a range of −32,768 to 32,767. • unsigned int – unsigned integers are the same as integers in that they store a 2 byte value. Instead of storing negative numbers however they only store positive values, yielding a useful range of 0 to 65,535. Instructor: Dr. Yu.Vlasov

  24. Format of variables – 03 • long – long variables are extended size variables for number storage, and store 32 bits (4 bytes), from −2,147,483,648 to 2,147,483,647. • unsigned long – unsigned long variables are extended size variables for number storage, and store 32 bits (4 bytes). Unlike standard longs unsigned longs won't store negative numbers, making their range from 0 to 4,294,967,295 Instructor: Dr. Yu.Vlasov

  25. Format of variables – 04 • float – datatype for floating-point numbers, a number that has a decimal point. They are often used to approximate analog and continuous values because they have greater resolution than integers. Floating-point numbers can be as large as 3.4028235E+38 and as low as −3.4028235E+38. They are stored as 32 bits (4 bytes) of information. • double – double precision floating point number. Occupies 4 bytes. The double implementation on the Arduino is currently exactly the same as the float, with no gain in precision. Instructor: Dr. Yu.Vlasov

  26. Format of variables – 05 Example of variables: char myChar = 'A'; char myChar = 65; // both are equivalent byte b = B10010; // "B" is the binary formatter (B10010 = 18 decimal) intledPin = 13; unsigned intledPin = 13; Instructor: Dr. Yu.Vlasov

  27. Arithmetic Operators Arithmetic operators include addition, subtraction, multiplication, and division. They return the sum, difference, product, or quotient of two operands. y = y + 3; x = x - 7; i = j * 6; r = r / 5; Instructor: Dr. Yu.Vlasov

  28. Example 02 Math /* Math */ int a = 5; int b = 10; int c = 20; void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Serial.println("Here is some math: "); Serial.print("a = "); Serial.println(a); Serial.print("b = "); Serial.println(b); Serial.print("c = "); Serial.println(c); Serial.print("a + b = "); // add Serial.println(a + b); Serial.print("a * c = "); // multiply Serial.println(a * c); Serial.print("c / b = "); // divide Serial.println(c / b); Serial.print("b - c = "); // subtract Serial.println(b - c); } void loop() // we need this to be here even though its empty { } Run this program. What do you see on the Serial Monitor? Replace format “int” with “float” Run this program again. What do you see on the Serial Monitor? Instructor: Dr. Yu.Vlasov

  29. Compound Operators Increment or decrement a variable X ++ // same as x = x + 1, or increments x by +1 X -- // same as x = x – 1, or decrements x by -1 X += y // same as x = x + y, or increments x by +y X -= y // same as x = x - y, or decrements x by -y X *= y // same as x = x * y, or multiplies x by y X /= y // same as x = x / y, or divides x by y Example: x = 2; // x = 2 x += 4; // x now contains 6 x -= 3; // x now contains 3 x *= 10; // x now contains 30 x /= 2; // x now contains 15 Instructor: Dr. Yu.Vlasov

  30. Comparison operators x == y (x is equal to y) x != y (x is not equal to y) x < y (x is less than y) x > y (x is greater than y) x <= y (x is less than or equal to y) x >= y (x is greater than or equal to y) Instructor: Dr. Yu.Vlasov

  31. “if” condition “if”, which is used in conjunction with a comparison operator, tests whether a certain condition has been reached, such as an input being above a certain number. The format for an “if” test is: if (someVariable > 50) { // do something here } The program tests to see if someVariable is greater than 50. If it is, the program takes a particular action. If the statement in parentheses is true, the statements inside the brackets are run. If not, the program skips over the code. Example: if (x > 120) digitalWrite(LEDpin, HIGH); comparison operator Instructor: Dr. Yu.Vlasov

  32. “if…else” The “if-else” is the primary means of conditional branching. To branch an execution of your program depending on the state of a digital input, we can use the following structure: if (inputPin == HIGH) { doThingA; } else { doThingB; } Instructor: Dr. Yu.Vlasov

  33. “for” statement The “for” statement is used to repeat a block of statements enclosed in curly braces. An increment counter is usually used to increment and terminate the loop. The “for” statement is useful for any repetitive operation: for (initialization; condition; increment) { //statement(s); } The “initialization” happens first and exactly once. Each time through the loop, the “condition” is tested; if it's true, the “statement” block, and the “increment” is executed, then the “condition” is tested again. When the “condition” becomes false, the loop ends. Example: if (x > 120) digitalWrite(LEDpin, HIGH); Instructor: Dr. Yu.Vlasov

  34. “for” statement Example “Dim an LED using a PWM pin”: intPWMpin = 10; // LED in series with 1k resistor on pin 10 void setup() { // no setup needed } void loop() { for (inti=0; i <= 255; i++) { analogWrite(PWMpin, i); delay(10); } } initialization condition increment statement Instructor: Dr. Yu.Vlasov

  35. “switch ... case” switch...case controls the flow of programs by allowing programmers to specify different code that should be executed in various conditions. When a case statement is found whose value matches that of the variable, the code in that case statement is run. Example: switch (var) { case label: // statements break; case label: // statements break; default: // statements } Instructor: Dr. Yu.Vlasov

  36. “while” loop while loops will loop continuously, and infinitely, until the expression inside the parenthesis, () becomes false. Something must change the tested variable, or the while loop will never exit. This could be in your code, such as an incremented variable, or an external condition, such as testing a sensor. while(someVariable ?? value) { doSomething; } Example: const int button2Pin = 2; buttonState = LOW; while(buttonState == LOW) { buttonState = digitalRead(button2Pin); } Instructor: Dr. Yu.Vlasov

  37. “do … while” loop The “do” loop works in the same manner as the “while” loop, with the exception that the condition is tested at the end of the loop, so the “do” loop will always run at least once. do { doSomething; } while (someVariable ?? value); Example: do { x = readSensor(); delay(10); } while (x < 100); // loops if x < 100 Instructor: Dr. Yu.Vlasov

  38. Connection “+” (long) lead of LED should be connected to Pin #13. The other (short) lead of the LED goes to “Ground” Instructor: Dr. Yu.Vlasov

  39. Example 03a Red LED /* Blink Turns an LED ON and OFF repeatedly. There is already an LED on the board connected to pin 13. */ int ledPin = 13; // LED connected to digital pin 13 void setup() { pinMode(ledPin, OUTPUT); // initialize the digital pin as an output } void loop() { digitalWrite(ledPin, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(ledPin, LOW); // set the LED off delay(1000); // wait for a second } Instructor: Dr. Yu.Vlasov

  40. Example 03b Blinking LED /* Blink Turns an LED ON and OFF repeatedly. There is already an LED on the board connected to pin 13. */ int ledPin = 13; // LED connected to digital pin 13 int ON = 100; // (ms) time for LED to be ON int OFF = 100; // (ms) time for LED to be OFF void setup() { pinMode(ledPin, OUTPUT); // initialize the digital pin as an output } void loop() { digitalWrite(ledPin, HIGH); // set the LED on delay(ON); // wait for a second digitalWrite(ledPin, LOW); // set the LED off delay(OFF); // wait for a second } Play with values of constants “ON” and “OFF” Instructor: Dr. Yu.Vlasov

  41. Example 03c Blinking LED /* Blink without Delay Turns on and off a light emitting diode(LED) connected to a digital pin, without using the delay() function. This means that other code can run at the same time without being interrupted by the LED code. The circuit: LED attached from pin 13 to ground. */ const int ledPin = 13; // the number of the LED pin. Constants won't change. int ledState = LOW; // ledState used to set the LED. Variables will change long previousMillis = 0; // will store last time LED was updated. Variables will change long interval = 1000; // interval at which to blink (milliseconds) void setup() { pinMode(ledPin, OUTPUT); // set the digital pin as output: } void loop() { // check to see if it's time to blink the LED; that is, is the difference between the current time and last time we blinked the LED bigger than the interval at which we want to blink the LED. if (millis() - previousMillis > interval) { previousMillis = millis(); // save the last time you blinked the LED if (ledState == LOW) ledState = HIGH; else ledState = LOW; digitalWrite(ledPin, ledState); // set the LED with the ledState of the variable } } Instructor: Dr. Yu.Vlasov

  42. Connection 3 LEDs connected from digital pins 9, 10, 11 to ground through220 ohm resistors LED 220 Ohm 220 Ohm 220 Ohm Instructor: Dr. Yu.Vlasov

  43. Example 04 3 LEDs /* The circuit: 3 LEDs connected from digital pins 9,10,11 to ground through 220 ohm resistors. */ int led9Pin = 9; // LED 9 connected to digital pin 9 int led10Pin = 10; // LED 10 connected to digital pin 10 int led11Pin = 11; // LED 11 connected to digital pin 11 int ON = 1000; // (ms) time for LED to be ON int OFF = 1000; // (ms) time for LED to be OFF void setup() // initialize digital pins as an output: { pinMode(led9Pin, OUTPUT); pinMode(led10Pin, OUTPUT); pinMode(led11Pin, OUTPUT); } void loop() { digitalWrite(led9Pin, HIGH); // set the LED on delay(ON); // wait for time “ON” (ms) digitalWrite(led9Pin, LOW); // set the LED off delay(OFF); // wait for time “OFF” (ms) digitalWrite(led10Pin, HIGH); delay(ON); digitalWrite(led10Pin, LOW); delay(OFF); digitalWrite(led11Pin, HIGH); delay(ON); digitalWrite(led11Pin, LOW); delay(OFF); } Instructor: Dr. Yu.Vlasov

  44. Connection LED on pin #13 is operated by a button on pin #2 15 KOhm Push button 220 Ohm +5V Instructor: Dr. Yu.Vlasov

  45. Example 05 Button /* LED on pin #13 is operated by a button on pin #2 */ const int led13Pin = 13; const int button2Pin = 2; int buttonState = 0; // variable for reading the pushbutton status void setup() { pinMode(led13Pin, OUTPUT); pinMode(button2Pin, INPUT); } void loop() { buttonState = digitalRead(button2Pin); if (buttonState == HIGH) { digitalWrite(led13Pin, LOW); } else { digitalWrite(led13Pin, HIGH); } } Instructor: Dr. Yu.Vlasov

  46. Connection Three LEDs on pins 9, 10, 11 are controlled by a button on pin 2 15 KOhm Push button LED 220 Ohm 220 Ohm 220 Ohm 220 Ohm +5V Instructor: Dr. Yu.Vlasov

  47. Example 06 Button /* LEDs on pins 9,10,11 are controlled by a button on pin #2 */ const int led7Pin = 9; // LED 9 connected to digital pin 9 const int led10Pin = 10; // LED 10 connected to digital pin 10 const int led11Pin = 11; // LED 11 connected to digital pin 11 const int led13Pin = 13; const int ON = 100; // (ms) time for LED to be ON const int OFF = 10; // (ms) time for LED to be OFF const int button2Pin = 2; int buttonState = 0; void setup() { // initialize digital pins pinMode(led9Pin, OUTPUT); pinMode(led10Pin, OUTPUT); pinMode(led11Pin, OUTPUT); pinMode(led13Pin, OUTPUT); pinMode(button2Pin, INPUT); } void loop() { buttonState = digitalRead(button2Pin); if (buttonState == HIGH) { digitalWrite(led13Pin, LOW); digitalWrite(led9Pin, HIGH); // set the LED on delay(ON); // wait for a second digitalWrite(led9Pin, LOW); // set the LED off delay(OFF); // wait for a second digitalWrite(ed10Pin, HIGH); // set the LED on delay(ON); // wait for a second digitalWrite(ed10Pin, LOW); // set the LED off delay(OFF); // wait for a second digitalWrite(led11Pin, HIGH); // set the LED on delay(ON); // wait for a second digitalWrite(led11Pin, LOW); // set the LED off delay(OFF); // wait for a second } else { digitalWrite(led13Pin, HIGH); } } Instructor: Dr. Yu.Vlasov

  48. analogWrite() Writes an analog value (PWM wave) to a pin. Can be used to light a LED at varying brightnesses or drive a motor at various speeds. After a call to analogWrite(), the pin will generate a steady square wave of the specified duty cycle until the next call to analogWrite() (or a call to digitalRead() or digitalWrite() on the same pin). Instructor: Dr. Yu.Vlasov

  49. analogWrite() The frequency of the PWM signal is approximately 490 Hz. On Arduino Duemilanove boards this function works on pins 3, 5, 6, 9, 10, and 11 (marked with “PWM”.) analogWrite(pin, value) Where: pin: the pin to write to. value: the duty cycle: between 0 (always off) and 255 (always on). Instructor: Dr. Yu.Vlasov

  50. Example 07a PWM. LED fading /* Fading This example shows how to fade an LED using the analogWrite() function. The circuit: LED attached from digital pin 9 to ground. */ int ledPin = 9; // LED connected to digital pin 9 void setup() { // nothing happens in setup } void loop() { for(int fadeValue = 0 ; fadeValue <= 255; fadeValue++) // fade in from min to max in increments { analogWrite(ledPin, fadeValue); // sets the value (range from 0 to 255) delay(2); // wait for x milliseconds to see the dimming effect } for(int fadeValue = 255 ; fadeValue >= 0; fadeValue--) // fade out from max to min in increments { analogWrite(ledPin, fadeValue); // sets the value (range from 0 to 255) delay(2); // wait for x milliseconds to see the dimming effect } } Instructor: Dr. Yu.Vlasov

More Related