Sie sind auf Seite 1von 8

16/7/2019 Programa en Arduino - ¡Aterraja, que algo queda!

Buscar en este sitio

¡Aterraja, que
algo queda!
RECURSOS
Proyectos eléctricos > Ascensores > Ascensor con Arduino >
ALMA DE HERRERO

ENTRE GRASA Y
TORNILLOS
Programa en Arduino
EMPUJANDO EL CAMIÓN

PROYECTOS
Primer programa útil

PROYECTOS Los pulsadores de los diferentes pisos están conectados a los pines digitales
MAQUETAS de Arduino de la siguiente manera: P1 (7), P2 (9) P3 (11) y P4 (13). Del mismo
modo los nales de carrera están montados de la siguiente manera: F1 (6), F2
ARCO DE YESO
(8), F3 (10) y F4 (12).
ESTRUCTURA DE
EDIFICIO
Para mover el motor del ascensor arriba y abajo (También para pararlo) se
ICTINEO II
usan los pines digitales 4 y 5 de la placa Arduino UNO. El pin 4 lleva la señal a
MAQUETA DE LA ISS la base del transistor BD 895 y el pin 5 a los dos relés que accionan un
MAQUETA DE conmutador simple (Se podría hacer con un solo relé que accione un
LOCOMOTORA conmutador doble).
BALDWIN "LA ROBLA"

OBJETOS DE MADERA El transistor BD 895 es un transistor Darlington NPN, similar al BDX53.


SILLÓN DE PAPEL

PROYECTOS
ELECTRÓNICOS

CIRCUITOS
ELECTRÓNICOS CON
LUCES

FUNCIONAMIENTO DE
UN ELECTROSCOPIO
ELECTRÓNICO

LA RADIO DE ROSA Y
CAROLINA Para subir el ascensor el motor ha de girar tal como le obligan el pin 4 en HIGH
LUCES INTERMITENTES y el pin 5 también en HIGH.

LUCES INTERMITENTES
Para bajar el ascensor el motor ha de girar en sentido contrario, tal como le
LUCES INTERMITENTES obligan el pin 4 en HIGH y el pin 5 en LOW.
CON UN 555

