Está en la página 1de 50

1

BOGOTA NOVIEMBRE 18 DE 2021

CORPORACION UNIFICADA CUN

PRESENTADO POR BLADIMIR SALDAÑA CAMPO

FACULTAD DE INGENIERIA

ACA3

DOCENTE

INGENIERO ALVARO POVEDA FORERO

CIRCUITOS BASICOS Y LABORATORIO/51218


2

(ACA 3)

1. Plano de la situación problema dé los tres dispositivos con compuertas

lógicas trabajo que se realiza en clase.

Plano compuertas lógicas situación problema

2. Consultar sobre los microprocesadores, su arquitectura y los fabricantes.

principales marcas

El microprocesador es la unidad central de procesamiento de un sistema

informático o de telecomunicaciones realiza operaciones matemáticas y lógicas las cpu

antiguas eran enormes ocupaban toda una habitación, el desarrollo del microprocesador

fue lo que produjo el adelanto tecnológico a la computadora que tenemos en la actualidad.

en la actualidad podemos encontrarlos en muchos electrodomésticos de uso diario en la

actualidad intel conserva la patente de 1971 gracias al Intel 4004 el que fue conocido

como el primer micro procesador


3

Funcionamiento del microprocesador

se trata de instrucciones que se traducen en números binarios los cuales son

ordenados de forma secuencial en la memoria principal de la unidad aritmético lógica.

se inicia con una prelectura de la instrucción que se acaba de ingresar después

se hace el envío de la instrucción hacia el decodificador donde se determina qué hacer

con la instrucción dada entonces se procede a la ejecución, antes se hace lectura de

operandos si es necesario es decir que se lleva a cabo el procesamiento mediante un

lanzamiento de las máquinas de estado. Y finalmente se procede a la escritura de

resultados en los registros del sistema todas estas etapas de procesamiento se hacen en

ciclos de cpu, la frecuencia de reloj asigna la duración de los ciclos que no pueden ser de

menor que loque necesita para hacer la operación individual. el procesador está

conectado a un circuito hecho de cristal de cuarzo, el cual genera pulsos constantemente,

manteniendo un ritmo continuo en un segundo. (DANILO, 2018)

Partes:

Transistores: son dispositivos semiconductores que se utilizan para cambiar las

señales electrónicas en los microprocesadores, un mayor número de transistores significa

un mejor rendimiento del CPU.

Tienen dos velocidades:

Velocidad interna: velocidad a la que funciona el micro internamente (500, 600,

800 MHz).

Velocidad externa o de bus (FSB): velocidad con la que se comunican el micro y la

placa base (generalmente 60, 66 ó 100 MHz)

partes:
4

coprocesador matemático: es la parte especializada en cálculos matemáticos,

antiguamente estaba en el exterior en otro chip. Se considerada como una parte “lógica”

memoria caché: memoria ultrarrápida que emplea el micro para tener a mano

ciertos datos que pueden ser utilizados después sin tener que utilizar la memoria ram

reduciendo el tiempo de espera. la cache tiene diferentes niveles los cuales han

evolucionado con los micros pueden tener nivel 1,2,3 entre más bajo el nivel mas cerca

esta del micro

El encapsulado: Es la parte externa que rodea a la oblea de silicio para hacerlo

compacto impedir su deterioro y permitir la comunicación con los conectores externos de

la placa madre.

Disipador de calor : Es fundamental para un rendimiento óptimo de los mismos

debido a que en todo semiconductor, el flujo de la corriente produce pérdida de energía

que se transforma en calor.

Los registros: es un tipo de memoria pequeña con fines especiales que el micro

tiene disponible para algunos usos particulares. Hay varios grupos de registros en cada

Puertos:

su función es la de comunicar los circuitos con el microprocesador.

El coprocesador matemático: es la parte encargada de cálculos matemáticos,

antiguamente estaba en el exterior del micro en otro chip. esta parte está considerada

como una parte “lógica” junto con los registros, la unidad de control, memoria y bus de

datos, los microprocesadores compatibles con pc (computadores de mesa o todo en

unos) poseen cache interna de primer nivel o 1 lo que nos indica que está más cerca del

microprocesador, tanto que está encapsulada junto a el, el 4004 fue el primer

microprocesador de Intel este descubrimiento impulsó la calculadora sus principales usos

sedan en la industria de la computación sus principales fabricantes a nivel de


5

computadores son intel con sus core de diferentes generaciones y amd con los ryzen y

en el mundo de la telefonía celular donde también son mui utilizados tenemos a qualqon,

mediatek, sansumg conlos exynos apel conlos bionic (DANILO, 2018)

3. Averiguar toda la Referencia lingüística, tener en cuenta que los

programas de Arduino se pueden dividir en tres partes principales: estructura,

