Aca3 Circuitos
Aca3 Circuitos
int prenderled= 7;
int prenderled1= 8;
void setup() {
pinMode (prenderled,OUTPUT);
pinMode (prenderled1,OUTPUT);
}
void loop() {
digitalWrite (prenderled,HIGH);
delay (500);
digitalWrite (prenderled,LOW);
delay (500);
digitalWrite (prenderled1,HIGH);
delay (500);
digitalWrite (prenderled1,LOW);
delay (500);
}
-----------------------------------------------------------------------------------------------------------------
int encenderled= 4;
void setup() {
pinMode (encenderled,OUTPUT);
}
void loop() {
digitalWrite (encenderled,HIGH);
delay (500);
digitalWrite (encenderled,LOW);
delay (500);
}
--------------------------------------------------------------------------------------------
int prenderled= 7;
int prenderled1= 8;
void setup() {
pinMode (prenderled,OUTPUT);
pinMode (prenderled1,OUTPUT);
}
void loop() {
digitalWrite (prenderled,HIGH);
digitalWrite (prenderled1,HIGH);
delay (500);
digitalWrite (prenderled,LOW);
digitalWrite (prenderled1,LOW);
delay (500);
}
------------------------------------------------------------------------------------------------------------------
Estimados estudiantes, para la tercera entrega (ACA 3) se debe tener en cuenta los
siguiente.
1. Plano de la situación problema dé los tres dispositivos con compuertas lógicas trabajo
que se realiza en clase.
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
El lenguaje de programación Arduino se puede dividir en tres partes principales:
funciones, valores (variables y constantes) y estructura.
Funciones:
Controla Arduino y realizar cálculos digitales Descripción Lee el valor de un pin digital
especificado, ya sea o .HIGHLOW
Sintaxis
digitalRead(pin)
Parámetros
pin: el número de pin de Arduino que desea leer
Devuelve
HIGH o LOW
digitalWrite()
[E/S digital]
Descripción
Escriba un o un valor en un pin digital.HIGHLOW
Sintaxis
digitalWrite(pin, value)
pinMode()
[E/S digital]
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)
E/S analógicasanalogRead()
[E/S analógicas]
Descripción
Lee el valor del pin analógico especificado. Las placas Arduino contienen un convertidor
analógico a digital multicanal de 10 bits. Esto significa que asignará voltajes de entrada
entre 0 y el voltaje de funcionamiento (5V o 3.3V) en valores enteros entre 0 y 1023. En
un Arduino UNO, por ejemplo, esto produce una resolución entre lecturas de: 5 voltios /
1024 unidades o, 0.0049 voltios (4.9 mV) por unidad. Consulte la tabla a continuación
para conocer los pines utilizables, el voltaje de funcionamiento y la resolución máxima
para algunas placas Arduino.
En las placas basadas en ATmega (UNO, Nano, Mini, Mega), se necesitan unos 100
microsegundos (0,0001 s) para leer una entrada analógica, por lo que la velocidad
máxima de lectura es de aproximadamente 10.000 veces por segundo
Sintaxis
analogRead(pin)
analogReference()
[E/S analógicas]
Descripción
Configura el voltaje de referencia utilizado para la entrada analógica (es decir, el valor
utilizado como la parte superior del rango de entrada). Las opciones son:
EXTERNO: se utiliza como referencia la tensión aplicada al pin AREF (solo de 0 a 5V).
Sintaxis
analogReference(type)
analogWrite()
[E/S analógicas]
Descripción
Escribe un valor analógico(onda PWM)en un pin. 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:
analogReadResolution()
[Familia Zero, Due & MKR]
Descripción
analogReadResolution() es una extensión de la API analógica para la familia Zero, Due,
MKR, Nano 33 (BLE e IoT) y Portenta.
Establece el tamaño (en bits) del valor devuelto por . El valor predeterminado es de 10
bits (devuelve valores entre 0-1023) para la compatibilidad con versiones anteriores de
placas basadas en AVR.analogRead()
Las placas Zero, Due, MKR family y Nano 33 (BLE e IoT) tienen capacidades ADC de 12
bits a las que se puede acceder cambiando la resolución a 12. Esto devolverá valores de
entre 0 y 4095.
El Portenta H7 tiene un ADC de 16 bits, que permitirá valores entre 0 y
65535.analogRead()
Sintaxis
analogReadResolution(bits)
analogWriteResolution()
[Familia Zero, Due & MKR]
Descripción
analogWriteResolution() es una extensión de la API analógica para Arduino Due.
12 pines que por defecto son PWM de 8 bits, como las placas basadas en AVR. Estos se
pueden cambiar a una resolución de 12 bits.
10 pines que por defecto son PWM de 8 bits, como las placas basadas en AVR. Estos se
pueden cambiar a una resolución de 12 bits.
Al establecer la resolución de escritura en 10, puede usar con valores entre 0 y 1023
para aprovechar la resolución DAC completaanalogWrite()
4 pines que por defecto son PWM de 8 bits, como las placas basadas en AVR. Estos se
pueden cambiar de 8 (predeterminado) a 12 bits de resolución.
Al establecer la resolución de escritura en 12 bits, puede usar con valores entre 0 y 4095
para señales PWM; establezca 10 bits en el pin DAC para aprovechar la resolución DAC
completa de 1024 valores.analogWrite()
Sintaxis
analogWriteResolution(bits)
E/S avanzadas:
noTone()
[E/S avanzadas]
Descripción
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()
[E/S avanzadas]
Descripción
Lee un pulso (ya sea o ) en un alfiler. Por ejemplo, si es , espera a que el pin vaya de a ,
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.HIGHLOWvalueHIGHpulseIn()LOWHIGHLOW
Nota
si se utiliza el tiempo de espera opcional, el código se ejecutará más rápido.
Sintaxis
pulseIn(pin, value)
pulseIn(pin, value, timeout)
pulseInLong()
[E/S avanzadas]
Descripción
pulseInLong() es una alternativa a pulseIn() que es mejor para manejar escenarios
afectados por pulsos largos e interrupciones.
Lee un pulso (ya sea o ) en un alfiler. Por ejemplo, si es , espera a que el pin vaya de a ,
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.HIGHLOWvalueHIGHpulseInLong()LOWHIGHLOW
Sintaxis
pulseInLong(pin, value)
pulseInLong(pin, value, timeout)
shiftIn()
[E/S avanzadas]
Descripción
Cambia 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). Para cada bit, el pin del reloj se
tira alto, el siguiente bit se lee desde la línea de datos y luego el pin del reloj se toma
bajo.
Si está interactuando con un dispositivo que está marcado por bordes ascendentes,
deberá asegurarse de que el pin del reloj esté bajo antes de la primera llamada a , por
ejemplo, con una llamada a .shiftIn()digitalWrite(clockPin, LOW)
Nota: esta es una implementación de software; Arduino también 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)
shiftOut()
[E/S avanzadas]
Descripción
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.
Nota: si está interactuando con un dispositivo que está marcado por bordes
ascendentes, deberá asegurarse de que el pin del reloj esté bajo antes de la llamada a ,
por ejemplo, con una llamada a .shiftOut()digitalWrite(clockPin, LOW)
Sintaxis
shiftOut(dataPin, clockPin, bitOrder, value)
tono()
[E/S avanzadas]
Descripción
Genera una onda cuadrada de la frecuencia especificada (y un ciclo de trabajo del 50%)
en un pin. Se puede especificar una duración, de lo contrario la onda continúa hasta una
llamada a noTone(). El pin se puede conectar a un timbre piezoeléctrico u otro altavoz
para reproducir tonos.
El uso de la función interferirá con la salida PWM en los pines 3 y 11 (en placas que no
sean mega).tone()
No es posible generar tonos inferiores a 31Hz. Para más detalles técnicos, véanse las
notas de Brett Hagman.
Sintaxis
tone(pin, frequency)
tone(pin, frequency, duration)
Hora
delay()
[Tiempo]
Descripción
Pausa el programa durante la cantidad de tiempo (en milisegundos) especificada como
parámetro. (Hay 1000 milisegundos en un segundo).
Sintaxis
delay(ms)
delayMicroseconds()
[Tiempo]
Descripción
Pausa el programa durante la cantidad de tiempo (en microsegundos) especificada por
el parámetro. Hay mil microsegundos en un milisegundo y un millón de microsegundos
en un segundo.
Actualmente, el mayor valor que producirá un retraso preciso es 16383; los valores más
grandes pueden producir un retraso extremadamente corto. Esto podría cambiar en
futuras versiones de Arduino. Para retrasos de más de unos pocos miles de
microsegundos, debe usar en su lugar.delay()
Sintaxis
delayMicroseconds(us)
micros()
[Tiempo]
Descripción
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. En placas Arduino de 16
MHz (por ejemplo, Duemilanove y Nano), esta función tiene una resolución de cuatro
microsegundos (es decir, el valor devuelto es siempre un múltiplo de cuatro). En las
placas Arduino de 8 MHz (por ejemplo, el LilyPad), esta función tiene una resolución de
ocho microsegundos.
Sintaxis
time = micros()
millis()
[Tiempo]
Descripción
Devuelve el número de milisegundos pasados desde que la placa Arduino comenzó a
ejecutar el programa actual. Este número se desbordará (volverá a cero), después de
aproximadamente 50 días.
Sintaxis
time = millis()
Matemática:
Descripción
Calcula el valor absoluto de un número.
Sintaxis
abs(x)
constrain()
[Matemáticas]
Descripción
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
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()
[Matemáticas]
Descripción
Calcula el máximo de dos números.
Sintaxis
max(x, y)
min()
[Matemáticas]
Descripción
Calcula el mínimo de dos números.
Sintaxis
min(x, y)
pow()
[Matemáticas]
Descripción
Calcula el valor de un número elevado a una potencia. se puede usar para elevar un
número a una potencia fraccionaria. Esto es útil para generar un mapeo exponencial de
valores o curvas.pow()
Sintaxis
pow(base, exponent)
sq()
[Matemáticas]
Descripción
Calcula el cuadrado de un número: el número multiplicado por sí mismo.
Sintaxis
sq(x)
sqrt()
[Matemáticas]
Calcula la raíz cuadrada de un número.
Descripción
Sintaxis
sqrt(x)
Trigonometría:
cos()
[Trigonometría]
Descripción
Calcula el coseno de un ángulo (en radianes). El resultado será entre -1 y 1.
Sintaxis
cos(rad)
pecado()
[Trigonometría]
Descripción
Calcula el seno de un ángulo (en radianes). El resultado será entre -1 y 1.
Sintaxis
sin(rad)
Descripción
Calcula la tangente de un ángulo (en radianes). El resultado será entre infinito negativo
e infinito.
Sintaxis
tan(rad)
Caracteres
Descripción
Analiza si un char es alfa (es decir, una letra). Devuelve true si thisChar contiene una
letra.
Sintaxis
isAlpha(thisChar)
isAlphaNumeric():
[Personajes]
Descripción
Analice si un char es alfanumérico (es decir, una letra o un número). Devuelve true si
thisChar contiene un número o una letra.
Sintaxis
isAlphaNumeric(thisChar)
isAscii()
[Personajes]
Descripción
Analiza si un char es Ascii. Devuelve true si thisChar contiene un carácter Ascii.
Sintaxis
isAscii(thisChar)
isControl()
[Personajes]
Descripción
Analice si un char es un carácter de control. Devuelve true si thisChar es un carácter de
control.
Sintaxis
isControl(thisChar)
isDigit():
[Personajes]
Descripción
Analice si un char es un dígito (es decir, un número). Devuelve true si thisChar es un
número.
Sintaxis
isDigit(thisChar)
isGraph()
[Personajes]
Descripción
Analice 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()
[Personajes]
Descripción
Analice si un char es un dígito hexadecimal (A-F, 0-9). Devuelve true si thisChar contiene
un dígito hexadecimal.
Sintaxis
isHexadecimalDigit(thisChar)
isLowerCase()
[Personajes]
Descripción
Analiza si un char es minúscula (es decir, una letra en minúsculas). Devuelve true si
thisChar contiene una letra en minúsculas.
Sintaxis
isLowerCase(thisChar)
isPrintable()
[Personajes]
Descripción
Analice si un char es imprimible (es decir, cualquier carácter que produzca una salida,
incluso un espacio en blanco). Devuelve true si thisChar es imprimible.
Sintaxis
isPrintable(thisChar)
isPunct()
[Personajes]
Descripción
Analice si un carácter es puntuación (es decir, una coma, un punto y coma, un signo de
exclamación, etc.). Devuelve true si thisChar es puntuación.
Sintaxis
isPunct(thisChar)
isSpace()
[Personajes]
Descripción
Analice si un carácter de espacio en blanco es un carácter de espacio en blanco.
Devuelve true si el argumento es un espacio, una fuente de formulario (), una nueva
línea (), un retorno de carro (), una ficha horizontal () o una ficha vertical
().'\f''\n''\r''\t''\v'
Sintaxis
isSpace(thisChar)
isUpperCase()
[Personajes]
Descripción
Analiza si un char es mayúscula (es decir, una letra en mayúsculas). Devuelve true si
thisChar está en mayúsculas.
Sintaxis
isUpperCase(thisChar)
Números aleatorios
aleatorio()
[Números aleatorios]
Descripción
La función aleatoria genera números pseudoaleatorios.
Sintaxis
random(max)
random(min, max)
randomSeed()
[Números aleatorios]
Descripción
randomSeed() inicializa el generador de números pseudoaleatorios, haciendo que
comience en un punto arbitrario de su secuencia aleatoria. Esta secuencia, aunque muy
larga y aleatoria, es siempre la misma.
Por el contrario, ocasionalmente puede ser útil usar secuencias pseudoaleatorios que se
repiten exactamente. Esto se puede lograr llamando con un número fijo, antes de
comenzar la secuencia aleatoria.randomSeed()
Sintaxis
randomSeed(seed)
Bits y bytes
bit()
[Bits y bytes]
Descripción
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()
[Bits y bytes]
Descripción
Borra (escribe un 0 en) un bit de una variable numérica.
Sintaxis
bitClear(x, n)
bitRead()
[Bits y bytes]
Descripción
Lee un poco de un número.
Sintaxis
bitRead(x, n)
bitSet()
[Bits y bytes]
Descripción
Establece (escribe un 1 en) un bit de una variable numérica.
Sintaxis
bitSet(x, n)
bitWrite()
[Bits y bytes]
Descripción
Sintaxis
bitWrite(x, n, b)
highByte()
[Bits y bytes]
Descripción
Extrae el byte de orden alto (el más a la izquierda) de una palabra (o el segundo byte
más bajo de un tipo de datos más grande).
Sintaxis
highByte(x)
Interrupciones externas
attachInterrupt()
[Interrupciones externas]
Descripción
Pines digitales con interrupciones
Sintaxis
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) (recomendado)
(no recomendado)
(No recomendado. Además, esta sintaxis solo funciona en placas SAMD Arduino, Uno WiFi
Rev2, Due y 101).attachInterrupt(interrupt, ISR, mode)attachInterrupt(pin, ISR, mode)
noInterrupciones()
[Interrupciones]
Descripción
Deshabilita las interrupciones (puede volver a habilitarlas con ). Las interrupciones
permiten que ciertas tareas importantes ocurran en segundo plano y están habilitadas de
forma predeterminada. Algunas funciones no funcionarán mientras las interrupciones
estén deshabilitadas y es posible que se ignore la comunicación entrante. Sin embargo, las
interrupciones pueden interrumpir ligeramente el tiempo del código y pueden
deshabilitarse para secciones de código particularmente críticas.interrupts()
Sintaxis
noInterrupts()
Comunicación
Descripción
Se utiliza para la comunicación entre la placa Arduino y una computadora u otros
dispositivos. Todas las placas Arduino tienen al menos un puerto serie (también
conocido como UART o USART), y algunas tienen varios.
USB
Descripción
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
[USB]
Descripció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. Al actualizar la posición del cursor, siempre es relativa a la ubicación anterior
del cursor.
Variables
Constantes
Tipos de datos y constantes de Arduino.
constantes
[Constantes]
Descripción
Las constantes son expresiones predefinidas en el lenguaje Arduino. Se utilizan para hacer
que los programas sean más fáciles de leer. Clasificamos las constantes en grupos:
falso
false es el más fácil de definir de los dos. false se define como 0 (cero).
verdadero
true a menudo se dice que se define como 1, lo cual es correcto, pero el verdadero tiene
una definición más amplia. Cualquier entero que no sea cero es verdadero, en un sentido
booleano. Así que -1, 2 y -200 también se definen como verdaderos, en un sentido
booleano.
Código de ejemplo
n = 0.005; // 0.005 is a floating point constant
Constantes enteras
[Constantes]
Descripción
Las constantes enteras son números que se usan directamente en un boceto, como 123.
De forma predeterminada, estos números se tratan como int, pero puede cambiar esto
con los modificadores you y L (consulte a continuación).
Normalmente, las constantes enteras se tratan como enteros de base 10 (decimales), pero
se puede usar notación especial (formateador) para ingresar números en otras bases.
Conversión
(sin firmar int)
[Conversión]
Descripción
Convierte un valor en el tipo de datos.unsigned int
Sintaxis
(unsigned int)x
Descripción
Convierte un valor en el tipo de datos.unsigned long
Sintaxis
(unsigned long)x
byte():
[Conversión]
Descripción
Convierte un valor en el tipo de datos.byte
Sintaxis
byte(x)
(byte)x (Conversión de tipo estilo C)
char()
[Conversión]
Descripción
Convierte un valor en el tipo de datos.char
Sintaxis
char(x)
(char)x (Conversión de tipo estilo C)
float()
[Conversión]
Descripción
Convierte un valor en el tipo de datos.float
Sintaxis
float(x)
(float)x (Conversión de tipo estilo C)
int()
[Conversión]
Descripción
Convierte un valor en el tipo de datos.int
Sintaxis
int(x)
(int)x (Conversión de tipo estilo C)
long()
[Conversión]
Descripción
Convierte un valor en el tipo de datos.long
Sintaxis
long(x)
(long)x (Conversión de tipo estilo C)
palabra()
[Conversión]
Descripción
Convierte un valor en el tipo de datos.word
Sintaxis
word(x)
word(h, l)
(word)x (Conversión de tipo estilo C)
arreglo
[Tipos de datos]
Descripción
Una matriz es una colección de variables a las que se accede con un número de índice.
Las matrices en el lenguaje de programación C ++ en el que se escriben los bocetos de
Arduino pueden ser complicadas, pero el uso de matrices simples es relativamente
sencillo.
bool
[Tipos de datos]
Descripción
A contiene uno de dos valores, o . (Cada variable ocupa un byte de
memoria.)booltruefalsebool
Sintaxis
bool var = val;
booleano
[Tipos de datos]
Descripción
boolean es un alias de tipo no estándar definido por Arduino. Se recomienda en su lugar
utilizar el tipo estándar bool, que es idéntico.bool
byte
[Tipos de datos]
Descripción
Un byte almacena un número sin firmar de 8 bits, de 0 a 255.
Sintaxis
byte var = val;
Sin embargo, los caracteres se almacenan como números. Puede ver la codificación
específica en el gráfico ASCII. Esto significa que es posible hacer aritmética sobre
caracteres, en la que se utiliza el valor ASCII del carácter (por ejemplo, 'A' + 1 tiene el
valor 66, ya que el valor ASCII de la letra mayúscula A es 65). Consulte la referencia para
obtener más información sobre cómo se traducen los caracteres en
números.Serial.println
El tamaño del tipo de datos es de al menos 8 bits. Se recomienda usarlo solo para
almacenar caracteres. Para un tipo de datos sin firmar, de un byte (8 bits), utilice el tipo
de datos.charcharbyte
Sintaxis
char var = val;
doble
[Tipos de datos]
Descripción
Número de coma flotante de doble precisión. En uno y otras placas basadas en
ATMEGA, esto ocupa 4 bytes. Es decir, la doble implementación es exactamente la
misma que la flotador, sin ganancia de precisión.
En el Arduino Due, los dobles tienen una precisión de 8 bytes (64 bits).
Sintaxis
double var = val;
float
int
Descripción
Los enteros son el tipo de datos principal para el almacenamiento de números.
En Arduino Uno (y otras placas basadas en ATmega) un int almacena un valor de 16 bits
(2 bytes). Esto produce un rango de -32,768 a 32,767 (valor mínimo de -2^15 y un valor
máximo de (2^15) - 1). En las placas basadas en Arduino Due y SAMD (como MKR1000 y
Zero), un int almacena un valor de 32 bits (4 bytes). Esto arroja un rango de
-2,147,483,648 a 2,147,483,647 (valor mínimo de -2^31 y un valor máximo de (2^31) - 1).
int's almacena números negativos con una técnica llamada (2's complement math). El
bit más alto, a veces denominado bit "signo", marca el número como un número
negativo. El resto de los bits se invierten y se añade 1.
El Arduino se encarga de lidiar con los números negativos por usted, para que las
operaciones aritméticas funcionen de manera transparente de la manera esperada. Sin
embargo, puede haber una complicación inesperada al tratar con el operador derecho
de desplazamiento de bits ().>>
Sintaxis
long
Descripción
Las variables largas son variables de tamaño extendido para el almacenamiento de
números y almacenan 32 bits (4 bytes), desde -2.147.483.648 hasta 2.147.483.647.
Si haciendo matemáticas con enteros al menos uno de los valores debe ser de tipo largo,
ya sea una constante entera seguida de una L o una variable de tipo largo, forzándola a
ser larga. Consulte la página Constantes enteras para obtener más información.
Sintaxis
long var = val;
short
Descripción
Un corto es un tipo de datos de 16 bits.
Sintaxis
short var = val;
size_t
size_t
[Tipos de datos]
Descripción
size_t es un tipo de datos capaz de representar el tamaño de cualquier objeto en bytes.
Ejemplos del uso de son el tipo de retorno de y .size_tsizeof()Serial.print()
Sintaxis
size_t var = val;
string
Descripción
Las cadenas de texto se pueden representar de dos maneras. puede utilizar el tipo de
datos String, que forma parte del núcleo a partir de la versión 0019, o puede hacer una
cadena a partir de una matriz de tipo char y terminarla en null. En esta página se
describe este último método. Para obtener más información sobre el objeto String, que
proporciona más funcionalidad a costa de más memoria, consulte la página objeto
String.
Sintaxis
Todas las siguientes son declaraciones válidas para cadenas.
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()
String()
[Tipos de datos]
Descripción
Construye una instancia de la clase String. Hay varias versiones que construyen cadenas
a partir de diferentes tipos de datos (es decir, formatearlas como secuencias de
caracteres), que incluyen:
una cadena constante de caracteres, entre comillas dobles (es decir, una matriz de
caracteres)
Sintaxis
String(val)
String(val, base)
String(val, decimalPlaces)
unsigned char
Descripción
Tipo de datos sin firmar que ocupa 1 byte de memoria. Igual que el tipo de datos.byte
Sintaxis
unsigned char var = val;
unsigned int
palabra larga
vacía
sin firmar
const
onst
[Alcance variable y calificadores]
Descripción
La palabra clave significa constante. Es un calificador de variables que modifica el
comportamiento de la variable, haciendo una variable "de solo lectura". Esto significa
que la variable se puede usar como cualquier otra variable de su tipo, pero su valor no
se puede cambiar. Obtendrá un error del compilador si intenta asignar un valor a una
variable.constconst
Las constantes definidas con la palabra clave obedecen a las reglas de alcance de
variables que gobiernan otras variables. Esto, y las trampas del uso, hacen que la
palabra clave sea un método superior para definir constantes y se prefiere a usar
#define.const#definecons
scope
Descripción
Las variables en el lenguaje de programación C++, que utiliza Arduino, tienen una
propiedad llamada scope. Esto contrasta con las primeras versiones de lenguajes como
BASIC, donde cada variable es una variable global.
Una variable global es aquella que puede ser vista por cada función en un programa. Las
variables locales solo son visibles para la función en la que se declaran. En el entorno de
Arduino, cualquier variable declarada fuera de una función (por ejemplo, , , etc.), es una
variable global.setup()loop()
Cuando los programas comienzan a ser más grandes y complejos, las variables locales
son una forma útil de asegurar que solo una función tenga acceso a sus propias
variables. Esto evita errores de programación cuando una función modifica
inadvertidamente las variables utilizadas por otra función.
A veces también es útil declarar e inicializar una variable dentro de un bucle. Esto crea
una variable a la que solo se puede acceder desde el interior de los corchetes for-
loop.for
Estático
escripción
La palabra clave se utiliza para crear variables que son visibles para una sola función. Sin
embargo, a diferencia de las variables locales que se crean y destruyen cada vez que se
llama a una 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
Las variables declaradas como estáticas solo se crearán e inicializarán la primera vez que
se llame a una función.
volátil
Descripción
volatile es una palabra clave conocida como calificador devariables, se suele utilizar
antes del tipo de datos de una variable, para modificar la forma en que el compilador y
el programa posterior tratan la variable.
Utilidades:
PROGMEM
Descripción
Almacene los datos en memoria flash (de programa) en lugar de SRAM. Hay una
descripción de los diversos tipos de memoria disponibles en una placa Arduino.
La palabra clave es un modificador de variables, debe usarse 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.PROGMEM
Sintaxis
const dataType variableName[] PROGMEM = {data0, data1, data3…};
sizeof()
sizeof()
[Utilidades]
Descripción
El operador 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
Bosquejo
loop()
bucle()
[Boceto]
Descripción
Después de crear una función, que inicializa y establece los valores iniciales, la función
hace exactamente lo que su nombre sugiere, y se repite consecutivamente, lo que
permite que su programa cambie y responda. Úselo para controlar activamente la placa
Arduino.setup()loop()
Código de ejemplo
int buttonPin = 3;
delay(1000);
}
setup()
setup()
[Boceto]
Descripción
Se llama a la función cuando se inicia un boceto. Úselo para inicializar variables, modos
de anclaje, comenzar a usar bibliotecas, etc. La función solo se ejecutará una vez,
después de cada encendido o reinicio de la placa Arduino.setup()setup()
Código de ejemplo
int buttonPin = 3;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
void loop() {
// ...
}
Estructura de control:
descanso
Descripción
break se utiliza para salir de un , bucle, evitando la condición de bucle normal. También se
utiliza para salir de una declaración.forwhiledo…whileswitch case
Código de ejemplo
En el código siguiente, el control sale del bucle for cuando el valor del sensor supera el
umbral.
Código de ejemplo
El código siguiente escribe el valor de 0 a 255 en el , pero omite los valores en el rango de
41 a 119.PWMpin
for (int x = 0; x <= 255; x ++) {
if (x > 40 && x < 120) { // create jump in values
continue;
}
analogWrite(PWMpin, x);
delay(50);
}
hacer... mientras que
Descripción
El bucle funciona de la misma manera que el bucle, con la excepción de que la condición
se prueba al final del bucle, por lo que el bucle do siempre se ejecutará al menos una
vez.do…whilewhile
Sintaxis
do {
// statement block
} while (condition);
Parámetros
condition: una expresión booleana que evalúa a o .truefalse
Código de ejemplo
int x = 0;
do {
delay(50); // wait for sensors to stabilize
x = readSensors(); // check the sensors
} while (x < 100);
de lo contrario:
Descripción
Permite un mayor control sobre el flujo de código que la instrucción básica, al permitir
que se agrupon múltiples pruebas. Se ejecutará una cláusula (si es que existe) si la
condición de la instrucción da como resultado . Puede proceder a otra prueba, de modo
que se puedan ejecutar múltiples pruebas mutuamente excluyentes al mismo
tiempo.if…elseifelseiffalseelseif
Cada prueba pasará a la siguiente hasta que se encuentre una prueba verdadera.
Cuando se encuentra una prueba verdadera, se ejecuta su bloque de código asociado y,
a continuación, el programa salta a la línea que sigue toda la construcción if/else. Si
ninguna prueba resulta ser verdadera, se ejecuta el bloque predeterminado, si hay uno
presente, y se establece el comportamiento predeterminado.else
Tenga en cuenta que un bloque se puede utilizar con o sin un bloque de terminación y
viceversa. Se permite un número ilimitado de tales sucursales.else ifelseelse if
Sintaxis
if (condition1) {
// do Thing A
}
else if (condition2) {
// do Thing B
}
else {
// do Thing C
}
para :
Descripción
La instrucción se utiliza para repetir un bloque de instrucciones encerradas en llaves
rizadas. Por lo general, se utiliza un contador de incrementos para incrementar y
finalizar el bucle. La instrucción es útil para cualquier operación repetitiva y a menudo se
usa en combinación con matrices para operar en colecciones de datos / pines.forfor
Sintaxis
for (initialization; condition; increment) {
// statement(s);
}
goto:
Descripción
Transfiere el flujo del programa a un punto etiquetado en el programa
Sintaxis
label:
Sintaxis
return;
return value;
si
[Estructura de control]
Descripción
La instrucción comprueba si hay una condición y ejecuta la siguiente instrucción o
conjunto de instrucciones si la condición es "true".if
Sintaxis
if (condition) {
//statement(s)
}
Sintaxis adicional
#define (definir)
escripción
#define es un componente útil de C++ que permite al programador dar un nombre a un
valor constante antes de compilar el programa. Las constantes definidas en arduino no
ocupan ningún espacio de memoria de programa en el chip. El compilador reemplazará
las referencias a estas constantes con el valor definido en tiempo de compilación.
Sin embargo, esto puede tener algunos efectos secundarios no deseados, si, por
ejemplo, un nombre constante que se había #defined se incluye en algún otro nombre
de constante o variable. En ese caso, el texto se sustituiría por el número (o texto)
#defined.
En general, la palabra clave se prefiere para definir constantes y debe usarse en lugar
de .const#define
Sintaxis
#define constantName value
#include (incluir)
Descripción
#include se utiliza para incluir bibliotecas externas en el boceto. Esto le da al
programador acceso a un gran grupo de bibliotecas C estándar (grupos de funciones pre-
hechas), y también bibliotecas escritas especialmente para Arduino.
La página de referencia principal para las bibliotecas AVR C (AVR es una referencia a los
chips Atmel en los que se basa el Arduino) está aquí.
Sintaxis
#include <LibraryFile.h>
#include "LocalFile.h"
/* */ (bloquear comentario)
Descripción
Los comentarios son líneas en el programa que se utilizan para informarse a sí mismo o
a otros sobre la forma en que funciona el programa. El compilador los ignora y no se
exportan al procesador, por lo que no ocupan ningún espacio en la memoria flash del
microcontrolador. El único propósito de los comentarios es ayudarlo a comprender (o
recordar), o informar a otros sobre cómo funciona su programa.
Un comentario de una sola línea comienza con (dos barras diagonales adyacentes). Este
comentario termina automáticamente al final de una línea. Lo que siga hasta el final de
una línea será ignorado por el compilador.////
; (punto y coma)
{} (brackets rizados)
Operadores aritméticos
% (resto)
Descripción
La operación Remanente calcula el resto cuando un entero se divide por otro. Es útil
para mantener una variable dentro de un rango particular (por ejemplo, el tamaño de
una matriz). El símbolo (porcentaje) se utiliza para llevar a cabo la operación de
remanente.%
Sintaxis
remainder = dividend % divisor;
* (multiplicación)
Descripción
La multiplicación es una de las cuatro operaciones aritméticas primarias. El operador
(asterisco) opera sobre dos operandos para producir el producto.*
Sintaxis
product = operand1 * operand2;
+ (suma)
Descripción
La suma es una de las cuatro operaciones aritméticas primarias. El operador (más) opera
en dos operandos para producir la suma.+
Sintaxis
sum = operand1 + operand2;
- (resta)
Descripción
La resta es una de las cuatro operaciones aritméticas primarias. El operador (menos)
opera en dos operandos para producir la diferencia del segundo del primero.-
Sintaxis
difference = operand1 - operand2;
/ (división)
Descripción
La división es una de las cuatro operaciones aritméticas primarias. El operador (barra)
opera en dos operandos para producir el resultado./
Sintaxis
result = numerator / denominator;
= (operador de asignación)
escripción
El signo igual único en el lenguaje de programación C++ se denomina operador de
asignación. Tiene un significado diferente al de la clase de álgebra donde indicaba una
ecuación o igualdad. El operador de asignación le dice al microcontrolador que evalúe
cualquier valor o expresión que se encuentra en el lado derecho del signo igual y lo
almacene en la variable a la izquierda del signo igual.=
Operadores de comparación:
!= (no igual a)
escripción
Compara la variable de la izquierda con el valor o variable de la derecha del operador.
Devuelve true cuando los dos operandos no son iguales. Tenga en cuenta que puede
comparar variables de diferentes tipos de datos, pero eso podría generar resultados
impredecibles, por lo tanto, se recomienda comparar variables del mismo tipo de datos,
incluido el tipo firmado / no firmado.
Sintaxis
x != y; // is false if x is equal to y and it is true if x is not equal to y
Sintaxis
x < y; // is true if x is smaller than y and it is false if x is equal or bigger than y
Sintaxis
x ⇐ y; // is true if x is smaller than or equal to y and it is false if x is greater than y
== (igual a)
Descripción
Compara la variable de la izquierda con el valor o variable de la derecha del operador.
Devuelve true cuando los dos operandos son iguales. Tenga en cuenta que puede
comparar variables de diferentes tipos de datos, pero eso podría generar resultados
impredecibles, por lo tanto, se recomienda comparar variables del mismo tipo de datos,
incluido el tipo firmado / no firmado.
Sintaxis
x == y; // is true if x is equal to y and it is false if x is not equal to y
Sintaxis
x > y; // is true if x is bigger than y and it is false if x is equal or smaller than y
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:
! (lógico no)
El NO lógico resulta en un si el operando es y viceversa.truefalse
Código de ejemplo
Este operador se puede utilizar dentro de la condición de una instrucción if.
&& (lógico y)
Descripción
Logical AND resulta en sólo si ambos operandos son .truetrue
Código de ejemplo
Este operador se puede utilizar dentro de la condición de una instrucción if.
Código de ejemplo
Este operador se puede utilizar dentro de la condición de una instrucción if.
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 (operador
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 Bitwise:
& (bitwise y)
Descripción
El operador bitwise AND en C++ es un solo ampersand , usado entre otras dos
expresiones enteras. Bitwise 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.&
<< (bitshift left)
El operador de desplazamiento a la izquierda hace que los bits del operando izquierdo
se desplazquen a la izquierda por el número de posiciones especificadas por el operando
derecho.<<
Sintaxis
variable << number_of_bits;
>> (bitshift right)
escripción
El operador de desplazamiento a la derecha hace que los bits del operando izquierdo se
desplazquen a la derecha por el número de posiciones especificadas por el operando
derecho.>>
Sintaxis
variable >> number_of_bits;
^ (bitwise xor)
Descripción
Hay un operador algo inusual en C ++ llamado bitwise EXCLUSIVE OR, también conocido
como bitwise XOR. (En inglés esto generalmente se pronuncia "eks-or".) El operador
XOR bitwise se escribe usando el símbolo de caret . Una operación XOR bitwise da como
resultado un 1 solo si los bits de entrada son diferentes, de lo contrario da como
resultado un 0.^
| (bitwise o)
Descripción
El operador OR bitwise en C++ es el símbolo de barra vertical, |. Al igual que el &
operador, | opera independientemente cada bit en sus dos expresiones enteras
circundantes, pero lo que hace es diferente (por supuesto). El OR bitwise de dos bits es 1
si uno o ambos bits de entrada es 1, de lo contrario es 0.
~ (bitwise no)
Descripción
El operador NOT bitwise en C++ es el carácter tilde . A diferencia de & y |, el operador
BITWISE NOT se aplica a un solo operando a su derecha. Bitwise NO cambia cada bit a su
opuesto: 0 se convierte en 1 y 1 se convierte en 0.~
Operadores compuestos:
%= (resto compuesto)
Descripción
Esta es una abreviatura conveniente para calcular el resto cuando un entero se divide
por otro y asignarlo de nuevo a la variable en la que se realizó el cálculo.
Sintaxis
x %= divisor; // equivalent to the expression x = x % divisor;
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
+= (suma compuesta)
Descripción
Esta es una abreviatura conveniente para realizar la adición en una variable con otra
constante o variable.
Sintaxis
x += y; // equivalent to the expression x = x + y;
-- (decremento)
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)
Descripción
Esta es una abreviatura conveniente para realizar la resta de una constante o una
variable de una variable.
Sintaxis
x -= y; // equivalent to the expression x = x - y;
/= (división compuesta)
Descripción
Esta es una taquigrafía conveniente para realizar la división de una variable con otra
constante o variable.
Sintaxis
x /= y; // equivalent to the expression x = x / y;
0 0 1 1 operand1
0 1 0 1 operand2
----------
0 1 1 0 (operand1 ^ operand2) - returned result
Sintaxis
x ^= y; // equivalent to x = x ^ y;
|= (compuesto bitwise o)
Descripción
El operador OR bitwise compuesto se usa a menudo con una variable y una constante
para "establecer" (establecer en 1) bits particulares en una variable.|=
0 0 1 1 operand1
0 1 0 1 operand2
----------
0 1 1 1 (operand1 | operand2) - returned result
Sintaxis
x |= y; // equivalent to x = x | y;