Ascensor arduino con visual basic

Buenas a todos!

Esta es la corrección que tenía que hacer, así nadie se tiene que descargar nada.

Lo primero pido disculpas por mi anterior post, lleno de errores. Lo siento. Os planteo este proyecto, debo de entregarlo en unos días, estoy haciendo un F.P. Superior Robotica industrial. y me piden esto.

"Enunciado:

Automatizar un ascensor en un edificio de cuatro plantas. Para ello dispone de los siguientes elementos: 1. Pulsadores de llamada esterior (PE1, PE2 ,PE3 y PE4) para solicitar el ascensor, uno por cada planta. 2. Pulsadores de destino dentro de la cabina (PI1, PI2 ,PI3 y PI4) . 3. Diodos (D1, D2, D3 y D4) para indicar la presencia o ausencia del ascensor, uno por cada planta. 4. Diodos (D5 y D6) para indicar puerta abierta y puerta cerrada

La secuencia de control es la siguiente: 1. Para acceder al ascensor el usuario presiona el pulsador de llamada desde el exterior en la planta en la que se encuentre. 2. Si el ascensor está en la planta desde la que se le llama, se abrirá la puerta para permitir que entren las personas que lo quieran usar. 3. Si el ascensor está en otra planta, sin abrir las puertas, procederá a desplazarse a la planta desde la que se le llama, para una vez en ella, proceder a abrir las puertas y de este modo permitir la entrada de las personas que lo quieran utilizar. 4. Los usuarios una vez dentro de la cabina, podrán seleccionar la planta a la que desean ir siendo posible una única selección (otra versión con varios destinos). 5. Cuando se cierren las puertas, el ascensor procederá a desplazarse hasta la planta seleccionada, abrirá las puertas para dejar salir a las personas que lo deseen, volverá a cerrar sus puertas y quedará listo para un nuevo uso. 6. Si quedara alguna persona dentro, esta podrá seleccionar una nueva planta una vez que el ascensor a comenzado a abrir sus puertas, para una vez cerradas de nuevo desplazarse hasta el nuevo destino. • ALARMA 1. La actuación sobre el pulsador interior (A) indicará que las personas que van dentro de la cabina han detectado una situación anómala o de peligro y por tanto el ascensor se detendrá de inmediato, esté donde esté. 2. Mientras el ascensor se encuentra en alarma, ninguna orden exterior podrá ser obedecida. 3. Únicamente se sale de la situación de Alarma de Cabina, actuando de nuevo sobre el pulsador "A" o sobre cualquier pulsador de planta ode apertura de puerta. La respuesta del ascensor en este punto será llevar a la cabina a la planta inmediatamente inferior al punto donde se encuentray abrir las puertas"

//pulsadores exteriores
int pe1=0;
int pe2=1;
int pe3=2;
int pe4=3;

//pulsadores interiores
int pi1=4;
int pi2=5;
int pi3=6;
int pi4=7;

//pulsador alarma
int pi5=8;
//luz presencia o ausencia ascensor
int led1=9;
int led2=10;
int led3=11;
int led4=12;

//luz puerta abierta o cerrada
int led5A=13;
int led6C=14;

//valores de las variables de entrada
int e_pe1=0;
int e_pe2=0;
int e_pe3=0;
int e_pe4=0;
int e_pi1=0;
int e_pi2=0;
int e_pi3=0;
int e_pi4=0;
int e_pi5=0;

//Variable tiempo
int tiempo=1000;
int centinela=1;

void reset (void);
leds_pisos(int,int,int,int);




void setup() {
//pines de entrada:
pinMode(pe1, INPUT);
pinMode(pe2, INPUT);
pinMode(pe3, INPUT);
pinMode(pe4, INPUT);
pinMode(pi1, INPUT);
pinMode(pi2, INPUT);
pinMode(pi3, INPUT);
pinMode(pi4, INPUT);
pinMode(pi5, INPUT);

//pines de salida 
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5A, OUTPUT);
pinMode(led6C, OUTPUT);
Serial.begin(9600);
reset();





}

void puerta() // funcion para la apertura y cierre de puertas
{
 digitalWrite(led5A, 1);
 delay(2000);
 digitalWrite(led5A, 0);
 digitalWrite(led6C, 1);
 delay(2000);
 digitalWrite(led6C,0);
}