valores (variables y constantes) y funciones.

Referencia lingüística

Arduino esta dividido en tres partes principales funciones, valores (variables y

constantes) y estructura.

Funciones

Para controlar la placa Arduino y realizar cálculos.

Digitales : reconoce el valor de un pin digital especifico, ya sea o .highlow

Sintaxis

digitalRead(pin)

.OUTPUTpinMode()HIGHLOW

Si el pin está configurado como un , habilitará () o deshabilitará () el pullup interno

en el pin de entrada. Se recomienda configurar el para habilitar la resistencia pull-up

interna. Consulte el tutorial de Pines digitales para obtener más información.

INPUTdigitalWrite()HIGHLOWpinMode()INPUT_PULLUP

Si no establece el en , y conecta un led a un pin, al llamar , el led puede aparecer

tenue. Sin configurar explícitamente , se habrá habilitado la resistencia pull-up interna,

que actúa como una gran resistencia limitante de

corriente.pinMode()OUTPUTdigitalWrite(HIGH)pinMode()digitalWrite()
6

Sintaxis

digitalWrite(pin, value)

pinMode()

Descripción Configura el pin especificado para que se comporte como entrada o

salida. Consulte la página Pines digitales para obtener detalles sobre la funcionalidad de

los pines. A partir de Arduino 1.0.1, es posible habilitar las resistencias pullup internas con

el modo . Además, el modo deshabilita explícitamente las pullups

internas.INPUT_PULLUPINPUT

Sintaxis

pinMode(pin, mode)

analógicas

reconoce el valor del pin analógico asignado las placas Arduino están provistas de

un convertidor analógico a digital multicanal de 10 bits esto quiere decir que asignará los

voltajes de entrada entre 0 y el voltaje de funcionamiento de (5V o 3.3V) en valores

enteros entre 0 y 1023.

Sintaxis

analogRead(pin)

analogReference():

Configura el voltaje de referencia utilizado para la entrada analógica

Sintaxis : analogReference(type)
7

analogWrite():

Envia un pulso analogico a un pin especifico Se puede utilizar para encender un

LED a diferentes brillos o accionar un motor a varias velocidades después de una llamada

a, el pin generará una onda rectangular constante del ciclo de trabajo especificado hasta

la siguiente llamada a (o una llamada a o ) en el mismo

pin.analogWrite()analogWrite()digitalRead()digitalWrite()

Sintaxis: analogWrite(pin, value)

Familia Zero, Due & MKR

(devuelve valores entre 0-1023)bits para la compatibilidad con versiones

anteriores de placas basadas en AVR. analogRead()

Sintaxis : analogReadResolution(bits)

analogWriteResolution() es una extensión de la API analógica para Arduino Due.

establecebrinda la solución de la función, el valor predeterminado es de 8 bits para la

compatibilidad con versiones anteriores de placas basadas en AVR.analogWrite()

AVANZADAS

noTone()

Detiene la generación de una onda cuadrada desencadenada por No tiene ningún

efecto si no se genera ningún tono.tone()

Sintaxis

noTone(pin)

pulseIn()
8

Lee un pulso espera a que el pin vaya de a a b , comienza a cronometrar, luego

espera a que el pin se vaya y detiene el tiempo devuelve la longitud del pulso en

microsegundos o cede y devuelve 0 si no se recibió ningún pulso completo dentro del

tiempo de espera si utilizamos el tiempo de espera opcional, el código se ejecutará más

rápido.

Sintaxis

pulseIn(pin, value)

pulseIn(pin, value, timeout)

pulseInLong()

pulseInLong() es una alternativa a pulsen() pus es mejor para manejar escenarios

afectados por pulsos largos e interrupciones trabaja en pulsos de 10 microsegundos a 3

minutos, la resolución más alta se obtiene con grandes intervalos

Sintaxis

pulseInLong(pin, value)

pulseInLong(pin, value, timeout)

shiftIn()

Cambia un byte de datos de uno en uno comienza desde el bit más significativo el

más cercano a la izquierda el primer pulso se toma alto, el siguiente bit se lee desde la

línea de datos y luego el siguiente pin se toma bajo es una implementación de Arduino

proporciona una biblioteca SPI que utiliza la implementación de hardware, que es más

rápida pero solo funciona en pines específicos.

Sintaxis

byte incoming = shiftIn(dataPin, clockPin, bitOrder)


9

shiftOut()

Desplaza un byte de datos de un bit a la vez Comienza desde el bit más

significativo (es decir, el más a la izquierda) o el menos (a la derecha) cada bit se escribe

a su vez en un pin de datos, después de lo cual se pulsa un pin de reloj (tomado alto,

luego bajo) para indicar que el bit está disponible.

