Sensor de Temperatura

Compre el Sparkfun Invebtors Kit V3.2
Y tengo el siguiente sketch →
//…
//Written By: Francisco J. Gonzalez Holmann
// 3:00pm , 03/04/2015
//Semana Santa - Viernes
//…
#include <SoftwareSerial.h>
SoftwareSerial XBee(2, 3); // RX, TX

const int PinUno = 3;
const int PinDos = 4;
const int Temp = 1;
float voltage, degreesC, degreesF;
const int buzzer = 9;
const int songLength = 18;
char notes = "cdfda ag cdfdg gf ";
int beats = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
int tempo = 150;

void setup() {
XBee.begin(9600);
pinMode(PinUno, OUTPUT);
pinMode(PinDos, OUTPUT);
pinMode(buzzer, OUTPUT);
}

void loop() {
if (XBee.available()) {
int inByte = XBee.read();
switch (inByte) {
case ‘5’:
digitalWrite(PinDos, HIGH);
break;
case ‘6’:
digitalWrite(PinDos, LOW);
break;
case ‘7’:
digitalWrite(PinUno, HIGH);
break;
case ‘8’:
digitalWrite(PinUno, LOW);
break;
case ‘1’:
voltage = analogRead(Temp) * 0.004882814;
degreesC = (voltage - 0.5) * 100.0;
degreesF = degreesC * (9.0/5.0) + 32.0;
XBee.print("Holmann Voltage: “);
XBee.print(voltage);
XBee.print(” Grados C: “);
XBee.print(degreesC);
XBee.print(” Grados F: ");
XBee.println(degreesF);
break;
case ‘2’:
int i, duration;
for (i = 0; i < songLength; i++) {
duration = beats * tempo;
_ if (notes == ’ ') {_
* delay(duration);*
* } else {*
_ tone(buzzer, frequency(notes*), duration);
delay(duration);
}
delay(tempo/5);
}
break;
}
}
}
int frequency(char note) {
int i;
const int numNotes = 8;
char names = { ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘a’, ‘b’, ‘C’ };
int frequencies = {262, 294, 330, 349, 392, 440, 494, 523};
for (i = 0; i < numNotes; i++) {
if (names == note) {
return(frequencies);
}
}
return(0);
}*

Cuando apreto el numero 5 un led rojo se enciende correctamente.
Cuando apreto el numero 6 el led rojo se apaga correctamente.
Cuando apreto el numero 7 mi relevador o relay se activa y enciende una lampara de escritorio ok.
Cuando apreto el numero 8 el relevador se desactiva y se apaga la lampara de escritorio ok.
Cuando apreto el numero 2 se actiba el buzzer y suena una musica tipo midi ok.
Cuando apreto el numero 1, recibo la temperatura actual y ademas se enciende mi lampara
de escritorio por cerca de 1 milisegundo y seguidamente se apaga.
Que podria estar haciendo mal con el pin analogico numero 1?
Alguna idea porfavor?
Gracias
Franco_

Yo no veo como es que se enciende la lámpara y se apaga en 1 mseg. La única explicación es que llegue un ´2´ como residuo de algun tipo.

En lo personal no me gusta que dentro del switch procesando una de las entradas termines enviando datos por el puerto XBEE.
Yo levantaría un flag para hacerlo cuando salgo y terminé de procesar la entrada.
x ejemplo pones usas un flag que defines asi.

bool flag = false;

y cuando termina

    case ´1´: 
                voltage = analogRead(Temp) * 0.004882814;
                degreesC = (voltage - 0.5) * 100.0;
                degreesF = degreesC * (9.0/5.0) + 32.0; 
                flag = true;
                break;

cuando termina

if (XBee.available()) {
    // aca el switch case

}

entonces pones

if (flag) {
  XBee.print("Holmann Voltage: ");
  XBee.print(voltage);
  XBee.print("  Grados C: ");
  XBee.print(degreesC);
  XBee.print("  Grados F: ");
  XBee.println(degreesF); 
  flag = false;
}

a ver si estas sugerencias resuelven la situación

Gracias Surbyte

Mi problema estaba en lo siguiente: ->

SoftwareSerial XBee(2, 3); // RX, TX

const int PinUno = 3;
const int PinDos = 4;
const int Temp = 1;

Xbee estaba utilizando el Pin 3 y el relay estaba siendo activado
con el mismo PinUno = 3.
Al poner PinUNo = 5 y mover la conexion correspondiente
se soluciono completamente.

Saludos
Y Muchas Gracias
Franco