void loop()//función cíclica
{
 e_pe1=digitalRead(pe1);
 e_pe2=digitalRead(pe2);
 e_pe3=digitalRead(pe3);
 e_pe4=digitalRead(pe4);
 e_pi1=digitalRead(pi1);
 e_pi2=digitalRead(pi2);
 e_pi3=digitalRead(pi3);
 e_pi4=digitalRead(pi4);
 e_pi5=digitalRead(pi5);
 
//PRIMER PISO
if ((e_pe1==1||e_pi1==1))
//Desde piso  4

{ 
 leds_pisos (0,0,0,1);
 delay(1000);
 leds_pisos (0,0,1,0);
 delay(1000);
 leds_pisos (0,1,0,0);
 delay(1000);
 leds_pisos (1,0,0,0);
 digitalWrite(led5A, 1);
 delay(2000);
 digitalWrite(led6C, 1);
 
 
}
}

Finalmente deciros, que el fin de este proyecto, es hacer el código en arduino, para después en Visual Basic hacer una simulación del ascensor. No se instala nada físicamente.

Espero que quede todo claro así y no se me escape nada.

Un saludo y gracias.

Mentacota ha subido algunos hilos sobre Vb tanto el vb 6 (basic) como con los .net, incluso en el foro he visto con C# pero no sé si subido por él mismo (no recuerdo), pero si buscas esos lenguajes en la lupa del foro verás que hay tutoriales.

lo admito no se programar en visual, pero lo que seria los básico te lo puedo explicar.

lo primero que necesitas es eliminar esos delay, pues durante ese tiempo el programa no va a hacer nada.

me faltan los finales de carrera para decirme en que planta estamos.

los llamaremos fc1, fc2, fc3, fc4;

luego necesitamos saber en que posicion estamos y a cual deseamos ir( int pos = 0, dest=0;)
, aparte necesitas saber si alguien pidió el ascensor o no, ademas de memoria para los flancos de los pulsadores y unas señales de flanco,

m_pe1=e_pe1;
e_pe1= digitalRead(pe1);
f_pe1= e_pe1 $ ~m_pe1 ;

con eso básicamente tengo un flanco positivo de pe1 multiplica ese codigo por cada pulsador. m_pe1 es memoria de la lectura anterior.

if (peticion=0){
if (f_pe1){ destino=1; peticion=1;}
if (f_pe2){ destino=2; peticion=1;}
asi hasta que quieras …}

if (digitalRead(fc1)){posicion=1;} idem para el resto

if ( posicion<destino){accion de bajar; }
else if(destino>posicion){accion subir;}

no se como se haran los movimientos en visual por eso te pongo lo de accion.

