Problemas com Buttons

Bom vamos ao meu codigo todos.
O principio seria basico, um display 4x20 que mostrase algumas informações sobre o estado do carro.
*Portas abertas (1 fio porta fechada entorno de 12v, porta aberta 0v) // sensor original do carro
*Data (usar RTC)
*Hora (usar RTC)
*Bateria (1 fio pinA0 Resolvido)
*Sonda Lambda (1 fio resultado de 0v ~ 1v) // sensor original do carro
*Temperatura (1 fio resultado 0v ~1v) // sensor original do carro
*RPM (pegar do sensor hall // sensor original do carro) http://api.ning.com/files/FqkiRUfegCh3oTr97YY67K0L1J9oMwB5yFwTKnSgipd7HBebIugmH8Kr6xAHDiJ4uf1eFRwqzxFmEOfwqC6mS57oqsqg1XfX/CKP_Sensor_Waveforms.gif olha no exemplo
*Combustivel (1 fio resultado 0v ~1v) // sensor original do carro

Até o momento só oque tive tempo de desenvolver foi oque citarei abaixo, só parei porque tive problemas com buttons

#include <LiquidCrystal.h>
int i=0; // multimetro bateria
const int portade = 8; // botao
const int portadd = 9; // botao
const int portamalas = 10; // botao
int buttonState = 0; // botao
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // pinos do display

void setup() {
   pinMode(portade, INPUT);//boato
   pinMode(portadd, INPUT);//boato
   pinMode(portamalas, INPUT);//boato
  lcd.begin(20, 4); // colunas e casas do display
}

void loop() {

  buttonState = digitalRead(portade); // le sinal de portade
  if (buttonState == HIGH) { // se tiver em HIGH
  lcd.setCursor(0, 0); // seta primeira linha do display
  lcd.print(" Porta DE Aberta"); // imprime na tela porta de aberta
  }
  else { // low não imprime nada
  }
  buttonState = digitalRead(portadd);
  if (buttonState == HIGH) {       
  lcd.setCursor(0, 0);
  lcd.print(" Porta DD Aberta");
  }
  else {
  }
  buttonState = digitalRead(portamalas);
  if (buttonState == HIGH) {       
  lcd.setCursor(0, 0);
  lcd.print(" Porta Malas Aberto");
  }
  else {
  }
  lcd.setCursor(0, 1); // seta segunda linha do display
  lcd.print("Bateria");  // imprime bateria
  int sensorValue = analogRead(A0); // le pino de entrada A0
  float voltage = sensorValue * (5.0 / 1023.0); // converte o calculo
  lcd.print(voltage); // imprime o resultado de voltage
  lcd.setCursor(0, 2); // seta terceira linha
  lcd.print("     KM: 4567800"); // imprime kilometragem (provisoria)
  lcd.setCursor(0, 3); // seta quarta linha
  lcd.print(" 19/04/2014   20:17 ");  // imprime data e hora (usar rtc para mostrar data e hora)
  delay(1000); // delay para atualizar informações
 }