Go Down

Topic: Cambiar estado de pin de entrada de LOW a HIGH sin voltaje en el pin (Read 204 times) previous topic - next topic

oliver565

Hola.
Bueno lo primero decir que soy nuevo en arduino y programación, y también nuevo en el foro. Espero estar posteando mi problema en el sitio correcto, si no por favor indicarmelo para poder hacerlo bien.

Puede que mi pregunta sea una tontería pero me estoy volviendo loco y no logro solucionarlo.

voy al grano.

La idea es manejar un laser desde arduino mediante un interruptor, y que se pueda manejar desde el pc mediante una aplicación.
El problema es que si tengo el estado del interruptor en low e intento encenderlo desde la aplicación con el envío de una 'h' me lo enciende durante una milésima y vuelve al estado low que le indica el interruptor.

No puedo usar un bucle en el envío de la 'h' desde el pc porque necesito tener el puerto libre para el manejo de un motor.

Creo que lo que me esta dando el problema es el estado del interruptor en LOW, porque si elimino del código de arduino la parte de código del interruptor, desde el pc puedo encender el láser sin problema y seguir usando el puerto para el manejo del motor.

Espero haberlo explicado bien porque es bastante complicado.

el problema es en el manejo de los láser desde el pc.

Repito que soy muy novato en el tema de arduino, pero creo que si pudiera cambiar el valor del pin del interruptor a HIGH aun teniendo el interruptor abierto podría ser la solución. El tema es que no logro hacerlo

algo así:

si(recibo desde el pc 'h')
{
  btnlaser1 = HIGH; //con lo cual se encendería el láser, pero no me funciona.
  }

Adjunto el código completo.

Gracias de antemano y un saludo.

Pablo_Lucini

Y si. Tu programa hace lo que le estás pidiendo. Durant el loop está leyendo el estado del botón del láser y lo apaga reiteradamente. Tenés que definir si tu botón del láser va a prenderlo, apagarlo o ambas cosas, más allá de lo que le indiques por Bluetooth. Si en un momento el Bluetooth enciende el láser en el próximo loop el botón indica que está en LOW, por eso lo apaga. Decime como queres que funcione tu sistema ( que tiene que hacer el botón ) asi te puedo orientar. Te recomiendo leas las normas del foro y etiquetes como corresponde tu programa.

oliver565

Hola Pablo.
Lo primero gracias por responder, lo postee aqui porque crei que era el sitio correcto, como es para programacion pense que era el sitio correcto. Si no es asi por favor decirme exactamente donde colocarlo. Perdon por la confusion.

La idea que tengo es la siguiente.

voy a manejar un motor el cual tiene varias velocidades en cada sentido, y va a manejar tambien dos laser.

El proyecto va a tener un mando con botones para el motor e interruptores para los laser. Tambien puede ser manejado desde el pc por usb.

El problema es que si le pongo a los interruptores de los laser este codigo:

int valor1 = digitalRead(btnlaser1);
 int valor2 = digitalRead(btnlaser2);
 digitalWrite (laser1, valor1);
 digitalWrite (laser2, valor2);

funciona perfecto, pero cuando intento encender cualquiera de los laser desde el pc mediante este codigo solo se encienden por una milesima, al instante se apaga:

if (pc == 'h')
    {
      digitalWrite(laser1, HIGH); //Enciende el laser 1
    }
    if (pc == 'i')
    {
      digitalWrite(laser1, LOW); //Apaga el laser 1
    }
    if (pc == 'j')
    {
      digitalWrite(laser2, HIGH); //Enciende el laser 2
    }
    if (pc == 'k')
    {
      digitalWrite(laser2, LOW); //Apaga el laser2
    }

Lo que me hace pensar que el problema lo tengo en el valor LOW de el interruptor al estar apagado, es que si elimino el codigo de los interruptores, desde el pc funciona perfecto. Lo enciende y se queda encendido hasta nueva orden, y puedo seguir manejando el motor desde el pc, o desde los botones.

Tambien probe a hacer un bucle desde el pc para que me envie la orden en bucle, pero entonces mientras esta enviando esa orden, el puerto serie esta ocupado, y no puedo manejar el motor desde el pc.

Desde mi poca experiencia creo que tengo que conseguir cambiar el valor de btnlaser1 y btnlaser2 a HIGH aunque su valor sea LOW por estar el interruptor abierto, pero no soy capaz a conseguirlo.... o que funcione.


Pablo_Lucini

Insisto. Lee las normas del foro para aprender como se sube un código. Mas allá de eso no me dijiste que tiene que hacer el botón laser1 (apagar, prender, cambiar el estado). ¿Es un pulsador o un interruptor?

Go Up