if ((posicion==destino)& peticion){orden de abrir puerta y activar una memoria(para hacer un mini grafcet o montas fc abierto, cerrado) al cabo de x tiempo con la marca cierras la puerta, reinicias la memoria y la peticion,

con eso ya es una buena base para empezar.

con un “switch” enciendes las bombillas de la planta en funcion de posicion.

comprueba que eso funcione y me dices

juand91: lo admito no se programar en visual [...]

Si una persona es programador no aprende el 100% de las sitanxis. Yo no puedo decir que no sé programar Arduino, yo diré que soy nuevo en ese lenguaje y no conozco todas sus funciones nativas.

Sería demasiado aprender el 100% de las funciones nativas de: C, C++, C#, asp, aspx, VB, VBnet, Java, Javascript, ActionScript, Arduino, PHP, Nodejs, Ruby, React, Pearl, Pascal... y otros taaaantos que tenemos que acabar usando. Aprendes las estructuras, los operadores lógicos y el resto lo miras en las documentaciones.

Además Visual basic de siempre ha sido lenguaje de alto nivel, osea que hasta un niño leyendo la sintaxis la entiende. No se necesitan ni los ;

VB6 está bastante "defasado" en cuanto a su implantación en empresas, yo lo usaba estando en el colegio... y de eso hace ya 15 años ¿No te permiten al menos usar el VBnet o un C#? Hasta visualmente va a quedar mejor la aplicación.

Por cierto ourensemk2 Tu proyecto no me cuadra con los datos dados.

  • Si estás empezando un FP y recién estás empezando a programar ¿Cómo van a ponerte de entrada ese ejercicio? (¿Aún se llama FP? Supongo depende del país).
  • Dada mi primera pregunta, ¿No será que tu ejercicio es de pseudocódigo o al menos sin integrarlo en la parte "física" y ser sólo VB? *No se da ningún dato sobre componentes físicos, motores, sensores, límite de carga... Si fuese llevado a una practica real yo veo cosas que faltan. Raro ¿No? :-*

Enserio, parece el típico ejercicio de pseudocódigo que ponen en sus inicios al alumnado para iniciarse en la lógica... Si me dijeran que hay componentes físicos y que en vez de un inicio de FP es un proyecto de final de carrera...

Lo comento por si a lo mejor estás en el foro equivocado y debes irte directamente a uno de VB.

Saludos.

Te haré un comentario que espero lo tomes como una crítica constructiva.

El planteamiento de tu problema es como si le hablaras a un compañero de tu curso FP de Robotica. Admito no saber que no se que es FP. Me da la sensación que le contaras el proyecto a un compañero tuyo, intenta explicarte para que cualquiera comprenda.

El título dice "Ascensor Arduino con Visual Basic" y con este título y tu enunciado yo debo imaginarme todos los elementos intervinientes ya que de tu presentación no quedan claras las cosas.

Por eso.. seria bueno que expliques lo que TU comprendes que se debe hacer y no que nosostros intentemos deducirlo de lo que has informado hasta ahora.

Además todo ocurre porque no has leído las Normas del foro. Si lo haces verás que las normas piden que un tema se exponga con diagramas, esquemas, imágenes y todo lo que ayude a entender la idea.

Supongo que esto llevará una implementación, tal vez maqueta, tal vez solo requieras algo que interactue con VBasic que sea quien muestre cierta simulación. En fin... no se entiende el objetivo.

Hasta ahora solo has coseguido comentarios que surgen de algo que no se termina de entender.

NOTA: sigue los consejos que te envié por privado.

surbyte: Admito no saber que no se que es FP.

surbyte :grin: (doble negación, entonces sabes) :grin: Bromas aparte, en España se denominaba FP (formación profesional) ,medio o superior, a los grados que estaban por debajo de la titulación universitaria, destinada a una formación rápida hacia el empleo. Ahora son diferentes. Estamos hablando que la categoría de FP lo tienen personas de entre 55 y 60 años, ya no existe como tal desde puffff yo ni lo ví de cerca y ya tengo alguna cana. Ahora son ciclos.

ourensemk2, Sigo sin saber si tu duda está en el VB o en Arduino para la maqueta y si realmente el ejercicio o el profesor te pide explícitamente Arduino. Si nos comentas que tienes hecho donde están tus dudas concretamente etc sería mucho más fácil ayudarte y entendernos ¿Es la comunicación entre sí? ¿Algo con los motores? ¿Dispones ya de los elementros electrónicos?

Como comenta surbyte a más información mejor nos entenderemos, a ver si podemos ayudarte.

Me imaginé pero de nuevo, no vivo ni he vivido en España y no tengo porque saber. En lo personal me parece que todos debemos hablar de manera neutral explicando a los demás absolutamente todo, porque no se quien me va a ayudar. Puede ser un mexicano un chileno un panameño y como llaman eso en sus países.. de modos similares o distintos?

Gracias por la info Arduinito.

surbyte: Me imaginé pero de nuevo, no vivo ni he vivido en España y no tengo porque saber. En lo personal me parece que todos debemos hablar de manera neutral explicando a los demás absolutamente todo, porque no se quien me va a ayudar. Puede ser un mexicano un chileno un panameño y como llaman eso en sus países.. de modos similares o distintos?

Gracias por la info Arduinito.

Menos mal que no abrí otro post, lo he encontrado. Decirte que te mandé un privado con la corrección antes de postearla. Tengo un problema con las notificaciones. Tengo todas activadas para recibir emails cada vez que me contesten. y no me ha llegado ninguna. Que puedo comprobar?

Arduinito: Si una persona es programador no aprende el 100% de las sitanxis. Yo no puedo decir que no sé programar Arduino, yo diré que soy nuevo en ese lenguaje y no conozco todas sus funciones nativas.

Sería demasiado aprender el 100% de las funciones nativas de: C, C++, C#, asp, aspx, VB, VBnet, Java, Javascript, ActionScript, Arduino, PHP, Nodejs, Ruby, React, Pearl, Pascal... y otros taaaantos que tenemos que acabar usando. Aprendes las estructuras, los operadores lógicos y el resto lo miras en las documentaciones.

Además Visual basic de siempre ha sido lenguaje de alto nivel, osea que hasta un niño leyendo la sintaxis la entiende. No se necesitan ni los ;

VB6 está bastante "defasado" en cuanto a su implantación en empresas, yo lo usaba estando en el colegio... y de eso hace ya 15 años ¿No te permiten al menos usar el VBnet o un C#? Hasta visualmente va a quedar mejor la aplicación.

Por cierto ourensemk2 Tu proyecto no me cuadra con los datos dados.

  • Si estás empezando un FP y recién estás empezando a programar ¿Cómo van a ponerte de entrada ese ejercicio? (¿Aún se llama FP? Supongo depende del país).
  • Dada mi primera pregunta, ¿No será que tu ejercicio es de pseudocódigo o al menos sin integrarlo en la parte "física" y ser sólo VB? *No se da ningún dato sobre componentes físicos, motores, sensores, límite de carga... Si fuese llevado a una practica real yo veo cosas que faltan. Raro ¿No? :-*

Enserio, parece el típico ejercicio de pseudocódigo que ponen en sus inicios al alumnado para iniciarse en la lógica... Si me dijeran que hay componentes físicos y que en vez de un inicio de FP es un proyecto de final de carrera...

Lo comento por si a lo mejor estás en el foro equivocado y debes irte directamente a uno de VB.

Saludos.

Como bien dices, primero tengo que hacer el código arduino. Y después tengo que hacer otro código en VB, y en él, tengo que hacer un picture box con los pulsadores, el ascensor subiendo y indicando el piso en el que está y todo eso. Pero primero, quiero conseguir el código de arduino y despues me pondré con el de VB.

Tengo que entregar todo este martes. Y como no me llegaban las notificaciones, pues pensé que no me había contestado nadie.

juand91: lo admito no se programar en visual, pero lo que seria los básico te lo puedo explicar.

lo primero que necesitas es eliminar esos delay, pues durante ese tiempo el programa no va a hacer nada.

me faltan los finales de carrera para decirme en que planta estamos.

los llamaremos fc1, fc2, fc3, fc4;

luego necesitamos saber en que posicion estamos y a cual deseamos ir( int pos = 0, dest=0;) , aparte necesitas saber si alguien pidió el ascensor o no, ademas de memoria para los flancos de los pulsadores y unas señales de flanco,

m_pe1=e_pe1; e_pe1= digitalRead(pe1); f_pe1= e_pe1 $ ~m_pe1 ;

No entiendo lo de m_pe1... Gracias por tu aporte! Me pongo con ello ahora mismo, a ver si saco algo en claro. Un saludo

Ostras menudo lío se monta para comandar un ascensorillo de solo 4 plantas!

Por experiencia con ascensores para maquetas te resumo rápidamente.

Si necesitas, como creo que necesitarás que el ascensor suba y baje. Lo primero que tienes que buscar es un puente H para invertir el ciclo del motor del ascensor. Te aconsejo que hagas una búsqueda. Los hay para una gran variedad de potencias.

En lo referente al código, si lo llenas de if else de cada caso posible, (si esta en el 1 y llaman en el 2 subes al 2) (si esta en el 1 y llaman en el 3 subes al 3) (.....) Cada vez que llames al ascensor vas a tener que hacerlo con un pulso muy largo. Quedaría algo antiestetico.

Es mejor que uses la función Do While Si llaman desde el 2 piso haces esto (subes o bajas), miéntras el final de carrera no sea HIGH o el dispositivo que le pongas de parada se active.

Los Led internos y la botonera duplicada dentro y fuera del ascensor, solo tienes que incluirla en el código, en su lugar correcto.

Suerte con el misterio. Que no se te olvide poner muelles en el foso. Ante todo, seguridad :) :)

