Tu Error:
Observa los parentesis y trata e ir paso por paso
if( input(PIN_B2)==1) || (input(pin_b4==1) )
en ese caso existe un parentesis de menos antes del input(PIN_B2), ademas observa que es input(PIN_XX) y vos metiste el == dentro. Ahora lo voy a escribir bien y vamos a desmenuzarlo
if( (input(PIN_B2)==1) || (input(pin_b4)==1) )
Ahora si. los parentesis de afuera recubren todo lo de adentro , Adentro hay 2 elementos por una OR.
(input(PIN_B2)==1) || (input(pin_b4)==1)
Como en una OR logica deberia hacer OR entre TRUE/FALSE me refiero a TRUE || FALSE, TRUE || TRUE , FALSE || FALSE, etc
Cada uno de esos elementos es una comparacion:
input(PIN_B2) == 1
input() es una funcion, que va a devolver un numero 1 o 0, segun el pin que posea el argumento. Si es 1 lo devuelto por esta funcion, esa condicion quedaria 1 == 1 , es decir 1 igual a 1 ? TRUE ( Verdadero ), sino puede que devuelva un 0 y quedar 0 == 1, 0 igual a 1?, FALSE ( Falso )
Entonces pensalo paso a paso. Suponete que B2 es igual a 0, y B4 igual a 1. el if quedaria asi:
if( (input(PIN_B2)==1) || (input(pin_b4)==1) )
if( ( 0 == 1 ) || ( 1 == 1 ) )
if( FALSE || TRUE )
if( TRUE )
Con lo que entraria al if por ser la condicion Verdadera.
Ahora vamos con el error y por que uno te funciono y otro no.
- El primer caso fue que le erraste en la cantidad de parentesis, como decia el if deberia encerrar TODO pero en el primer caso:
if(input(PIN_B2)==1) || (input(pin_b4==1))
Se cierra luego del primer ==1, lo cual esta mal el if() quedando algo asi:
if(input(PIN_B2)==1) || (input(pin_b4==1))
Como si ese OR y lo demas fuera aparte. y no es asi.
- Tu segundo codigo en cambio no tiene problemas de parentesis, observaras que los parentesis del input() abren y cierran 1 ves, en cada caso y el parentesis del if abre y cierra en todo.
if( input(PIN_B2)==1 || input(pin_b4==1) )
El problema aca es el segundo input(), me refiero a :
input( pin_b4 == 1 )
Como observas no le estoy pasando el valor PIN_B4 a input, sino que le estoy pasando el valor PIN_B4 == 1, es decir un TRUE o un FALSE. A pesar que uno pienso que ese PIN_B4 sea el pin exacto, para el programa PIN_B4 no es mas que un numero, que luego dentro de input, segun el numero ingresado leera la entrada que se desee. Tal ves ahi estabas leyendo A0 o A1, o tal ves un mal valor por que le estabas pasando un 0 o un 1. Distinto es como tenias antes:
input(PIN_B2) == 1
Y que como analizamos primero se resuelve la funcion, esta devuelve un valor (0 o 1 en este caso) que se compara con 1.
Espero que veas donde te estas equivocando. Son cosas muy basicas, pero muy basicas.
Pero segui que pronto va a ser todo mas facil.