No termino de entender que es lo que quieres hacer. Corrígeme si me equivoco, pero creo que pretendes que:
- Si pulsas pul1 y z es 12, pones a=39 y b=a+z=39+12=51
- Si sueltas (no pulsas) pul1, pones z=0
- Con pul2 haces lo mismo pero restando z (b=a-z=39-12=27)
- Si está pulsado pul1 envías por el puerto serie "159,36,127"
- Si no está pulsado pul1 envías por el puerto serie "143,36,0"
Si es así:
- En las condiciones tienes que utilizar el operador '==' y en las asignaciones '='
if ((v7 == HIGH)&&(z==12)) {
(a = 39);
(b = a+z);
}
if (v7 == LOW){
(z=0);
}
-
El valor z no lo modificas nunca, solo lo pones a cero cuando el pulsador está en bajo, por lo que nunca cumplirá la condición (z==12) ni entrará en el if.
-
No filtras en ningún sitio los posibles rebotes del pulsador, por lo que te puede dar falsos positivos.
-
Puedes utilizar la variable z como filtro de rebotes (aunque 12 ciclos de programa es, quizá, poco tiempo y tendrías que añadir un delay()). Este código solucionaría los puntos 2 y 3 (con las suposiciones que he hecho, claro), aunque deberías utilizar otra variable para el pulsador pul2:
if ((v7 == HIGH))
{
z++;
if(z==12)
{
a = 39;
b = a+z;
}
delay(10); // Para filtrar rebotes (pulsación > 10*12 milisegundos)
}
if (v7 == LOW)
{
z=0;
}
- ¿Por qué utilizas variables y sumas, si luego las utilizas como constantes?
Dentro del if:
if ((v7 == HIGH)&&(z=12)) {
(a = 39);
(b = a+z);
}
puede sustituir las dos asignaciones directamente por:
b=51;
porque siempre que utilizas a (más abajo en la llamada a la función no()) le asignas el valor que quieres utilizar en ese momento y no haces operaciones con ella.
-
Te has dejado de cerrar el paréntesis del if que comprueba si pul2 está en alto.
-
¿Por qué lees dos veces el valor del pulsador pul1 y primero le das valor a=39 y después a=36? Puedes hacerlo todo dentro del mismo if
-
¿Para qué le pasas como parámetro a la función no() el valor b si luego no lo utiliza? ¿Si utiliza a, por qué no se lo pasas (aunque no hace falta porque es pública, igual que b)? ¿Para qué utilizas la variable a en la función no() si en la función no() siempre va a valer 36?
-
¿Por qué pones casi todas las asignaciones de variables entre parentesis?

Si lo que quieres hacer es otra cosa, creo que tendrías que explicarlo mejor para poder analizar el código.