miércoles, 30 de enero de 2019

Clase 6 Lectura de variables externas con Arduino

Vamos a realizar otros ejemplos de lectura de variables, los ejercicios que se expondrán a continuación debes escribirlos  y probarlos en el IDE de arduino y posteriormente probarlos físicamente utilizando el arduino uno.

Como estudiantes deben escribir el pseudocódigo, y el diagrama de flujo; lo cual les permitirá entender cada parte de los programas, ademas de otras funciones con las cuales harán mas extenso su nivel de programación.

Programa 1

// Project 5 - efecto de luces
// Crear un arreglo de 8 pines para LED
/* DESCRIBE EL FUNCIONAMIENTO DEL SIGUEINTE PROGRAMA
*/

byte ledPin[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int ledDelay=65; // espera entre cambios
int direccion = 1;
int recorridoLED = 0;
unsigned long Tiempo;

void setup()
{
// set all pins to output
for (int x=0; x<10; x++)
{
pinMode(ledPin[x], OUTPUT); }
Tiempo = millis();
}

void loop()
{
// if it has been ledDelay ms since last change
if ((millis() - Tiempo) > ledDelay)
{
changeLED();
Tiempo = millis();
}
}

void changeLED()
{
// turn off all LED's
for (int x=0; x<10; x++)
{
digitalWrite(ledPin[x], LOW);
}

// cambiar el recorridoLED
digitalWrite(ledPin[recorridoLED], HIGH);
// recorridoLED incrementa por el valor de direccion
recorridoLED += direccion;
// Cambiamos de dirección si llegamos al final.
if (recorridoLED == 9)
{
direccion = -1;
}

if (recorridoLED == 0)
{
direccion = 1;
}

}

Programa 2

byte ledPin[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int ledDelay; // espera entre cambios
int direccion = 1;
int recorridoLED = 0;
unsigned long Tiempo;
int potpin=14;

void setup()
{
// set all pins to output
for (int x=0; x<10; x++)
{
pinMode(ledPin[x], OUTPUT); }
Tiempo = millis();
}

void loop()
{
// leer el valor del potenciometro
ledDelay = analogRead(potpin);
// if it has been ledDelay ms since last change
if ((millis() - Tiempo) > ledDelay)
{
changeLED();
Tiempo = millis();
}
}

void changeLED()
{
// turn off all LED's
for (int x=0; x<10; x++)
{
digitalWrite(ledPin[x], LOW);
}

// cambiar el recorridoLED
digitalWrite(ledPin[recorridoLED], HIGH);
// recorridoLED incrementa por el valor de direccion
recorridoLED += direccion;
// Cambiamos de dirección si llegamos al final.
if (recorridoLED == 9)
{
direccion = -1;
}

if (recorridoLED == 0)
{
direccion = 1;
}

}

Como observas los programas 1 y 2 son semejantes su diferencia radica en la utilización de los pines análogos del arduino para los tiempos de retardo

El Arduino tiene 6 entradas analógicas.
Entradas / salidas con un convertidor de analógico a digital de 10 bits.(0000000000 a 1111111111) Esto significa que el pin análogo puede leer en voltajes entre 0 y 5 voltios, en números enteros para el arduino estos valores varían entre 0 (0 voltios) y 1023 (5 voltios). 
Esto da una resolución de 5 voltios / 1024 bit o 0.0049
Voltios (4.9mV) por unidad. Necesitamos ajustar el retardo (delay) usando el potenciómetro para que podamos
simplemente utilizará los valores directos leídos desde el pin para Ajusta este tiempo entre 0 y 1023 milisegundos. Nosotros
Tenga en cuenta que no se necesita configurar un pin analógico para ser entrada o salida como si sucede con un pin digital.



0 comentarios:

Publicar un comentario