Taller de Audio del Centro Multimedeia del CNA

Ejemplos Arduino

algunos ejemplos de la programación de arduino , el material y una breve explicación de los que sucederá cuando se implementen.

ejemplo 1:

material:

  • 1 diodo Led
La diferencia entre el pin 13 y los demas pines del arduino consta basicamente de que el pin 13 tiene un a resistencia interna de 1k ohm por lo que se puede poner directamente el Led del pin 13 al pin de GND (tierra).

codigo:

void setup(){ //Comienza la configuración
pinMode(13,OUTPUT); //Configura el PIN 13 como salida
} //Termina la configuración
void loop(){ //Comienza el bucle principal del programa
digitalWrite(13, HIGH); //Envía 5V al pin 13 y enciende el LED
delay(200); //Espera 200 milisegundos (LED encendido)
digitalWrite(13,LOW); //Envía 0V al PIN 13 y apaga el LED
delay(100); //Espera 100 milisegundos (LED apagado)
} //Termina el bucle principal del programa

ejemplo 2:

material:

  • 1 bocina piezoelectrica
Emite con la bocina el tono estandar de aviso de la llegada de un mensaje SMS de texto de un celular.

codigo:

int corto=100; //Declara la variable de argumento entero "corto" y la
int pausa=300; //inicializa con el valor 100
int largo=300;
int espera=1000;
int n=0;
int zumb=10; //PIN digital al que conectamos el zumbador
void setup(){
pinMode(zumb,OUTPUT);
}
void loop(){
for(n=0;n<3;n++){ //Iteración en la que la variable n comienza con el valor 0
digitalWrite(zumb, HIGH); //y va aumentando en 1 en cada ciclo hasta que toma el valor 2,
delay(corto); //con lo que las instrucciones comprendidas entre los corchetes
digitalWrite(zumb,LOW); //se repiten 3 veces
delay(corto);
}
delay(pausa); //Tiempo entre letras
for(n=0;n<2;n++){ //Aquí está la M
digitalWrite(zumb, HIGH);
delay(largo);
digitalWrite(zumb,LOW);
delay(largo);
}
delay(pausa);
for(n=0;n<3;n++){
digitalWrite(zumb, HIGH);
delay(corto);
digitalWrite(zumb,LOW);
delay(corto);
}
delay(espera); //Tiempo hasta repetir SMS

ejemplo 3:

material:

  • 1push botton
  • 1 bocina piezoelectrica

Simula un despertador que cuando suena lo apagamos pero al poco tiempo vuelve a sonar con mayor insistencia y eso lo repite tres veces. En este ejercicio aparecen nuevos elementos como el uso de un contador con la variable m=cuenta el numero de veces que se activa la entrada digital; la variable while que funciona repitiendo en ciclos los que se encuentra dentro de las llaves mientras se cumpla la condicion que esta dentro del parentesis.

codigo:

int puls=5;
int zumb=10;
int n=0;
int m=0; //variable que usamos para contar las veces que se pulsa
int tiempo=200; //marca la duración inicial de los pitidos
int pausa=1000; //tiempo que pasa hasta que suena la alarma por primera vez
int espera=5000;
void setup(){
pinMode(puls,INPUT);
pinMode(zumb,OUTPUT);
}
void alarma(){ //produce los 3 pitidos
for(n=0;n<3;n++){
digitalWrite(zumb,HIGH);
delay(tiempo);
digitalWrite(zumb,LOW);
delay(tiempo);
}
}
void para(){ //tiempo de silencio entre alarmas consecutivas
digitalWrite(zumb,LOW);
delay(espera);
}
void bloquea(){ //mintras el valor de la variable sea 3 no hace nada
while(m==3){
}
}
void loop(){
delay(pausa); //tiempo hasta qu empieza a sonar la alarma
if(digitalRead(puls)==HIGH){ //si se presiona el pulsador
m=m+1; //llevamos la cuenta de las veces que se ha pulsado contando una más
tiempo=tiempo-50; //disminuye la longitud de los pitidos
para(); //para de sonar el toempo entre alarmas seguidas
}
bloquea(); //comprueba si se ha pulsado 3 veces para bloquear
alarma(); //suena
}

ejemplo 4:

material:

  • 4 push botton
  • 4 led's
  • 4 bocina piezoelectrica

Presionas cuanquier push botton y despues de un tiempo aleatorio se escucha un tono y se enciende un led mientras se manenga presionado el boton, cuando lo sueltas el led comienza a parpadear determinado tiempo. Despues da un flash e inicia de nuevo hasta que se aprieta otro push botton y vuelve a iniciar con un flash.

codigo

int zumb=10;
int cadenaLeds[]={6,7,8,9}; // 4LEDs, 4pulsadores, 4 notas
int cadenaPuls[]={2,3,4,5};
int notas[]={1915,1519,1275,1014};
int tiempo=0;
int n=0;
int m=0;
int ini=0;
int psrnum=0;
void setup (){
for(n=0;n<4;n++){
pinMode(cadenaLeds[n],OUTPUT);
pinMode(cadenaPuls[n],INPUT);
}
pinMode(zumb,OUTPUT);
}
void flash(){
for(n=0;n<4;n++){
digitalWrite(cadenaLeds[n],HIGH);
}
delay(200);
for(n=0;n<4;n++){
digitalWrite(cadenaLeds[n],LOW);
}
delay(200);
}
void zumba(){ //procedimiento que produce un pitido
digitalWrite(zumb,HIGH);
delay(500);
digitalWrite(zumb,LOW);
}
void nota(){
for(m=0;m<=100;m++){
digitalWrite(zumb,HIGH);
delayMicroseconds(notas[n]);
digitalWrite(zumb,LOW);
delayMicroseconds(notas[n]);
}
}
void parpadea(){
for(m=0;m<10;m++){
digitalWrite(cadenaLeds[n],HIGH);
delay(200);
digitalWrite(cadenaLeds[n],LOW);
delay(200);
}
}
randomize(int data){ //Función del generador de números pseudoaleatorios
return ((1664525*data)%1023);
}
void loop(){
flash();
while(digitalRead(2)==LOW&&digitalRead(3)==LOW&&digitalRead(4)==LOW&&digitalRead(5)==LOW){ //Espera a que se pulse alguno
ini=ini+1;
flash();
}
psrnum= randomize(ini);
tiempo=abs(psrnum)%10;
delay(tiempo*1000);
zumba();
while(digitalRead(2)==LOW&&digitalRead(3)==LOW&&digitalRead(4)==LOW&&digitalRead(5)==LOW){ //Espera a que se pulse alguno
}
delay(100);
for(n=0;n<4;n++){
if(digitalRead(cadenaPuls[n])==HIGH){//Al pulsar, se ilumina el led y suena la nota,
digitalWrite(cadenaLeds[n],HIGH); //ambos están asociados al estar en la misma posición en sus cadenas
nota();
while(digitalRead(cadenaPuls[n])==HIGH){
digitalWrite(cadenaLeds[n],HIGH);
}
parpadea();
}
}
ini=0; //reinicia la variable para producir una semilla del nº pseudoaleatorio distinta.
}