This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:digital_io [2023/07/08 01:38] – pczekalski | en:iot-open:introductiontoembeddedprogramming2:cppfundamentals:digital_io [2023/11/23 12:21] (current) – pczekalski | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Digital ports, reading inputs, outputting data ====== | ||
| + | {{: | ||
| + | Every microcontroller has many pins that can be used to connect external electronic elements. In the examples shown in previous chapters, LED was used. Such LED can be connected to a chosen General Purpose Input Output (GPIO) pin and can be controlled by setting a HIGH or LOW state. Below are some details of the functions that allow the manipulation of GPIOs using the Arduino framework. In the next chapter, analogue signals will be considered. | ||
| + | |||
| + | ==== Digital I/O ==== | ||
| + | Microcontrollers' | ||
| + | |||
| + | <note important> | ||
| + | Notice that the voltage the microcontroller is powered with can be different (usually lower) than the voltage provided directly to the board. For example, the ATmega microcontroller on the Arduino Uno board is powered with 5V, while the board itself can be powered from an external source providing 7-12V. Other microcontrollers require different voltages, e.g. Espressif 3.3V. Refer to the device manual for a valid range of voltages. | ||
| + | </ | ||
| + | |||
| + | **pinMode()** | ||
| + | |||
| + | The function // | ||
| + | |||
| + | The syntax of a function is the following: | ||
| + | <code c> | ||
| + | pinMode(pin, | ||
| + | </ | ||
| + | |||
| + | The parameter //pin// is the number of the pin. | ||
| + | |||
| + | The parameter //mode// can have three different values – //INPUT//, //OUTPUT//, // | ||
| + | |||
| + | <note important> | ||
| + | |||
| + | **digitalWrite()** | ||
| + | |||
| + | The function // | ||
| + | |||
| + | The syntax of a function is the following: | ||
| + | <code c> | ||
| + | digitalWrite(pin, | ||
| + | </ | ||
| + | |||
| + | The parameter //pin// is the number of the pin. | ||
| + | The parameter //value// can take values //HIGH// or //LOW//. If the mode of the pin is set to the //OUTPUT//, the //HIGH// sets voltage to power supply voltage and //LOW// to 0 V. | ||
| + | |||
| + | Using this function for pins set to have the INPUT mode is also possible. In this case, //HIGH// or //LOW// values enable or disable the internal pull-up resistor. | ||
| + | |||
| + | **digitalRead()** | ||
| + | |||
| + | The function // | ||
| + | |||
| + | The syntax of a function is the following: | ||
| + | <code c> | ||
| + | digitalRead(pin); | ||
| + | </ | ||
| + | |||
| + | The parameter //pin// is the number of the pin. | ||
| + | |||
| + | On the opposite of the functions viewed before, this one has the return type, and it can take a value of //HIGH// or //LOW//. | ||
| + | |||
| + | In the code below, the button connected to pin 3 controls the LED connected to pin 4. | ||
| + | |||
| + | <code c> | ||
| + | #define BUTTON_pin 3 | ||
| + | #define LED_pin 4 | ||
| + | |||
| + | void setup() { | ||
| + | pinMode(LED_pin, | ||
| + | pinMode(BUTTON_pin, | ||
| + | } | ||
| + | |||
| + | bool state; | ||
| + | |||
| + | void loop() { | ||
| + | state = digitalRead(BUTTON_pin); | ||
| + | digitalWrite(LED_pin, | ||
| + | } | ||
| + | </ | ||
| + | |||