Sintaxis

shiftOut(dataPin, clockPin, bitOrder, value)

tone() :

Genera una onda cuadrada de la frecuencia especificada (y un ciclo de trabajo del

50%) en un pin Se puede especificar una duración, si no la onda continúa hasta una

llamada a noTone() el pin se puede conectar a un audible para producir tonos Solo se

puede generar un tono a la vez no es posible generar tonos inferiores a 31Hz. Para más

Sintaxis

tone(pin, frequency)

tone(pin, frequency, duration)

tiempo

delay()

Pausa el programa durante la cantidad de tiempo (en milisegundos) especificada

como parámetro. (Hay 1000 milisegundos en un segundo)


10

Sintaxis

delay(ms)

delayMicroseconds()

Pausa el programa durante la cantidad de tiempo (en microsegundos) especificada

por el parámetro los valores más grandes pueden producir un retraso extremadamente

corto.

Sintaxis

delayMicroseconds(us)

micros() : Devuelve el número de microsegundos desde que la placa Arduino

comenzó a ejecutar el programa actual. Este número se desbordará (volverá a cero),

después de aproximadamente 70 minutos En las placas de la familia Arduino Portenta

esta función tiene una resolución de un microsegundo en todos los núcleos.

Sintaxis

time = micros()

millis() : regresa al número de milisegundos ya pasados desde que la placa

Arduino enpieza a ejecutar el programa el número se desborda vuelve a cero después

de aproximadamente 50 días.

Sintaxis

time = millis()
11

Matemática:

Calcula el valor absoluto de un número

Sintaxis

abs(x)

constrain() : Restringe un número para que esté dentro de un rango.

Sintaxis

constrain(x, a, b)

Descripción

Vuelva a mapea un número de un rango a otro es decir, un valor de fromLow se

asignaría a toLow,un valor de fromHigh a toHigh,valores intermedios a valores

intermedios, etc.

No restringe los valores dentro del rango, porque los valores fuera del rango a

veces son intencionados y útiles. La función se puede utilizar antes o después de esta

función, si se desean límites a los rangos.constrain()

Tenga en cuenta que los "límites inferiores" de cualquiera de los rangos pueden

ser más grandes o más pequeños que los "límites superiores", por lo que la función se

puede utilizar para invertir un rango de números, por ejemplo.map()

y = map(x, 1, 50, 50, 1);

La función también maneja bien los números negativos, por lo que este ejemplo
12

y = map(x, 1, 50, 50, -100);

también es válido y funciona bien.

La función utiliza matemáticas enteras por lo que no generará fracciones, cuando

las matemáticas podrían indicar que debería hacerlo los restos fraccionarios se truncan y

no se redondean ni se promedian.map()

Sintaxis

map(value, fromLow, fromHigh, toLow, toHigh)

máx()

Calcula el máximo de dos números.

Sintaxis

max(x, y)

min()

Calcula el mínimo de dos números.

Sintaxis

min(x, y)

pow()
13

Calcula el valor de un número elevado a una potencia. se puede usar para elevar

un número a una potencia fraccionaria sirve para generar un mapeo exponencial de

valores o curvas.pow()

Sintaxis

pow(base, exponent)

sq()

Calcula el cuadrado de un númeroe el número multiplicado por sí mismo.

Sintaxis

sq(x)

sqrt()

Calcula la raíz cuadrada de un número.

Sintaxis

sqrt(x)

Trigonometría:

cos()

Calcula el coseno de un ángulo (en radianes). el resultado será entre -1 y 1.

Sintaxis

cos(rad)

SENO
14

Calcula el seno de un ángulo (en radianes). el resultado será entre -1 y 1.

Sintaxis

sin(rad)

TAN()

Calcula la tangente de un ángulo (en radianes). el resultado será entre infinito

negativo e infinito.

Sintaxis

tan(rad)

Characters

isAlpha()

Analiza si un char es alfa (es decir, una letra). devuelve true si thisChar contiene

una letra.

Sintaxis

isAlpha(thisChar)

isAlphaNumeric()

Analiza si un carácter es alfanumérico osea, una letra o un número devuelve true

si el carácter contiene un número o una letra.

Sintaxis

isAlphaNumeric(thisChar)

isAscii()

Analiza si un caracter es Ascii. devuelve true si contiene un carácter Ascii.


15

Sintaxis

isAscii(thisChar)

isControl()

Analiza si un carácter es de control. devuelve true si el caracter es un carácter de

control.

Sintaxis

isControl(thisChar)

isDigit():

Analice si un char es un dígito es decir, un número d

evuelve true si thisChar es un número.

Sintaxis

isDigit(thisChar)

isGraph()

Analiza si un char es imprimible con algún contenido (el espacio es imprimible

pero no tiene contenido) devuelve true si thisChar es imprimible.

