Como lograr que se ejecute el programa solo al pulsar un boton.

Buenas, soy nuevo en programando con arduino, ya he hecho varios proyectos pero solo con labview, quisiera saber si esta en sus posibilidades decirme o referirme a unos ejemplos de como hacer para que mi programa se ejecute cuando lea una entrada; es decir cual pulse un boton se ejecute el programa. Acontinuacion voy a mostrar el programa en C. Por favor si no van a ayudar no comenten.

int   Pin_de_medicion = 0; // Pin analogico 0
  int   R1 = 330; // Cambiar por el valor de la resistencia conocida
  long  lectura; // Lectura en el pin analogico 5
  float Tension_de_trabajo = 5.0; // VCC 
  float Voltaje_R2; // Valor que calculamos
  float Resistencia; // Valor que calculamos

  void setup()
{
  Serial.begin(9600);
  Serial.println("Medición de resistencia:");
  Serial.println();
  pinMode (13,OUTPUT);// Falla por alta impedancia
  pinMode (12,OUTPUT); // Falla por baja impedancia
  pinMode (8,OUTPUT); // PRUEBA APROBADA
}

  void loop()
{
  // Leemos el valor en el pin A5
  lectura=0;
  for(int i=0;i<5;i++){
    lectura+=analogRead(Pin_de_medicion);
  }
  lectura=trunc(lectura/5);
  
  // Colculamos el voltaje en la resistencia desconocida
  
 Voltaje_R2=(Tension_de_trabajo/1023.0)*lectura;
  
  // Lo imprimimos en el Monitor Serie
  Serial.print("Voltaje en R2: ");
  Serial.print(Voltaje_R2,2);
  Serial.println(" Voltios");
  
  //Calculamos la resistencia desconocida con las fórmulas
  // (V1/R1=V2/R2) y (V1=+5V-V2)

  Resistencia=R1*Voltaje_R2/(Tension_de_trabajo-Voltaje_R2);
  
  Serial.print("La resistencia tiene ");
  Serial.print(Resistencia,2);
  Serial.println(" Ohm.");
  Serial.println();
  delay(5000);
  
 // Hacemos la comparacion de los valores
 if(Resistencia > 2.9){ 
 digitalWrite(13,HIGH); 
 digitalWrite(12,LOW); 
 digitalWrite(8,LOW); } 
 else {
 if(Resistencia<2.0){ 
 digitalWrite(12,HIGH); 
 digitalWrite(13,LOW); 
 digitalWrite(8,LOW); } 
 }
if((Resistencia>=2.0)&& (Resistencia<2.8)){
  digitalWrite(8,HIGH);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);
  }
  }

http://forum.arduino.cc/index.php?topic=390783.0

Buenas tardes, debes crear un if que verifique si el botón ha sido pulsado y si se pulsa va a una función que haga los cálculos… Acá el código

int   Pin_de_medicion = 0; // Pin analogico 0
  int   R1 = 330; // Cambiar por el valor de la resistencia conocida
  long  lectura; // Lectura en el pin analogico 5
  float Tension_de_trabajo = 5.0; // VCC 
  float Voltaje_R2; // Valor que calculamos
  float Resistencia; // Valor que calculamos
  int estado;
  
  void setup()
{
  Serial.begin(9600);
  Serial.println("Medición de resistencia:");
  Serial.println();
  pinMode (13,OUTPUT);// Falla por alta impedancia
  pinMode (12,OUTPUT); // Falla por baja impedancia
  pinMode (8,OUTPUT); // PRUEBA APROBADA
  pinMode (5,INPUT); // Para verificar el pulsador
}

  void loop()
{
  estado = digitalRead(5);    //capturamos si el boton ha sido pulsado en el pin 5
     if(estado == HIGH){
      calcular();
      delay(100);  //cada 100 milisegundos verificamos si se pulso el boton
     }
}

void calcular(){
  // Leemos el valor en el pin A5
  lectura=0;
  for(int i=0;i<5;i++){
    lectura+=analogRead(Pin_de_medicion);
  }
  lectura=trunc(lectura/5);
  
  // Colculamos el voltaje en la resistencia desconocida
  
 Voltaje_R2=(Tension_de_trabajo/1023.0)*lectura;
  
  // Lo imprimimos en el Monitor Serie
  Serial.print("Voltaje en R2: ");
  Serial.print(Voltaje_R2,2);
  Serial.println(" Voltios");
  
  //Calculamos la resistencia desconocida con las fórmulas
  // (V1/R1=V2/R2) y (V1=+5V-V2)

  Resistencia=R1*Voltaje_R2/(Tension_de_trabajo-Voltaje_R2);
  
  Serial.print("La resistencia tiene ");
  Serial.print(Resistencia,2);
  Serial.println(" Ohm.");
  Serial.println();
  delay(5000);
  
 // Hacemos la comparacion de los valores
 if(Resistencia > 2.9){ 
 digitalWrite(13,HIGH); 
 digitalWrite(12,LOW); 
 digitalWrite(8,LOW); } 
 else {
 if(Resistencia<2.0){ 
 digitalWrite(12,HIGH); 
 digitalWrite(13,LOW); 
 digitalWrite(8,LOW); } 
 }
if((Resistencia>=2.0)&& (Resistencia<2.8)){
  digitalWrite(8,HIGH);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);
  }
  }