Duda respecto a switches en arduino

Hola, estoy realizando un proyecto en Arduino, casi todo pmi programa está completo y funcionando correctamente, sin embargo, quiero implementar unos switches y botones que hagan que se ejecute cierta acción u otra. Por ejemplo si un switch da una lectura high y también otro botón, entonces hará x funciones.
Traté poniendo:

if (digitalread(switch) == high)

y adentro todo el programa que quiero que se ejecute cuando esto sea verdadero

Pero no funciona, pero para ver si el resto funcionaba puse

if (digitalread(switch) == low)

y el resto del programa se ejecutaba con normalidad

Ya intenté poniendo resistencias pull up para evitar cortos en la arduino, pero no sé si algo más esté fallando.
Perdonen si es una pregunta muy estúpida pero no encuentro otro posible error debido a que soy un novato en arduino. Gracias de antemano por responder :slight_smile:

Eso es más que todo cuestión de a dónde ese botón conecta al pin: voltaje o tierra. Si dices que funciona solo en estado LOW, es porque lo conecta a tierra.

Una cosa es un pulsador y otra un switch.

Pulsador tiene un estado de reposo. Switch puede estar en uno u otro estado.
Que estas usando?

Hola, gracias por sus respuestas, en mi circuito utilizo ambos, sé que el pulsador tiene un estado de reposo y el switch dos estados. El problemas es que cuando por ejemplo pongo mi switch en estado high o el boton en high, el programa no ejecuta lo que està dentro del if. Pero si uso if low sì, pero yo quiero que lo haga con High.

Lo estoy conectando de esta forma

Obelix117:
por ejemplo pongo mi switch en estado high o el boton en high

¿A qué te refieres con "switch/boton en estado high"? ¿Que está accionado o que la entrada digital está en HIGH lógico?

Obelix117:
Lo estoy conectando de esta forma

Conexión incorrecta al switch. Al pin va el punto central, tierra en un extremo, y nada en el otro.

Lucario448:
¿A qué te refieres con "switch/boton en estado high"? ¿Que está accionado o que la entrada digital está en HIGH lógico?

Me refiero a que la entrada digital recibirá un valor high lógico

Conexión incorrecta al switch. Al pin va el punto central, tierra en un extremo, y nada en el otro.

No te entendì muy bien, te refieres a algo asì?:

Yo le estoy poniendo una resistencia (una resistencia que llaman pull up) porque leì que si no la pones puede provocar un corto en la arduino.

Obelix117:
No te entendì muy bien, te refieres a algo asì?:

Sigues equivocado. Los 5v los sigue recibiendo el pin de entrada (mediante el pull-up). Un extremo del switch se conecta a tierra, y el otro a nada.

a12347.png

Obelix117:
Yo le estoy poniendo una resistencia (una resistencia que llaman pull up) porque leì que si no la pones puede provocar un corto en la arduino.

Ahí sí estás en lo correcto; aunque el corto circuito no lo sufriría el microcontrolador, sino más bien la fuente de poder.
Prescindir de ella no solo puede ocasionar corto circuito, también lecturas aleatorias cuando tampoco está conectado a tierra.

PD: en configuración “pull-up”, el estado activo es bajo (LOW); por lo tanto, no esperes que con HIGH se detecte una pulsación o cambio en el switch.