Sintaxis

isGraph(thisChar)

isHexadecimalDigit()
16

Analiza si un char es un dígito hexadecimal A-F, 0-9 devuelve true si el carácter

contiene un dígito hexadecimal.

Sintaxis

isHexadecimalDigit(thisChar)

isLowerCase()

Analiza si un carácter es minúscula es decir devuelve true si el carácter contiene

una letra en minúsculas.

Sintaxis

isLowerCase(thisChar)

isPrintable()

Analiza si un carácter es imprimible ósea que produzca una salida, incluso un

espacio en blanco devuelve true si el caracter es imprimible.

Sintaxis

isPrintable(thisChar)

isPunct()

Analiza si un carácter es de puntuación, una coma, un punto y coma, un signo de

exclamación, devuelve true si el caracter es de puntuación.

Sintaxis

isPunct(thisChar)

isSpace()

Analiza si un carácter es de espacio devuelve true si el argumento es un espacio

Sintaxis
17

isSpace(thisChar)

isUpperCase()

Analiza si un char es mayúscula devuelve true si el carácter está en mayúsculas.

Sintaxis

isUpperCase(thisChar)

Números aleatorios

aleatorio()

La función aleatoria genera números pseudoaleatorios.

Sintaxis

random(max)

random(min, max)

randomSeed()

randomSeed() inicia el generador de números pseudoaleatorios haciendo que

comience en un punto arbitrario de su secuencia aleatoria esta secuencia es siempre la

misma.

Sintaxis

randomSeed(seed)
18

Bits y bytes

bit()

Calcula el valor del bit especificado (el bit 0 es 1, el bit 1 es 2, el bit 2 es 4, etc.).

Sintaxis

bit(n)

bitClear()

Borra escribe un 0 en un bit de una variable numérica.

Sintaxis

bitClear(x, n)

bitRead()

Lee una parte de un número.

Sintaxis bitRead(x, n)

bitSet()

escribe un 1 en un bit de una variable numérica.

Sintaxis bitSet(x, n)

bitWrite()

Escribe una parte de una variable numérica.

Sintaxis bitWrite(x, n, b)
19

highByte()

Extrae un byte de orden alto de una palabra o el segundo byte más bajo de uno

más grande

Sintaxis highByte(x)

Interrupciones externas

attachInterrupt()

Pines digitales con interrupciones

Su primer parámetro es un número de interrupción se usa para traducir el pin

digital real a un número de interrupción específico

Sintaxis attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) (recomendado)

No recomendado esta sintaxis solo funciona en placas SAMD Arduino, Uno WiFi

Rev2, Due y 101).attachInterrupt(interrupt, ISR, mode)attachInterrupt(pin, ISR, mode)

noInterrupciones()

Deshabilita las interrupciones, pero puede volver a habilitarlas las interrupciones

permiten que ciertas tareas importantes ocurran en segundo plano y están habilitadas de

forma predeterminada.

Sintaxis noInterrupts()

Comunicación

Serial
20

sirve para la comunicación entre la placa Arduino y una computadora o diferentes

dispositivos

Stream

Es la clase streams basada en caracteres y binarios no se llama directamente,

Stream define las funciones de lectura en Arduino

Keyboard

USB

Las funciones de teclado permiten que las placas basadas en micro 32u4 o samd

envíen pulsaciones de teclas a una computadora conectada a través del puerto usb nativo

de su micro.

Ratón

Las funciones del ratón permiten que las placas basadas en micro 32u4 o samd

controlen el movimiento del cursor en una computadora conectada a través del puerto usb

nativo de su micro

Variables

Constantes

Tipos de datos y constantes de Arduino.

constantes

son expresiones que ya están predefinidas en el lenguaje Arduino se utilizan para

leer los programas se clasifican en grupos, (constantes boleanas y enteras) las dos co

HIGH | LOW INPUT | OUTPUT | INPUT_PULLUP

LED_BUILTIN

true | false
21

Floating Point Constants

Descripción

Al igual que las constantes enteras, las constantes de punto flotante se utilizan

para hacer que el código sea más legible. Las constantes de coma flotante se

intercambian en tiempo de compilación por el valor al que se evalúa la expresión.

Código de ejemplo

n = 0.005; // 0.005 is a floating point constant

Integer Constants

Hay dos constantes que se utilizan para representar la verdad y la falsedad en el

lenguaje Arduino true y false.

falso

falsees el más fácil de definir de los dos. falso se define como 0 (cero)

cierto

true se define como 1,

Definición de niveles de pines alto y bajo

Al leer o escribir en un pin digital, solo hay dos valores posibles que un pin puede

tomar / establecer: highy low.