Necesito ayuda. Por favor... gracias a todos por las respuestas anteriores

Veamos, yo si soy programador VB, C#, etc… en Visual Studio…

Hay algo que he detectado en la explicación, te falta el botón ABRIR PUERTAS que no lo tienes contemplado en la parte de alarma.

Por otro lado no te dice nada de pulsadores de finales de carrera ni ningún dispositivo que detecte la parada del mismo, así que para la práctica supongo que interpretaremos que están al 25% del recorrido cada parada. Así con un simple cálculo sabrás en que planta estás. De esta forma colocas el ascensor en su sitio.

SIEMPRE le digo a todo el mundo que procure usar funciones y llamadas para las cosas, en lugar de ponerlo todo en el loop, así el loop funcionaría como “pseudocódigo”.

No tengo tiempo para hacerte la práctica en sí misma, pero creo que esto te ayudará:

// INCLUDES
- [u]de las librerías de motores[/u];
- [u]de la librería del puerto serie[/u]; (te hará falta ya que puedes enviar por puerto serie variables al VB para que realice la simulación)


// Declaración de variables
- de pulsadores externos; (pe1 al pe4)
- de pulsadores internos; (pi1 al pi4)
- del pulsador de alarma; (pa1)
- del pulsador de apertura de puerta; (pap1)

