En el siguiente laboratorio se va Controlar con el Arduino un secuencia de 8 LEDS, se utilizara un Potenciómetro para cambiar el orden de la secuencia, deben programar al menos 4 secuencias distintas.
MATERIALES QUE SE USARON
1 arduino
8 leds
1 cable usb
1 protoboard
12 cables utp
8 resistencias
1 Potenciometro 10K
VIDEO EN TIEMPO REAL DEL FUNCIONAMIENTO DEL SISTEMA
CODIGO PARA LA ELABORACION DEL SISTEMA
const int MAXLED = 8;
//se asigna a una variable el puerto análogo del arduino
int pot = A4;
// se guarda la lectura del potenciometro
int valpot =0;
// arreglo de 8 LEDs
int led[MAXLED] = {2,3,4,5,6,7,8,9};
//primera secuencia : arreglo de un led de por medio
int ledS1[MAXLED] = {2,4,6,8,9,7,5,3};
//segunda secuencia : arreglo de un leds de los extremos al medio
int ledS2[12] = {1,128,2,64,4,32,8,16,4,32,2,64};
//tercera secuencia
int ledS3[22] = {2,4,3,5,4,6,5,7,6,8,7,9,7,8,6,7,5,6,4,5,3,4};
//cuarta secuencia
int ledS4[14] = {2,3,4,5,4,3,2,6,7,8,9,8,7,6};
// se ejecuta 1 sola vez, al iniciar el programa
void setup() {
for (int i=0; i
pinMode(pot, INPUT);
}
// se repite infinitamente mientras el arduino tenga corriente
void loop() {
// recorre desde el indice 0 hasta el 7
for (int i=0; i
off(led[i], 100);
//se hace una lectura del potenciometro
valpot = analogRead(pot);
//se evalua, dependiendo del valor del potenciometro
// se le asigna una secuencia
if( valpot > 0 && valpot <256 p="p"> { secuenciaUno(); }
else if(valpot > 256 && valpot < 512)
{ secuenciaDos();}
else if(valpot > 512 && valpot < 768)
{ secuenciaTres();}
else if(valpot > 768 && valpot < 1024)
{ secuenciaCuatro();}
}
// recorre desde el indice 6 hasta el 1, para no repetir los extremos
for (int i=MAXLED-2; i>0; i--) {
on(led[i], 100);
off(led[i], 100);
}
}
// métodos propios --------------------------------------------
//secuencia I
void secuenciaUno(){
uno:
//recorre el arreglo donde se difinio la secuencia
for (int i=0; i
off(ledS1[i], 100);
}
//se hace una lectura previa para saber
//si todavia se esta ejecutando la secuencia actual
valpot = analogRead(pot);
if( valpot > 0 && valpot <256 nbsp="nbsp" p="p"> goto uno; }
}
//secuencia II
void secuenciaDos(){
dos:
//recorre el arreglo donde se difinio la secuencia
for (int i=0; i<12 i="i" p="p"> on(ledS1[i], 500);
off(ledS1[i], 100);
}
//se hace una lectura previa para saber
//si todavia se esta ejecutando la secuencia actual
valpot = analogRead(pot);
if(valpot > 256 && valpot < 512){
goto dos; }
}
//secuencia III
void secuenciaTres(){
tres:
//recorre el arreglo donde se difinio la secuencia
for (int i=0; i<22 i="i" p="p"> on(ledS3[i], 500);
off(ledS3[i], 100);
}
//se hace una lectura previa para saber
//si todavia se esta ejecutando la secuencia actual
valpot = analogRead(pot);
if(valpot > 512 && valpot < 768){
goto tres; }
}
//secuencia IV
void secuenciaCuatro(){
cuatro:
//recorre el arreglo donde se difinio la secuencia
for (int i=0; i<14 i="i" p="p"> on(ledS1[i], 500);
off(ledS1[i], 100);
} //se hace una lectura previa para saber
//si todavia se esta ejecutando la secuencia actual
valpot = analogRead(pot);
if(valpot > 768 && valpot < 1024){
goto cuatro; }
}
void on(int led, int ms) {
digitalWrite(led, HIGH); // HIGH = +5V = prender
delay(ms); // espera en milisegundos
}
void off(int led, int ms) {
digitalWrite(led, LOW); // LOW = 0V = apagar
delay(ms); // espera en milisegundos
}
DIAGRAMA DEL LABORATORIO
ESQUEMA DEL LABORATORIO
14>22>12>256>
No hay comentarios:
Publicar un comentario