Cómo puedo intercambiar los datos de 2 variable mostrados en un display de 7 segmentos

Hola buenas noches, en este momento estoy realizando un circuito el cual mide la temperatura y humedad del ambiente, y estoy utilizando un display de 7 segmentos para mostrar estos datos, mi idea es que cuando se envíe el mansaje "t" al Arduino muestre la temperatura y cuando envíe "h" muestre la humedad, el problema es que cuando pongo estos comandos en el "if" no sucede nada pero cuando escribo el comando directamente el "void loop" si muestra el mensaje, aquí envio el código:

#include <SevSeg.h>
#include <DHT_U.h>  //Se incluye la librería DHT_U.h y DHT.h para el uso del sensor DHT11
#include <DHT.h>
#define DHTPIN 10 //Se define el pin en el que se conectará el sensor de temperatura
#define DHTTYPE DHT11 //Se configura la librería para usar un sensor DHT11
DHT dht(DHTPIN, DHTTYPE); //Se crea la variable dht de tipo dht
SevSeg sevseg; //Instantiate a seven segment object
char opcion = " ";
void setup() {
  pinMode(10, INPUT); // Se declara el pin 2 como entrada y el pin 13 como salida
  dht.begin();  //Iniciamos el sensor
  byte numDigits = 4;
  byte digitPins[] = {10,11,12,13};
  byte segmentPins[] = {2,3,4,5,6,7,8,9};
  bool resistorsOnSegments = true; // 'false' means resistors are on digit pins
  byte hardwareConfig = COMMON_CATHODE; // See README.md for options
  bool updateWithDelays = true; // Default 'false' is Recommended
  bool leadingZeros = false; // Use 'true' if you'd like to keep the leading zeros
  bool disableDecPoint = false; // Use 'true' if your decimal point doesn't exist or isn't connected. Then, you only need to specify 7 segmentPins[]
  Serial.begin(9600);
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
  updateWithDelays, leadingZeros, disableDecPoint);
}
void loop(){
  int t = dht.readTemperature(); //Creamos una variable "t" cuyp valor va a ser igual a los datos de temperatura que registre el sensor 
  int h = dht.readHumidity();
  sevseg.refreshDisplay();
  if (Serial.available() != 0){
    opcion = Serial.read();
    if (opcion == "t"){
      sevseg.setNumber(t); 
      sevseg.refreshDisplay();
    }
    else if (opcion == "h"){
      sevseg.setNumber(h); 
      sevseg.refreshDisplay();
    }
  }
}
Si alguien sabe me puede ayudar se lo agradecería.

Las dobles comillas delimitan una string, y las comillas simples un caracter.
opcion es tipo char por lo que el caracter se delimita con comillas simples.

Prueba cambiando las comillas dobles por simples en las 3 instrucciones donde las has usado.

Gracias, lo revisaré

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.