- de leds internos; (li1 al li4)
- de leds externos; (le1 al le4)
- de led de alarma; (la1)
- de leds de apertura y cierre de puertas; (lap1 y lcp1)

- de estado del ascensor; (0 = disponible; 1 = funcionando; 2 = Alarma)
- de posición de la cabina (1, 2, 3 o 4)


SETUP:

- realización de todos los inputs de pulsadores; pinMode(xxxxx, INPUT);
- realización de todos los outputs de leds; pinMode(xxxxx, OUTPUT);
- inicialización de la comunicación serie;


LOOP:

llamada si se ha pulsado pulsador de alarma; (ALARMA = 0 ó 1);

while del estado ( si estado = 0) {

     llamada posición de la cabina;

     while de pulsadores (llamada a pregunta_pulsadores()) {

       Si pulsadores de llamada y ALARMA = 0
                 --> llamada sube o baja; // Se
                 --> while (terminado) {llamada a motor (pasos, dirección);} // +1 si sube ó -1 si baja
                 --> llamada encendido leds cabinas y pisos;
                 --> llamada encendido leds apertura y cierre puertas;
                 --> llamada envío de dato por puerto serie; // para VB
       }
}

void posicioncabina (){
     Detecta donde está la cabina;
     Devuelve posición cabina; //return}

void sube o baja (){
     si boton > cabina = sube sino baja;
     devuelve piso y calculo; // Si está en el 3º y llama el 1º baja = 2}

void motor(int pasos, int dirección){
     si dirección es baja invierte puente H;
     mueve el motor tantos pasos como indique;
     llamada si se ha pulsado pulsador de alarma; (ALARMA = 0 ó 1);
         si se ha producido alarma, sale de función;
     devuelve terminado;}

void encendidoLEDScabina(){
     enciende leds de cabina según posición;}

void encendidoLEDSpisos(){
     enciende leds de pisos según posición;}

void ALARMA(){
     llamada a pulsadores;
     si pulsador es ALARMA o ABRIR PUERTAS
        si ascensor en piso inferior
              abrir puertas;
        sino
              motor a piso interior;
     llamada envio puerto serie;
}


void puertoserie (int valor, string valor){
      envio de datos por puerto serie al VB;
}

.
.
.
.
.


Más o menos sería así el pseudo código que te propondría. Se que la definición está incompleta en llamadas y demás, pero como dije no tengo mucho tiempo.

Más tarde si puede te digo en VB

No leiste que debía entregarlo el Martes pasado. Tema que no creo continue a menos que haya conseguido una prórroga para su entrega.

Si tengo una prorroga! Gracias de verdad

Nadie puede echarme una mano? Por favor...

Bueno ya he conseguido la parte de arduino. Alguien que me pueda echar una mano con Visual?

//Ascensor
int pe1=0;
int pe2=1;
int pe3=2;
int pe4=3;
int pi1=4;
int pi2=5;
int pi3=6;
int pi4=7;
int d1=8;
int d2=9;
int d3=10;
int d4=11;
int d5=12;
int d6=13;
int A=14;
int m1=15;
int m2=16;
int otras=17;
int cont=0;
int f0=0;      //activar alarma
int f1=0;      //piso al que queremos ir
int f2=0;      // piso donde estamos
int f3=0;      //abrir ascensor al llegar al piso
int f4=0;      //condiion mismo piso

void setup()
{
 pinMode(pe1,INPUT);
 pinMode(pe2,INPUT);
 pinMode(pe3,INPUT);
 pinMode(pe4,INPUT);
 pinMode(pi1,INPUT);
 pinMode(pi2,INPUT);
 pinMode(pi3,INPUT);
 pinMode(pi4,INPUT);
 pinMode(d1,INPUT);
 pinMode(d2,INPUT);
 pinMode(d3,INPUT);
 pinMode(d4,INPUT);
 pinMode(d5,OUTPUT);
 pinMode(d6,OUTPUT);
 pinMode(A,INPUT);
 pinMode(otras,INPUT);
 pinMode(m1,OUTPUT);
 pinMode(m2,OUTPUT);
 f1=1;
 digitalWrite(d6,HIGH);

}

void loop()
{
 //Activar alarma
 if(digitalRead(A==HIGH)&&(cont==0))
 {
   f0=1;
   while(digitalRead(A==LOW))
   {
     cont=1;
     while(cont==5)
     {
      cont++; 
     } 
   }
 }
 //Desactivara alarma
 if((digitalRead(A==HIGH)||digitalRead(otras==HIGH))&&(cont!=0))
 {
   f0=0;
 }
 //Vaciar ascensor despues de alarma
 if((f0==0)&&(cont!=0))
 {
   while(digitalRead(d1==HIGH)||digitalRead(d2==HIGH)||digitalRead(d3==HIGH)||digitalRead(d4==HIGH))
   {
     digitalWrite(m2,HIGH);
   }
   digitalWrite(m2,LOW);
   cont=0;
   digitalWrite(d6,LOW);
   delay(1000);            //tiempo para abrir puertas
   digitalWrite(d5,HIGH);
   delay(10000);          // tiempo de espera puertas abiertas
   digitalWrite(d5,LOW);
   delay(1000);           // tiempo para cerrar puertas 
   digitalWrite(d6,HIGH);
 }
 ///////////////////////////////////////////////////////////Ascensor llamar y ubicacion
 //llamar piso 1
 if(digitalRead((pe1==HIGH)||digitalRead(pi1==HIGH))&&(f0==0))
 {
   f1=1;
   if(d1==HIGH)
   {
     f4=1;
   }
 }
 //llamar piso 2
 if(digitalRead((pe2==HIGH)||digitalRead(pi2==HIGH))&&(f0==0))
 {
   f1=2;
   if(d2==HIGH)
   {
     f4=1;
   }
 }
 //llamar piso 3
 if(digitalRead((pe3==HIGH)||digitalRead(pi3==HIGH))&&(f0==0))
 {
   f1=3;
   if(d3==HIGH)
   {
     f4=1;
   }
 }
 //llamar piso 4
 if(digitalRead((pe4==HIGH)||digitalRead(pi4==HIGH))&&(f0==0))
 {
   f1=4;
   if(d4==HIGH)
   {
     f4=1;
   }
 }
 //ascensor piso 1
 if(digitalRead(d1==HIGH))
 {
   f2=1;
 }
 //ascensor piso 2
  if(digitalRead(d2==HIGH))
 {
   f2=2;
 }
 //ascensor piso 3
  if(digitalRead(d3==HIGH))
 {
   f2=3;
 }
 //ascensor piso 4
  if(digitalRead(d4==HIGH))
 {
   f2=4;
 }
 //subir y bajar
 while((f0==1)||(f2==f3))
 {
   //subir
   if(f1>f2)
   {
     digitalWrite(m1,HIGH);
     f3=1;
   }
   //bajar
   if(f1<f2)
   {
      digitalWrite(m2,HIGH);
      f3=1;
   }
 }
   //parar motores
   digitalWrite(m1,LOW);
   digitalWrite(m2,LOW);
   if((f2==f3)&&((f3==HIGH)||(f4==HIGH)))
   {
     digitalWrite(d6,LOW);
     delay(1000);            //tiempo para abrir puertas
     digitalWrite(d5,HIGH);
     delay(10000);          // tiempo de espera puertas abiertas
     digitalWrite(d5,LOW);
     delay(1000);           // tiempo para cerrar puertas 
     digitalWrite(d6,HIGH);
     f3=0;
     f4=0;
   }
}

ourensemk2: Bueno ya he conseguido la parte de arduino. Alguien que me pueda echar una mano con Visual?

Esto no es el foro de visual. Y a ver cuando entendemos que VB puedes estar hablando del 6.0(los antiguos) al .NET Después no creo que alguien que demanda código para su proyecto de final de curso le vaya a ir muy bien.

Aquí lo de "conseguir" partes yo personalmente no lo veo. Expones tus dudas o fallos y la gente intenta ayudar. Yo no hago tareas. Suerte.