# Summing up

This is the end of my Arduino Introduction Series. It's time to sum everything up and look ahead!

## Summing up

You did it! You finally reached the end of this introduction series. We started with the basics about programming, and we finished up by learning how to use LCDs. We used the digital and analog pins of our Arduino and learned about control structures, variables, functions and procedures.
All of this should give you a good starting point to realize your own projects.

We discovered only a small amount of what you can make with an Arduino. We discovered how to use photo resistors, buttons, LEDs, IR receivers, LCDs and even piezo speakers, but that's not all by far. There is a lot more to discover!

## How to Proceed?

While this is the end of the Arduino Introduction Series, I hope it's not the end of your journey in programming and electronics. How can you proceed?

Try it for yourself. Start by combining and adjusting the things you learned to fit your needs. Start your own projects and learn how to solve bigger problems. To design your own circuits, you may want to look into the basics of electronic circuits.

You will find more than enough information on the internet and I will continue to provide more information and tutorials too. I will start with a new series 'Circuit Basics' to teach you the basic of electronics and enable you to understand and design simple circuits. Additionally, I will start with a new 'Arduino Modules' series to show you how to use different sensors and other electronic components with your Arduino. Stay tuned and if you have questions or wishes for further tutorials feel free to give feedback and contact me.

## Function Reference

During the tutorials in this introduction series we used a lot of different functions. Here is an overview to help you to use them in future projects.

### Digital pins

• pinMode(pin, mode)

• Changes the pin mode to input or output
• pin: Number of the digital pin (0 to 13) or A1 to A5 for the analog pins
• mode: OUTPUT, INPUT, INPUT_PULLUP
• digitalWrite(pin, value)

• Sets the output level for the given pin
• pin: Number of the digital pin (0 to 13) or A1 to A5 for the analog pins
• value: HIGH or LOW

• Returns HIGH or LOW corresponding to the voltage level at the pin
• pin: Number of the digital pin (0 to 13) or A1 to A5 for the analog pins

### Analog Pins

• Returns the voltage level as a number between 0 and 1023
• pin: Analog pin to use for the measurement (A0 to A5)

### Time and Delays

• delay(ms)

• Waits for the specified time
• ms: Time in milliseconds
• millis()

• Returns a timestamp in milliseconds

### PWM

• analogWrite(pin, value)
• Configures PWM with the specified duty cycle for the given pin
• pin: Number of a PWM capable pin (marked with ~)
• value: Duty cycle as number between 0 and 255

### Sound

• tone(pin, frequency)

• Generates a signal with the given frequency at the specified pin
• pin: Number of the pin
• frequency: Frequency of the tone to generate
• noTone(pin)

• Disables the tone generation on the given pin
• pin: Number of the pin

## Detecting Pulses

• pulseIn(pin, value, timeout)
• Returns the pulse length in microseconds or 0 if the timeout is exceeded
• pin: Number of the pin to measure the pulse length
• value: HIGH or LOW depending on whether we want to measure the length of periods with low or high voltage level
• timeout: Optional parameter, to specify the maximum expected pulse length in microseconds (1 s if omitted)

## Serial Communication

• Serial.begin(baudrate)

• Initialize the serial communication with the given baudrate
• baudrate: Communication speed for the serial port (usually 9600)
• Serial.print(value)

• Sends the given value via the serial port
• value: Text, character, integer or floating-point number to send
• Serial.println(value)

• Sends the given value via the serial port and produces a line break
• value: Text, character, integer or floating-point number to send

### LiquidCrystal_I2C Library

For using the LCD you have to create an lcd object first:

LiquidCrystal_I2C lcd(0x27, 16, 2);

You can choose a different name too. If you do, adjust lcd it for the method calls below according to your name.

• lcd.init()

• Resets and initializes the LCD
• lcd.clear()

• Clears the LCD content and resets the cursor to the upper-left corner
• lcd.backlight()

• Enables the LCD backlight
• lcd.print(value)

• Displays a text or a number on the LCD at the current cursor position
• value: Text or number to display
• lcd.setCursor(x, y)

• Changes the cursor position
• x: New cursor column
• y: New cursor row