ayuda variable char

gente estoy tratando de comparar una variable del tipò char el cual contiene un horario con un modulo rtc 1302 y necesito ayuda

mas o menos lo que hago es lo siguiente

#include <DS1302.h>

DS1302 rtc(22, 24, 28);
char luz = "12:00";
void setup(){
  Serial.begin(9600);
  }
  
  void loop(){
  if (luz > =   getTimeStr())
    {Serial.print("luz on");
    }
  }

pero me da error de declaracion de la variable

sketch_jan17a:4: error: invalid conversion from 'const char*' to 'char'
sketch_jan17a.ino: In function 'void loop()':
sketch_jan17a:10: error: expected primary-expression before '=' token
sketch_jan17a:10: error: 'getTimeStr' was not declared in this scope

Buenas, no se por que te da el error, pero de todos modos getTimeStr() te retorna la hora en formato largo "hh:mm:ss" tendrias que usar getTimeStr(FORMAT_SHORT) . Otra opcion que si te va a funcionar, es crear una estructura con int hora int minuto int segundo y recojerla con getTime()

Hola. No puedes declarar luz como char a secas, sino como char *luz="12:00", ya que no es un caracter, sino unarray de caracteres finalizado en null.

noter me podrias dar un ejemplo para entenderlo mejor si no es molestia ? desde ya gracias

Tan solo te decía que si modificas la línea para poner
char *luz = "12:00";
esto sería equivalente más o menos a esto:
char luz[6]={'1', '2', ':', '0', '0', '\0'};
el compilador no te dará error en la declaración. Un char es eso: un caracter. Por ejemplo esto sería correcto:
char letra='y';

No obstante, no puedes comparar dos cadenas como pretendes luego (por cierto, no separes las dos partes de >=, que da otro error), pues obtendrás un resultado incierto: estás comparando dos punteros. Puedes utilizar la función strcmp(cadena1, cadena2), que devuelve número mayor, menor o igual que cero dependiendo del resultado de la comparación.
Saludos.

lo echo de la siguiente forma como mencionaste pero no me reconoce el cambio siempre me escribe en el monitor serial luz prendida y no cambia a apagada :S que es lo que esta mal ?

char luz [6]={'1', '2', ':', '0', '0', '\0'};
char luz2 [6]={'0', '2', ':', '4', '9', '\0'};

   void luces() {
  if (luz  >= rtc.getTimeStr(FORMAT_SHORT)&&(luz < luz2)) {

    
    Serial.println("luz prendida:)");
    
  }
  
    else 
    { Serial.println("luz apagada");   
    
    
  }
  }

ya probaste declarando la variable luz como tipo string?

en lugar de char string.
string luz = "12:00";

con string me dice que no es un tipo de variable correcto

indoor_automatizado__:10: error: 'string' does not name a type
indoor_automatizado__.ino: In function 'void luces()':
indoor_automatizado__:121: error: 'luz' was not declared in this scope

Creo que tienes un cacao mental con el tema de las cadenas en c. Puedes definir tus cadenas así:

char *luz1="12:00";
char *luz2="12:10";

Pero, como te dije antes, no puedes comparar cadenas así:
if (luz1 >= luz2)
porque estás comparando las direcciones físicas donde están almacenadas las cadenas, no las cadenas en sí. Para compararlas utiliza:
if (strcmp(luz1, luz2) >=0)

Prueba lo siguiente, a ver qué resultado obtienes:
Serial print("luz1: ");
Serial.println(luz1);
Serial print("luz2: ");
Serial.println(luz2);
Serial print("strcmp(luz1, luz2): ");
Serial.println(strcmp(luz1, luz2));
Serial print("strcmp(luz1, luz1): ");
Serial.println(strcmp(luz1, luz1));
Serial print("strcmp(luz2, luz1): ");
Serial.println(strcmp(luz2, luz1));
Serial.print("hora actual");
Serial.println(rtc.getTimeStr(FORMAT_SHORT));

A partir de ahí, supongo que tendrás un poco más de luz sobre el asunto.