REUTILIZACIÓN DE UN Para parar el ascensor el motor se detiene obligado por el pin 4 en LOW y el
MANDO A DISTANCIA
DE INFRARROJOS (I) pin 5 también en LOW (De hecho el pin 5 puede estar en HIGH, ya que el pin 4
y , por tanto, el transistor BD 894, es el que corta o permite el paso de la
PROYECTOS ELÉCTRICOS
corriente hacia los conmutadores de los relés y hacia el motor.
ASCENSORES

CENTRAL NUCLEAR A parte de por programa, el sentido del giro del motor se puede invertir
CONTROL MEDIANTE invirtiendo la conexión de los dos terminales del motor. De otra manera
RELÉS DE UNA también se puede conseguir cambiar entre subir y bajar, cambiando el sentido
PEQUEÑA MÁQUINA en el que enrollamos la cuerda en el tambor.
EL AVIÓN DE RAUL

EXPERIMENTO DE LA En el lateral del ascensor se encuentra la placa de circuito impreso con el


DOBLE RENDIJA (1) transistor BD 894 y los dos relés.
SEGUIDOR SOLAR
ELÉCTRICO

TAMIZ OSCILANTE

PROYECTOS MECÁNICOS

AUTÓMATAS

CABRESTANTE

EXPERIMENTO DE
GALILEO SOBRE EL
MOVIMIENTO DE

https://sites.google.com/site/proyectosbarron/proyectos-electricos/ascensores/ascensor/programa-en-arduino 1/8
16/7/2019 Programa en Arduino - ¡Aterraja, que algo queda!
CAIDA DE LOS
CUERPOS

MAQUETA DE
AEROMOTOR

MECANISMO
DIFERENCIAL
REALIZADO CON
PIEZAS DE MECCANO.

MOTORES

MÁQUINA DE ENSAYOS
DE RESISTENCIA

MÁQUINAS DE BOLAS

TELAR CON DOS LIZOS

VEHÍCULOS

RECURSOS

ROBOTS
Aquí se puede ver en detalle la placa de los relés.
INSTALACIONES
INDUSTRIALES

JUEGOS Y
ANIMACIONES

MÚSICA

PLACA VELLEMAN
P8055

VEHÍCULOS

SIMULADORES

SIMULADOR DE CNC

WEBQUESTS

CALCULADORAS

CÁPSULAS DEL TIEMPO Este es el esquema del circuito electrónico.


EL TELÉGRAFO

EL VIEJO KILOGRAMO

LA GRIPE ESPAÑOLA

REVOLUCIONES
INDUSTRIALES

MAPA DEL SITIO

Este es el programa que permite llamar desde cada uno de los cuatro pisos y
para en el piso deseado. Dispone de una funcionalidad, ejecutada en el
"setup", que hace bajar el ascensor al primer piso, al iniciarse el programa.

int F=0;
int P=0;

void setup() {

  pinMode(4, OUTPUT);     
  pinMode(5, OUTPUT);  
  pinMode(6, INPUT);
  pinMode(7, INPUT); 
  pinMode(8, INPUT);
  pinMode(9, INPUT);
  pinMode(10, INPUT);
  pinMode(11, INPUT); 
  pinMode(12, INPUT);
  pinMode(13, INPUT);

  inicio();
}

void inicio (){

https://sites.google.com/site/proyectosbarron/proyectos-electricos/ascensores/ascensor/programa-en-arduino 2/8
16/7/2019 Programa en Arduino - ¡Aterraja, que algo queda!
    if (digitalRead(6)==1){
      F=1;
    }

    if(F==0){    //Al inicar el programa baja el ascensor al primer piso


    digitalWrite(4, HIGH); 
    digitalWrite(5, LOW);
    delay(2000);
 }

void loop(){

 
    if (digitalRead(6)==1){
      F=1;
    }
   
    if (digitalRead(8)==1){
      F=2;
    }
   
    if (digitalRead(10)==1){
      F=3;
    }
   
    if (digitalRead(12)==1){
      F=4;
    }
   
    if (digitalRead(7)==1){
      P=1;
    }
   
    if (digitalRead(9)==1){
      P=2;
    }
   
    if (digitalRead(11)==1){
      P=3;
    }
   
    if (digitalRead(13)==1){
      P=4;
    }
   
    if ((F==1)&&(P==0)){   //Parada del ascensor en el piso 1 cuando está
bajando por el subprograma inicio
    digitalWrite(4, LOW); 
    digitalWrite(5, LOW);
    }
  
   
    if ((F<4)&&(P==4)){  //Subir hacia el piso 4
    digitalWrite(4, HIGH); 
    digitalWrite(5, HIGH);
    }
   
    if ((F==4)&&(P==4)){  //Parar en el piso 4
    digitalWrite(4, LOW); 
    digitalWrite(5, LOW);
    }
   
    if ((F<3)&&(P==3)){  //Subir hacia el piso 3
    digitalWrite(4, HIGH); 
    digitalWrite(5, HIGH);
    }
   
    if ((F>3)&&(P==3)){  //Bajar hacia el piso 3
    digitalWrite(4, HIGH); 
    digitalWrite(5, LOW);
    }

https://sites.google.com/site/proyectosbarron/proyectos-electricos/ascensores/ascensor/programa-en-arduino 3/8
16/7/2019 Programa en Arduino - ¡Aterraja, que algo queda!
   
    if ((F==3)&&(P==3)){  //Parar en el piso 3
    digitalWrite(4, LOW); 
    digitalWrite(5, LOW);
    }
 
 
  if ((F<2)&&(P==2)){  //Subir hacia el piso 2
    digitalWrite(4, HIGH); 
    digitalWrite(5, HIGH);
    }
   
    if ((F>2)&&(P==2)){  //Bajar hacia el piso 2
    digitalWrite(4, HIGH); 
    digitalWrite(5, LOW);
    }
   
    if ((F==2)&&(P==2)){  //Parar en el piso 2
    digitalWrite(4, LOW); 
    digitalWrite(5, LOW);
    }
 
    if ((F>1)&&(P==1)){  //Bajar hacia el piso 1
    digitalWrite(4, HIGH); 
    digitalWrite(5, LOW);
    }
   
    if ((F==1)&&(P==1)){  //Parar en el piso 1
    digitalWrite(4, LOW); 
    digitalWrite(5, LOW);
    }
 
}

El display de 8 x 8

Los pines de Arduino que utiliza el display de 8 x 8 son el 1 (CS), el 2 (DIN) y el 3


(CLK).

Este es el programa que muestra en el display  8 x 8 el piso en el que se


encuentra y hacia donde se mueve, arriba o abajo.

int F=0;
int P=0;

int indicelinea;
int indiceLED;

//Conexiones entre el display y Arduino


int pinCLK = 3;
int pinCS = 1;
int pinDIN = 2;
char archivo_fotogramas[6][8]={
  {0x00,0x00,0x04,0x02,0x7F,0x02,0x04,0x00},//Flecha arriba
  {0x00,0x00,0x20,0x40,0xFE,0x40,0x20,0x00},//Flecha abajo
  {0x00,0x08,0x84,0x82,0xFE,0x80,0x80,0x00},//1
  {0x00,0x00,0xE4,0x92,0x92,0x8E,0x00,0x00}, //2
  {0x00,0x00,0x54,0x92,0x92,0x6C,0x00,0x00},//3
  {0x00,0x30,0x28,0x24,0xFE,0x20,0x00,0x00},//4
};

void convertir_byte_a_bits(char DATA)


{
digitalWrite(pinCS,LOW);
for(indiceLED=8;indiceLED>=1;indiceLED--)
{
digitalWrite(pinCLK,LOW);
digitalWrite(pinDIN,DATA&0x80); //Extrae cada bit del byte "DATA"
DATA = DATA<<1;
digitalWrite(pinCLK,HIGH);
}
}

https://sites.google.com/site/proyectosbarron/proyectos-electricos/ascensores/ascensor/programa-en-arduino 4/8
16/7/2019 Programa en Arduino - ¡Aterraja, que algo queda!
void Impresion_Linea(int indicelinea, char contenidolinea)
{
digitalWrite(pinCS,LOW);
convertir_byte_a_bits(indicelinea); //Envia el valor de la linea del display
convertir_byte_a_bits(contenidolinea); //Envia el valor de los LEDs de la
// linea del display
digitalWrite(pinCS,HIGH);
}

void puesta_en_marcha()
{
Impresion_Linea(0x09, 0x00); //Tipo de decodi cado :BCD
Impresion_Linea(0x0a, 0x03); //Brillo de los LEDs
Impresion_Linea(0x0b, 0x07); //Cantidad de LEDs por linea :8 LEDs
Impresion_Linea(0x0c, 0x01); //Desconexion del display :0 Modo normal :1
Impresion_Linea(0x0f, 0x00); //Modo de prueba del display :1 Modo EOT
//del display :0
}

void setup() {

  pinMode(4, OUTPUT);      
  pinMode(5, OUTPUT);   
  pinMode(6, INPUT); 
  pinMode(7, INPUT);  
  pinMode(8, INPUT); 
  pinMode(9, INPUT);
  pinMode(10, INPUT); 
  pinMode(11, INPUT);  
  pinMode(12, INPUT); 
  pinMode(13, INPUT);

  pinMode(pinCLK,OUTPUT);
  pinMode(pinCS,OUTPUT);
  pinMode(pinDIN,OUTPUT);
  delay(50);
  
  puesta_en_marcha(); //Puesta en marcha del display 8x8

  inicio();
}

void inicio (){


    if (digitalRead(6)==1){
      F=1;
  }

    if(F==0){ //Al inicar el programa baja el ascensor al primer piso


    digitalWrite(4, HIGH);  
    digitalWrite(5, LOW);
    delay(2000);
 }

void loop(){

  
    if (digitalRead(6)==1){
      F=1;
  }
    
    if (digitalRead(8)==1){
      F=2;
  }
    
    if (digitalRead(10)==1){
      F=3;
  }

https://sites.google.com/site/proyectosbarron/proyectos-electricos/ascensores/ascensor/programa-en-arduino 5/8
16/7/2019 Programa en Arduino - ¡Aterraja, que algo queda!
    
    if (digitalRead(12)==1){
      F=4;
  }
    
    if (digitalRead(7)==1){
      P=1;
  }
    
    if (digitalRead(9)==1){
      P=2;
  }
    
    if (digitalRead(11)==1){
      P=3;
  }
    
    if (digitalRead(13)==1){
      P=4;
  }
    
    if ((F==1)&&(P==0)){   //Parada del ascensor en el piso 1 cuando está bajando
por el subprograma inicio
    digitalWrite(4, LOW);  
    digitalWrite(5, LOW);

    puesta_en_marcha();//Fotograma UNO
    for(indicelinea=1;indicelinea<9;indicelinea++)
   {
      Impresion_Linea(indicelinea, archivo_fotogramas[2][indicelinea-1]);
   }
    delay(100); //Tiempo de espera entre fotograma y fotograma
    
  }
  
    
    if ((F<4)&&(P==4)){  //Subir hacia el piso 4
    digitalWrite(4, HIGH);  
    digitalWrite(5, HIGH);

    puesta_en_marcha();//Fotograma subir
    for(indicelinea=1;indicelinea<9;indicelinea++)
   {
      Impresion_Linea(indicelinea, archivo_fotogramas[0][indicelinea-1]);
   }
    delay(100); //Tiempo de espera entre fotograma y fotograma
    
  }
    
    if ((F==4)&&(P==4)){  //Parar en el piso 4
    digitalWrite(4, LOW);  
    digitalWrite(5, LOW);

    puesta_en_marcha();//Fotograma CUATRO
    for(indicelinea=1;indicelinea<9;indicelinea++)
   {
      Impresion_Linea(indicelinea, archivo_fotogramas[5][indicelinea-1]);
   }
    delay(100); //Tiempo de espera entre fotograma y fotograma
    
  }
    
    if ((F<3)&&(P==3)){  //Subir hacia el piso 3
    digitalWrite(4, HIGH);  
    digitalWrite(5, HIGH);

    puesta_en_marcha();//Fotograma subir
    for(indicelinea=1;indicelinea<9;indicelinea++)
   {
      Impresion_Linea(indicelinea, archivo_fotogramas[0][indicelinea-1]);
   }
    delay(100); //Tiempo de espera entre fotograma y fotograma
    

https://sites.google.com/site/proyectosbarron/proyectos-electricos/ascensores/ascensor/programa-en-arduino 6/8
16/7/2019 Programa en Arduino - ¡Aterraja, que algo queda!
  }
    
    if ((F>3)&&(P==3)){  //Bajar hacia el piso 3
    digitalWrite(4, HIGH);  
    digitalWrite(5, LOW);

    puesta_en_marcha();//Fotograma bajar
    for(indicelinea=1;indicelinea<9;indicelinea++)
   {
      Impresion_Linea(indicelinea, archivo_fotogramas[1][indicelinea-1]);
   }
    delay(100); //Tiempo de espera entre fotograma y fotograma
    
  }
    
    if ((F==3)&&(P==3)){  //Parar en el piso 3
    digitalWrite(4, LOW);  
    digitalWrite(5, LOW);

    puesta_en_marcha();//Fotograma TRES
    for(indicelinea=1;indicelinea<9;indicelinea++)
   {
      Impresion_Linea(indicelinea, archivo_fotogramas[4][indicelinea-1]);
   }
    delay(100); //Tiempo de espera entre fotograma y fotograma
    
  }
  
  
    if ((F<2)&&(P==2)){  //Subir hacia el piso 2
    digitalWrite(4, HIGH);  
    digitalWrite(5, HIGH);

    puesta_en_marcha();//Fotograma subir
    for(indicelinea=1;indicelinea<9;indicelinea++)
   {
      Impresion_Linea(indicelinea, archivo_fotogramas[0][indicelinea-1]);
   }
    delay(100); //Tiempo de espera entre fotograma y fotograma
    
  }
    
    if ((F>2)&&(P==2)){  //Bajar hacia el piso 2
    digitalWrite(4, HIGH);  
    digitalWrite(5, LOW);

    puesta_en_marcha();//Fotograma bajar
    for(indicelinea=1;indicelinea<9;indicelinea++)
   {
      Impresion_Linea(indicelinea, archivo_fotogramas[1][indicelinea-1]);
   }
    delay(100); //Tiempo de espera entre fotograma y fotograma
    
  }
    
    if ((F==2)&&(P==2)){  //Parar en el piso 2
    digitalWrite(4, LOW);  
    digitalWrite(5, LOW);

    puesta_en_marcha();//Fotograma DOS
    for(indicelinea=1;indicelinea<9;indicelinea++)
   {
      Impresion_Linea(indicelinea, archivo_fotogramas[3][indicelinea-1]);
   }
    delay(100); //Tiempo de espera entre fotograma y fotograma
    
  }
  
    if ((F>1)&&(P==1)){  //Bajar hacia el piso 1
    digitalWrite(4, HIGH);  
    digitalWrite(5, LOW);

    puesta_en_marcha();//Fotograma bajar

https://sites.google.com/site/proyectosbarron/proyectos-electricos/ascensores/ascensor/programa-en-arduino 7/8
16/7/2019 Programa en Arduino - ¡Aterraja, que algo queda!
    for(indicelinea=1;indicelinea<9;indicelinea++)
   {
      Impresion_Linea(indicelinea, archivo_fotogramas[1][indicelinea-1]);
   }
    delay(100); //Tiempo de espera entre fotograma y fotograma
    
  }
    
    if ((F==1)&&(P==1)){  //Parar en el piso 1
    digitalWrite(4, LOW);  
    digitalWrite(5, LOW);

    puesta_en_marcha();//Fotograma UNO
    for(indicelinea=1;indicelinea<9;indicelinea++)
   {
      Impresion_Linea(indicelinea, archivo_fotogramas[2][indicelinea-1]);
   }
    delay(100); //Tiempo de espera entre fotograma y fotograma
    
  }
  
}

Č
ċ ASCENSOR4PISOS.INO (2K) CÁNDIDO GARCÍA, 16 OCT. … V.5 ď
ċ ASCENSOR4PISOSCONDISP… CÁNDIDO GARCÍA, 7 NOV. 2… V.2 ď

Comentarios

No tienes permiso para agregar comentarios.

Iniciar sesión | Actividad reciente del sitio | Noti car uso inadecuado | Imprimir página | Con la tecnología de Google Sites

https://sites.google.com/site/proyectosbarron/proyectos-electricos/ascensores/ascensor/programa-en-arduino 8/8

Das könnte Ihnen auch gefallen