Mover Servo con Boton pulsador

Buenas, soy nuevo con el tema del arduino y estoy haciendo mis pinitos.
Ahora estoy intentando que con un pulsador, pueda mover un servomotor 90 grados, y cuando se vuelva a pulsar, volver al antiguo estado (es decir, que recorra -90 grados)

El codigo que he utilizado para programar es este, pero no me funciona, por mas vueltas que le doy.

Si alguien pudiera darme una idea sobre cual puede ser el error, se lo agradeceria.

#include <Servo.h>

int buttonPin = 2;
Servo myservo;

int buttonState = 0;
boolean state;

void setup (){
myservo.attach(9);
pinMode(buttonPin, INPUT);
}

void loop(){
buttonState = digitalRead(buttonPin);

if (buttonState == HIGH){
if (state == false){
state = true;
}
else{
state = false;
}
}
if (state = true){
myservo.write(60);
}
else{
myservo.write(120);
}
}

Hola.
Tu problema es que la variable “state” cambia de estado cada vez que corre el programa mientras mantenés el botón pulsado. Me tomé la libertad de arreglartelo, así yo también aprendo!.

#include <Servo.h>

int buttonPin = 2;
Servo myservo;

int buttonState = 0;
int prevState; //variable del valor previo de buttonState
int ang; //angulo del servo

void setup (){
myservo.attach(9);
pinMode(buttonPin, INPUT);
}

void loop(){
buttonState = digitalRead(buttonPin);

if (buttonState == HIGH && buttonState != prevState){ //esta el boton pulsado? y el estado del boton es diferente que el de hace un instante?
if (ang == 120) { // si el angulo era 120, hazlo 60
ang = 60; } else { // visceversa
ang = 120;
}
}

prevState = buttonState; // hace el valor previo del boton, igual al del boton… luego de haber corrido lo de arriba
myservo.write(ang);
delay(10); //el delay parece arreglar un problemita que habia
}