Duda: Problema con interrupciones [SOLUCIONADO]

Hola, espero que estén pasando un buen día. Hace poco creé el tema Duda Botón: Hacer que un programa cambie al pulsar botón [SOLUCIONADO] - Proyectos - Arduino Forum en el que tenía un problema con un botón que al final solucioné con el código que subí en el último post. Tenía un programa funcional que mostraba la temperatura en ºC o en K según tocara el botón, pero tenía el problema del rebote, pulsaba el botón y cambiaba 3 ó 4 veces.
Hoy, después de informarme un poco he probado a intentar arreglar el problema del rebote con un condensador y un disparador Schmitt, pero al no tener idea de que es al menos el disparador (no acabo de comprender que hago) lo he hecho copiando un esquema que he encontrado en Google, y aquí empieza el problema. El programa que tengo hoy no tiene rebotes, si pulso muestra la temperatura en ºC y si vuelvo a pulsar en K, pero la muestra fija, si quiero que cambie tengo que dejar pulsado el botón. Es decir, antes miraba la pantalla y la veía bailando "23,85-23,89-23,92-23,90..." pulsaba y lo mismo en K, ahora muestra una única temperatura, la que haya al pulsar el botón.
El esquema que he seguido y lo que he hecho son las imágenes adjuntas (en vez de una bombilla RGB un termistor), el programa es:

//Librerías
#include <FastIO.h>
#include <I2CIO.h>
#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal_SR.h>
#include <LiquidCrystal_SR2W.h>
#include <LiquidCrystal_SR3W.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#include <Wire.h>
//Asignación de variables.
//BOTÓN
int boton=2; //Donde conecto el botón (2 ó 3).
bool eboton=1; //Flag Estado del Botón (ºC=1;K=0).
bool flag=0; //Flag reinicio de pantalla.
//TERMISTOR
int sensorPin = A0; //Sensor del que leo el termistor.
int valorsensor; //Valor bruto que lee el sensor (0-1023).
float voltaje; //Voltaje que llega al sensor que lee.
float r1; //R Termistor.
int r2=9800; //R conocida.
float a=-30.36;
float b=232.94; //Parámetros T=a·ln(R)+b  .
float temp; //Temperatura que lee el termistor.
float temp2; //Temp auxiliar para la pantalla.
/*************Comienzo del programa*************/
void setup() {
lcd.begin(16,2);
pinMode(boton,INPUT);
Serial.begin(57600); //¿Necesario?
attachInterrupt(0,Inter,LOW); //Interrupción elegante.
}
void loop() {
while (eboton==0) { //Temperatura en K
   if (flag==0){
    lcd.clear();
    flag=1;
   }
    temp=md()+273.15;
    lcdpr();
    lcd.print(temp);
    lcd.setCursor(13,1);
    lcd.print("K");
    delay(500);
}
while (eboton==1) { //Temperatura en ºC
  if (flag==0){
    lcd.clear();
    flag=1;
   }
    temp=md();
    lcdpr();
    lcd.print(temp);
    lcd.setCursor(12,1);
    lcd.print("C");
    delay(500);
//Si cambio el número de cifras en la pantalla la reinicio.    
    if ((temp>100 && temp2<=100)||(temp<100 && temp2>=100)){
    lcd.clear(); 
    lcdpr();
   }
    if ((temp>10 && temp2<=10)||(temp<10 && temp2>=10)){
    lcd.clear();
    lcdpr();
   }
    lcd.setCursor(6,1);
    lcd.print(temp);
    lcd.setCursor(12,1);
    lcd.print("C");
    temp2=temp;
}
}
/**********Funciones**********/
float tem(int vs) { //Función para el cálculo de la Tª
  voltaje=(vs*5);
  voltaje=voltaje/1023; //Calcula el voltaje
  r1=r2*(5-voltaje)/voltaje; //Calcula la resistencia
  temp=log(r1);
  temp=a*temp;
  temp=temp+b;
  return temp;
}
float md() { //Función para la media de 10 muestras
  float suma=0;
  float media=0;
  int i=0;
  for (i=0;i<10;i++) {
    suma=suma+tem(analogRead(sensorPin));
  }
  media=suma/10;
  return media;
}
void lcdpr() { //Función imprimir "La temperatura\n es de".
    lcd.setCursor(0,0);
    lcd.print("La temperatura");
    lcd.setCursor(0,1);
    lcd.print("es de ");
    lcd.setCursor(6,1);
}
void Inter(){ //Función interrupción.
  eboton=!eboton;
  flag=0;
  }

Adjunto una tercera imagen de que muestra el programa si le pido que muestre la temperatura por consola. Hace eso sin pulsar yo el botón.

No me deja subir esta imagen: http://i.imgur.com/W1mVj3e.jpg

Un saludo y gracias por todo.

PD: Cables rojos->Alimentación (5V)
C. negros->Masa
C. blancos-> Conectados a Arduino para dar u obtener información.
C. amarillos->Movimiento de aquí a allá por la protoboard

MODIFICACIÓN:

En primer lugar pido disculpas, prometo que llevaba ya tiempo y no podía sacarle punta a esto y justo ahora de casualidad lo he resuelto. He cambiado

attachInterrupt(0,Inter,LOW);

por

attachInterrupt(0,Inter,FALLING);

Me gustaría dejar un día o dos antes de indicar que está solucionado porque sólo funciona en ese modo y no entiendo porque. Hasta donde veo en todos sitios al tocar un botón se dan los 4 estados: LOW, RISING, FALLING y CHANGE (este último "funciona", cambia dos veces y da cambios de Tª continua).

De nuevo lo siento pero no se me había ocurrido algo tan básico como cambiar eso en lugar de seguir un consejo como los burros. Si alguien pudiera explicarme (o indicarme algún error) se lo agradezco mucho.

He modificado tu código y espero que la presentación en el lcd funcione en las columnas que tu habias predeterminado.
Uso la librería Switch que ya te adjunto y debes incluir en arduino\libraries (al pie dejo la librería en un .zip)

//Librerías
#if ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif

#include <Switch.h>

//#include <FastIO.h>
//#include <I2CIO.h>
//#include <Wire.h>
#include <Lcd.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);


//Asignación de variables.
// Definición de Pulsadores
const byte botonPin      = 2;      // Donde conecto el botón (2 ó 3).
// botón conectado a VCC, 10k resistencia pull-down conectada a masa, no uso resistor interno pull-up resistor, Polaridad HIGH
Switch boton    = Switch(botonPin, INPUT, HIGH); 

bool modo           = 1;      // Flag Estado del Botón (ºC=1;K=0).
bool flag             = 0;      // Flag reinicio de pantalla.

//TERMISTOR
const byte sensorPin  = A0;     // Sensor del que leo el termistor.
int valorsensor;                // Valor bruto que lee el sensor (0-1023).
float voltaje;                  // Voltaje que llega al sensor que lee.
float r1;                       // R Termistor.
int r2                = 9800;   // R conocida.
float a               = -30.36;
float b               = 232.94; //Parámetros T=a·ln(R)+b  .
float temp;                     //Temperatura que lee el termistor.
float temp2;                    //Temp auxiliar para la pantalla.
enum modo = {CELCIUS, KELVIN}

/*************Comienzo del programa*************/
void setup() {
  lcd.begin(16,2);
  pinMode(boton,INPUT);
  Serial.begin(57600);          //¿Necesario?
}


void loop() {
  char buffer[20];
  char str[6];

  boton.poll();
  if (boton.pushed()) {
    modo = !modo;
    lcd.clear();
  }
 
  temp = md();
  if (modo == KELVIN) {
      temp += 273.15;
  }
   
  lcdpr();
  
  if (modo == KELVIN) {
     sprintf(buffer, "es de %s K", dtostrf(temp, 5,2, str));
  }
  else 
     sprintf(buffer, "es de %s C", dtostrf(temp, 5,2, str));
  lcd.setCursor(6,1);
  lcd.print(buffer);
  delay(500);


}

/**********Funciones**********/
float tem(float vs) { //Función para el cálculo de la Tª
                      // ahora vs es float
  
  voltaje = vs*0,00488758;              //Calcula el voltaje  5.0/1023 = 0,004887585532746823069403714565
  r1 = r2*(5-voltaje)/voltaje;          //Calcula la resistencia
  temp = a*log(r1) + b;                 // este paso puede eliminarse y ponerse directamente
  return temp;                          // return a*log(r1)+b
}

float md() { //Función para la media de 10 muestras
  unsigned int suma = 0;

  for (int i=0; i<10; i++) {
      suma += analogRead(sensorPin);
  }
  float media = tem((float) suma/10);       // puede ponerse return tem((float) suma/10);

  return media;
}

void lcdpr() { //Función imprimir "La temperatura\n es de".
    lcd.setCursor(0,0);
    lcd.print("La temperatura");
    lcd.setCursor(0,1);
    lcd.print("es de ");
    lcd.setCursor(6,1);
}

Para probarlo he comentado las librerias lcd asi que quita el comentario

Switch.zip (2.16 KB)

Lo probaré cuando tenga mi UNO a mano, posiblemente ya mañana, en cualquier caso mi problema es que no entiendo porque en el anterior la interrupción no detectaba (no sé como expresarlo mejor) los modos RISING y FALLING. Se supone que si pulso un botón se dan todos los estados y es cosa mía elegir el que me convenga ¿no?
Muchas gracias por tomarte la molestia en cualquier caso.

Si pero tu interrupción venía de la mano de ese capacitor que pusiste y el Schmitt trigger no?
Aca no hace falta. Esa librería funciona bien, cuando te acostumbras no pierdes el tiempo con los pulsadores y sus rebotes

Lo acabo de probar y después de marearme un poco (un signo igual que no estaba donde debía y provocaba un error que no entendía :D) va genial, me empollaré un poquito este método porque hay bastantes cosas que sé que funcionan pero no como.
Muchas gracias por todo.

Ahhh retira el capacitor y lo que pusiste con el switch que ya no hacen falta.