Definición de elementos integrados: led_builtin

la mayoría de las placas arduino tienen un pin conectado a un led integrado en

serie con una resistencia. la constante led_builtines el número del pin al que está

conectado el led integrado. la mayoría de las placas tienen este led conectado al pin

digital 13.
22

Conversión

(unsigned int)

Convierte un valor en el tipo de datos.unsigned int

Sintaxis

(unsigned int)x

(unsigned long)

Convierte un valor en el tipo de datos.unsigned long

Sintaxis

(unsigned long)x

byte():

Convierte un valor en datos.byte

Sintaxis byte(x) (byte)x (Conversión de tipo estilo C)

char()

Convierte un valor en el tipo de datos.char¡

Sintaxis

char(x)

(char)x (Conversión de tipo estilo C)


23

float()

Convierte un valor en datos.float

Sintaxis

float(x)

(float)x (Conversión de tipo estilo C)

int()

Convierte un valor en el tipo de datos.int

Sintaxis

int(x)

(int)x (Conversión de tipo estilo C)

long()

Convierte un valor en el tipo de datos.long

Sintaxis

long(x)

(long)x (Conversión de tipo estilo C)

word()

Convierte un valor en el tipo de datos.word

Sintaxis

word(x)

word(h, l)

(word)x (Conversión de tipo estilo C)

Tipos de datos :
24

Array:

Una matriz de variables a las que se accede con un número índice.

Bool:

A contiene uno de dos valores, o . (Cada variable ocupa un byte de

memoria.)booltruefalsebool

Sintaxis

bool var = val;

boolean: es un alias de tipo no estándar definido por Arduino

byte:

Un byte almacena un número sin firmar de 8 bits, de 0 a 255.

Sintaxis

byte var = val;

char:

se utiliza para almacenar el valor de un carácter

Sintaxischar var = val;

double:

es un número de coma flotante de doble precisión

Sintaxis

double var = val;

float :
25

son datos para números de punto flotante, un número que tiene un punto decimal

los números de coma flotante se utilizan a menudo para aproximar valores analógicos y

continuos porque tienen mayor resolución que los números enteros.

Sintaxis

float var = val;

int

Los enteros son lo principal para el almacenamiento de números en Arduino

almacena valores de 16 bits

Sintaxis

int var = val;

long

Es un tipo de variable larga para el almacenamiento de números almacenan

tamaños de 32 bits (4 bytes), desde -2.147.483.648 hasta 2.147.483.647.

Sintaxis long var = val;

short :

es un dato corto de 16 bits en todos los Arduinos (basados en ATMega y ARM) un

dato short almacena un valor de 16 bits

Sintaxis
26

short var = val;

size_t:

size_t es capaz de representar el tamaño de cualquier objeto en bytes.

Sintaxis

size_t var = val;

string :

Las cadenas de texto se pueden representar de dos maneras.

Sintaxis

char Str1[15];

char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};

char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};

char Str4[] = "arduino";

char Str5[8] = "arduino";

char Str6[15] = "arduino";

String():

Crea una instancia de la clase String hay varias versiones que construyen

cadenas a partir de diferentes tipos de datos

Sintaxis

String(val)

String(val, base)

String(val, decimalPlaces)
27

unsigned char :

Es un tipo de dato sin firmar que ocupa 1 byte de memoria codifica números del 0

al 255.

Sintaxis

unsigned char var = val;

unsigned int :

Esta basado en atmega, los enteros sin firmar son los mismos en los que se

almacena un valor de 2 bytes solo almacenan valores positivos, lo que produce un rango

útil.

Syntaxis

unsigned int var = val;

unsigned long:

Las variables largas sin signo son variables de tamaño extendido para el

almacenamiento de números y almacenan 32 bits 4 bytes no almacenan números

negativos,

Sintaxis

unsigned long var = val;

void:

se usa solo en declaraciones de funciones Indica que se espera que la función no

devuelva información a la función desde la que se llamó.

Código de ejemplo
28

cómo usar void.

// actions are performed in the functions "setup" and "loop"

// but no information is reported to the larger program

