Apunte de Arduino
Apunte de Arduino
VARIABLES
ENTRADAS
ANALÓGICAS
WHILE - IF
PUERTO SERIE
ARDUINO
Apuntes teóricos importantes
Arduino es una plataforma de prototipos electrónica de código
abierto (open-source) basada en hardware y software flexibles y
fáciles de usar.
TECNOLOGÍAS DE LA
INFORMACIÓN (TI)
Ugolini Ailin
+
I/O DIGITALES
Con pinMode () podés configurar el pin especificado para que se
comporte como una entrada o como una salida. Se hace de la siguiete forma:
Sintaxis:
pinMode(PIN, MODE);
Parámetros:
Escritura
Otra de las cosas que podemos hacer es escribir un valor HIGH o LOW en un pin
digital inicializado como salida
Sintaxis:
digitalWrite(PIN, VALUE);
Parámetros:
Devoluciones:
Nada
Lectura
Para poder leer el valor de un pin también tenemos una función
Sintaxis
digitalRead(PIN);
Parámetros
Devoluciones
HIGH o LOW
Lo que hacemos con digitalRead(PIN); es leer el valor que hay en dicho pin.
Para poder mantener esta información debemos guardarla en una variable. Pero, ¿Cómo
hacemos esto? El primer paso es inicializar una variable, supongamos que su nombre es
‘Variable’. Lo que debo hacer para guardar la información de la lectura es:
Delay:
Su función es la de pausar el programa por una cantidad de tiempo (en
milisegundos) especificado como parámetro. (Recordá que hay 1000 milisegundos
en un segundo).
Sintaxis
delay(ms);
Parámetros
Devoluciones
Nada
Contadores:
Llamamos contador a una variable cuyo valor se incrementa o decrementa en un valor
fijo (en cada iteración de un bucle).
Boton = digitalRead( X );
Veamos como quedaría esto en un ejemplo completo hecho por Matias Silveiro:
else
// Sketch de prueba de una rutina de semaforo {
int DELAY_MS = 500; proxima_rutina == 1;
char estado_boton; }
char proxima_rutina; }
void setup()
{ // Controlo que rutina muestro
// Inicializacion de salidas digitales (LEDs) if(proxima_rutina == 1)
pinMode(2, OUTPUT); {
pinMode(3, OUTPUT); digitalWrite(2,HIGH);
pinMode(4, OUTPUT); digitalWrite(3, LOW);
pinMode(5, OUTPUT); digitalWrite(4, LOW);
pinMode(7, INPUT_PULLUP); digitalWrite(5,HIGH);
delay(DELAY_MS);
// Inicializo la proxima rutina a mostrar
proxima_rutina = 1; digitalWrite(2, LOW);
} digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
void loop() digitalWrite(5, LOW);
{ delay(DELAY_MS);
// Por un lado controlo el boton, y por otro la rutina }
Sintaxis:
Serial.begin(speed);
Parámetros:
speed: in bits per second (baud) – long
Devoluciones:
Nada
Sintaxis:
Serial.print(Valor);
Serial.print(Valor, formato);
Parámetros:
Valor: El valor para imprimir
Devoluciones:
Código ASCII:
La comunicación a través de cualquier puerto serie es en código binario y se
mandan en grupos de 8 bits (byte). Puesto que el humano entiende caracteres
alfanuméricos, codificamos los caracteres en binario según el código ASCII.
PWM (Pulse Width Modulation):
La modulación por ancho de pulsos (también conocida como PWM, siglas en inglés
de pulse-width modulation) de una señal o fuente de energía es una técnica en la que se
modifica el ciclo de trabajo de una señal periódica (una senoidal o una cuadrada, por
ejemplo), ya sea para transmitir información a través de un canal de comunicaciones o
para controlar la cantidad de energía que se envía a una carga.
En un circuito simple, que consta de un resistor y un led, necesitamos variar el
valor de la Resistencia para ver cambiar la intensidad del led. Mi objetivo principal es
iluminar, pero parte de la energía se la lleva la Resistencia, es decir que no toda la
energía me va al diodo Led. Además, ¿qué precision tengo al mover un potenciómtro? al
moverlo manualmente no tengo precision, es una perilla. Entonces tengo ciertos
problemas:
- Mala precision.
- Al usar un potenciómetro para variarlo, el led comienza a parpadear (solo con
led, explicación dada en clase)
- Lo que use para variar (preset, potenciómetro, etc) me consume.
El programa pone el pin 10 a HIGH una vez por segundo durante medio segundo
(ciclo de trabajo 50%), la frecuencia que se genera en dicho pin es de 1 pulso por
segundo o 1 Hz de frecuencia (periodo de 1 segundo). Cambiando la temporización del
programa, podremos cambiar el ciclo de trabajo de la señal. Por ejemplo, si cambiamos
las dos líneas con delay(500) por delay(250) y delay(750), modificamos el ciclo de
trabajo a 25%; ahora, el programa pone el pin 10 a HIGH una vez por segundo durante
1/4 de segundo y la frecuencia sigue siendo de 1 Hz.
Sintaxis:
analogWrite(PIN, VALUE);
Parámetros:
Devoluciones:
Nada
Entradas Analógicas:
- AD: Conversor Analógico Digital.
Entran infinitos
valores hasta Vcc. A/D 2n = Resolución =
1024 (si n=10)
𝟓
𝑽= 𝑵∗
𝟏𝟎𝟐𝟒
N = analogRead(A0)
(N ∗ 5)
𝐕 = //Obtengo que voltaje analógico entró.
1024
Sintaxis:
analogRead(PIN);
Parámetros:
Devoluciones:
int (0 a 1023)