void setup() {

// ...

void loop() {

// ...

word:

Una palabra que puede almacenar un número sin signo tiene al menos 16 bits

Sintaxis

word var = val;

Variable Scope & Qualifiers:

const

Es un calificador de variables que modifica el comportamiento de la variable,

haciendola una variable de solo lectura pero su valor no se puede cambiar tendremos un

error del compilador si intentamos asignar un valor a una variable constconst

const float pi = 3.14;

float x;

// ....

x = pi * 2; // it's fine to use consts in math

pi = 7; // illegal - you can't write to (modify) a constant


29

scope:

es una propiedad las variables en el lenguaje de programación C++, que utiliza

Arduino,

ejemplo

const float pi = 3.14;

float x;

// ....

x = pi * 2; // it's fine to use consts in math

pi = 7; // illegal - you can't write to (modify) a constant

for-loop.for

static:

se utiliza para crear variables que son visibles para una sola función las variables

estáticas persisten más allá de la llamada a la función, preservando sus datos entre las

llamadas a la función.static

volatile:

Es una palabra clave conocida como calificador de variables se utiliza antes del

tipo de dato de una variable para modificar la forma en que el compilador y el programa

posterior tratan la variable.

Sintaxis

const dataType variableName[] PROGMEM = {data0, data1, data3…};


30

PROGMEM:

almacena los datos en la memoria flash existe una descripción de los distintos

tipos de memoria disponibles en una placa Arduino es un modificador de variable, se tiene

que usar solo con los tipos de datos definidos en pgmspace.h. le dice al compilador

"ponga esta información en la memoria flash", en lugar de en sram, donde normalmente

iría.

Sintaxis

const dataType variableName[] progmem = {data0, data1, data3…};

sizeof():

es un operador que devuelve el número de bytes en un tipo de variable o el

número de bytes ocupados por una matriz.sizeof

Sintaxis

sizeof(variable)

Estructura:

Sketch

loop():

hace lo que dice su nombre y se repite consecutivamente, lo que permite que su

programa cambie y responda usado para controlar activamente al Arduino.

Código de ejemplo

int buttonPin = 3;

// setup initializes serial and the button pin

void setup() {

Serial.begin(9600);
31

pinMode(buttonPin, INPUT);

// loop checks the button pin each time,

// and will send serial if it is pressed

void loop() {

if (digitalRead(buttonPin) == HIGH) {

Serial.write('H');

else {

Serial.write('L');

delay(1000);

setup():

se utiliza para inicializar variables, modos de pin, comenzar a usar bibliotecas,

solo se ejecuta una vez, después de cada encendido o reinicio de la placa Arduino.

Código de ejemplo

int buttonPin = 3;

void setup() {

Serial.begin(9600);

pinMode(buttonPin, INPUT);

void loop() {

// ...

}
32

Control Structure

Break :

se utiliza para salir de un ciclo for, whileo do…whilede bucle, de una switch sin

pasar por la condición de bucle normal.

Código de ejemplo

int threshold = 40;

for (int x = 0; x < 255; x++) {

analogWrite(PWMpin, x);

sens = analogRead(sensorPin);

if (sens > threshold) { // bail out on sensor detect

x = 0;

break;

delay(50);

Continue:

Pasa por encima del resto de la iteración actual de un bucle ( for, whileo do…

while). continúa verificando la expresión condicional del bucle y procediendo con las

iteraciones posteriores.

Código de ejemplo

for (int x = 0; x <= 255; x ++) {

if (x > 40 && x < 120) { // create jump in values

continue;

}
33

analogWrite(PWMpin, x);

delay(50);

do...while:

El ciclo do…whilec funciona de la misma manera que el ciclo while, pero aqui la

condición se prueba al final del ciclo, por lo que el ciclo do siempre se ejecutará al menos

una vez.

Sintaxis

do {

// statement block

} while (condition);

else:

El ciclo if…else permite un mayor control sobre el código que el básico if, al

permitir múltiples pruebas para agruparse.

Sintaxis

if (condition1) {

// do Thing A

else if (condition2) {

// do Thing B

else {
34

// do Thing C

for:

el ciclo for se utiliza para repetir un bloque de declaraciones entre llaves. Por lo

general, se usa un contador de incrementos para incrementar y terminar el ciclo. es útil

para cualquier operación repetitiva

Sintaxis

for (initialization; condition; increment) {

// statement(s);

goto:

transfiere el flujo a un punto etiquetado en el programa

Sintaxis

label:

goto label; // sends program flow to the label

if:

el ciclo if busca una condición y ejecuta la siguiente declaración o conjunto de

declaraciones si la condición es 'verdadera'.

Sintaxis

if (condition) {

//statement(s)

}
35

return:

Termina una función y devuelve un valor a la función que llama

Sintaxis

return;

return value;

switch...case:

Al igual que if , switch case controla el flujo de programas al permitir a los

programadores especificar un código diferente que debe ejecutarse en diversas

condiciones. Siempre debe tener un punto de interrupción

Sintaxis

switch (var) {

case label1:

// statements

break;

case label2:

// statements

break;

default:

// statements

break;

while:

se repetirá de forma continua hasta que la expresión entre paréntesis () se vuelva

falsa. algo debe cambiar la variable probada, o el ciclo while nunca terminara.
36

Sintaxis

while (condition) {

// statement(s)

Syntaxis adicional

#define (define):

Define es un componente útil de C ++ que permite al programador dar un nombre

a un valor constante antes de compilar el programa sin embargo se pueden presentar

errores

Sintaxis

#define constantName value

#include (include):

se utiliza para incluir bibliotecas externas en el boceto. esto le da al programador

acceso a un gran grupo de bibliotecas estándar, no tiene un terminador de punto y coma,

y el compilador producirá mensajes de error crípticos si se agrega uno.

Sintaxis

#include <LibraryFile.h> #include "LocalFile.h"

/* */ (block comment):

son líneas que se utilizan para informar a otras personas sobre la forma en que

funciona el programa

{} (curly braces):

Se usa para finalizar una declaración.


37

Código de ejemplo

int a = 13;

Operadores aritméticos

% (resta):

calcula el resto cuando un entero se divide por otro. Es útil para mantener una

variable dentro de un rango particular

Sintaxis

remainder = dividend % divisor;

* (multiplicación):

es una de las cuatro operaciones aritméticas principales. el operador *(asterisco)

opera sobre dos operandos para dar como resultado el producto.

Sintaxis

product = operand1 * operand2;

+ (suma):

La suma es una de las principales operaciones aritméticas el operador + opera

sobre dos operandos para producir la suma.

Sintaxis

sum = operand1 + operand2;


38

- (resta): es otra de las principales operaciones aritméticas. el operador -(menos)

opera sobre dos operandos para producir la diferencia entre el segundo y el primero.

Sintaxis

difference = operand1 - operand2;

/ (división):

El operador /(barra) opera en dos operandos para producir el resultado.

Sintaxis

result = numerator / denominator;

= (operador de asignación:

Es el único signo igual = en el lenguaje C ++ se denomina operador de asignación

tiene un significado diferente al de álgebra donde indica una ecuación o igualdad el

operador de asignación le indica al microcontrolador que evalúe cualquier valor o

expresión que esté al lado derecho del signo igual y lo almacene en la variable a la

izquierda del signo igual.

ejemplo

int sensVal; // declare an integer variable named sensVal

sensVal = analogRead(0); // store the (digitized) input voltage at analog pin 0 in

SensVal

Operadores de comparación

!= (not equal to) :


39

Compara la variable de la izquierda con el valor o la variable de la derecha del

operador. devuelve verdadero cuando los dos operandos no son iguales

Sintaxis

x != y; // is false if x is equal to y and it is true if x is not equal to y

< (less than):

Compara la variable de la izquierda con el valor o la variable de la derecha del

operador devuelve verdadero cuando el operando de la izquierda es menor (más

pequeño) que el operando de la derecha.

Sintaxis

x < y; // is true if x is smaller than y and it is false if x is equal or bigger than y

<= (less than or equal to):

Compara la variable de la izquierda con el valor o la variable de la derecha del

operador devuelve verdadero cuando el operando de la izquierda es menor (más

pequeño) o igual que el operando de la derecha.

Sintaxis

x ⇐ y; // is true if x is smaller than or equal to y and it is false if x is greater than y

== (equal to):

Compara la variable de la izquierda con el valor o la variable de la derecha del

operador. devuelve verdadero cuando los dos operandos son iguales

Sintaxis

x == y; // is true if x is equal to y and it is false if x is not equal to y


40

> (greater than):

Compara la variable de la izquierda con el valor o la variable de la derecha del

operador. Devuelve verdadero cuando el operando de la izquierda es mayor (más grande)

que el operando de la derecha.

Sintaxis

x > y; // is true if x is bigger than y and it is false if x is equal or smaller than y

>= (greater than or equal to):

Compara la variable de la izquierda con el valor o la variable de la derecha del

operador. devuelve verdadero cuando el operando de la izquierda es mayor (mayor) o

igual que el operando de la derecha.

Sintaxis

x >= y; // is true if x is bigger than or equal to y and it is false if x is smaller than y

Operadores booleanos

! (no lógico):

El no lógico da como resultado un falso si el operando es falso y viceversa.

ejemplo

se puede utilizar dentro de la condición de una sentencia if .

if (!x) { // if x is not true

// statements

Puede usarse para invertir el valor booleano.


41

x = !y; // the inverted value of y is stored in x

&& (lógico y):

este da como resultado falso solo si ambos operandos son falsos.

Código de ejemplo

se puede utilizar dentro de la condición de una sentencia if .

if (digitalRead(2) == HIGH && digitalRead(3) == HIGH) { // if BOTH the switches

read HIGH

// statements

|| (lógico o):

OR lógico da como resultado a falso si alguno de los dos operandos es falso.

Código de ejemplo

dentro de la condición de una sentencia if .

if (x > 0 || y > 0) { // if either x or y is greater than zero

// statements

Pointer Access Operators

& (reference operator):

es una de las funciones que se utilizan específicamente con punteros

Código de ejemplo

int *p; // declare a pointer to an int data type


42

int i = 5;

int result = 0;

p = &i; // now 'p' contains the address of 'i'

result = *p; // 'result' gets the value at the address pointed by 'p'

// i.e., it gets the value of 'i' which is 5

* (dereference operator):

es una de las funciones que se utilizan unicamente con punteros el operador

asterisco *se utiliza para este propósito

Código de ejemplo

int *p; // declare a pointer to an int data type

int i = 5;

int result = 0;

p = &i; // now 'p' contains the address of 'i'

result = *p; // 'result' gets the value at the address pointed by 'p'

// i.e., it gets the value of 'i' which is 5

Operadores bit a bit

& (bit a bit y):

Se utiliza en c++, entre otras dos expresiones enteras. Bit a bit AND, opera en

cada posición de bit de las expresiones circundantes de forma independiente, de acuerdo

con esta regla si ambos bits de entrada son 1, la salida resultante es 1; de lo contrario, la

salida es 0

<< (desplazamiento de bits a la izquierda):

hace que los bits del operando de la izquierda se desplacen a la izquierda, el

número de posiciones es especificado por el operando de la derecha.


43

Sintaxis

variable << number_of_bits;

>> (desplazamiento de bits a la derecha):

hace que los bits del operando izquierdo se desplacen a la derecha el número de

posiciones especificado por el operando derecho.

Sintaxis

variable >> number_of_bits;

^ (xor bit a bit):

Es un operador algo inusual en C ++ llamado OR EXCLUSIVO bit a bit,conocido

como XOR bit a bit. el operador XOR bit a bit se escribe usando el símbolo de

intercalación ^. una operación XOR bit a bit da como resultado un 1 solo si los bits de

entrada son diferentes de lo contrario, da como resultado un 0

| (bit a bit o):

En c++ es el símbolo de barra vertical, |Como el operador &, | opera

independientemente de cada bit en sus dos expresiones enteras circundantes, pero lo que

hace es diferente OR bit a bit de dos bits es 1 si uno o ambos bits de entrada es 1; de lo

contrario, es 0.

~ (bit a bit no):

en C ++ es el carácter de tilde ~. el operador NOT bit a bit se aplica a un solo

operando a su derecha. cambia cada bit a su opuesto 0 se convierte en 1 y 1 se convierte

en 0.

Operadores compuestos

% = (resto compuesto):
44

es un método abreviado para calcular el resto cuando un entero se divide por otro

y lo asigna de nuevo a la variable en la que se realizó el cálculo.

Sintaxis

x %= divisor; // equivalent to the expression x = x % divisor;

& = (compuesto bit a bit y):

se usa con una variable y una constante para forzar bits particulares en una

variable al estado BAJO (a 0) esto se llama en las guías de programación como "borrar"

o "restablecer" bits.

* = (multiplicación compuesta):

Este es un método abreviado conveniente para realizar la multiplicación de una

variable con otra constante o variable.

Sintaxis

x *= y; // equivalent to the expression x = x * y;

++ (incremento):

Descripción

Incrementa el valor de una variable en 1.

Sintaxis

x++; // increment x by one and returns the old value of x

++x; // increment x by one and returns the new value of x


45

+ = (suma compuesta):

Este es un método abreviado conveniente para realizar la suma de una variable

con otra constante o variable.

Sintaxis

x += y; // equivalent to the expression x = x + y;

- (disminución):

Descripción

Disminuye el valor de una variable en 1.

Sintaxis

x--; // decrement x by one and returns the old value of x

--x; // decrement x by one and returns the new value of x

- = (resta compuesta):

es un método abreviado conveniente para realizar la resta de una constante o una

variable de una variable.

Sintaxis

x -= y; // equivalent to the expression x = x - y;


46

/ = (división compuesta):

es un método abreviado conveniente para realizar la división de una variable con

otra constante

Sintaxis

x /= y; // equivalent to the expression x = x / y;

^ = (compuesto bit a bit xor):

se usa con una variable y una constante para alternar o invertir bits particulares

en una variable.

Sintaxis

x ^= y; // equivalent to x = x ^ y;

| = (compuesto bit a bit o):

se usa con una variable y una constante para establecer en 1 bits particulares en

una variable.

Sintaxis

x |= y; // equivalent to x = x | y;

(arduino, 2021)

4. Programas y planos de Arduino que se desarrollen en clase.

Prender led intercalado tinkercad


47

Prender led intercalado proteus

Encendido aleatorio tinkercad


48

Encendido aleatorio proteus


49

Encender led 1 tinkercad

Encender led 1 proteus


50

También podría gustarte