problem with byte to char conversion

hey im new at arduino and have playing with a homemade big size 7 segment 4 digt display have tryet to make a clock but i cant get the sec, min, hour, information from the DateTime Librarie convertet to singel char so my 7 segment can read it the problem coms in a
error: invalid conversion from 'byte' to 'char*

the code

#include <DateTime.h>
int ledPin1 = 5;
int ledPin2 = 4;
int ledPin3 = 3;
int ledPin4 = 2;
int groundPin1 = 6;
int groundPin2 = 7;
int groundPin3 = 8;
int groundPin4 = 9;


int sec;
int sec2;
int minn;
int minn2;

void setup(){
  
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(groundPin1, OUTPUT);
  pinMode(groundPin2, OUTPUT);
  pinMode(groundPin3, OUTPUT);
  pinMode(groundPin4, OUTPUT);
  DateTime.sync(1234567890); 
 
}


void clear(){
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, HIGH);
}   
  


void zero(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, LOW);
}   

void one(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, HIGH); 
}   

void two(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, LOW);
    
}
void three(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, HIGH);
}  
void four(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, LOW);
}
void five(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, HIGH);
    
}
void six(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, LOW);
}
void seven(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, HIGH);
}
void eight(){
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, LOW);
}
void nine(){
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, HIGH);
}



void dig_1(){
  digitalWrite(groundPin1, HIGH);
 if (sec==1){
  clear();
  one();
}
else if(sec==2){
  clear();
  two();
}
else if(sec==3){
  clear();
  three();
}else if(sec==4){
  clear();
  four();
}else if(sec==5){
  clear();
  five();
}else if(sec==6){
  clear();
  six();
}else if(sec==7){
  clear();
  seven();
}else if(sec==8){
  clear();
  eight();
}else if(sec==9){
  clear();
  nine();
}else if(sec==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin1,LOW);
}





void dig_2(){
   digitalWrite(groundPin2, HIGH);
 if (sec2==1){
  clear();
  one();
}
else if(sec2==2){
  clear();
  two();
}
else if(sec2==3){
  clear();
  three();
}else if(sec2==4){
  clear();
  four();
}else if(sec2==5){
  clear();
  five();
}else if(sec2==6){
  clear();
  six();
}else if(sec2==7){
  clear();
  seven();
}else if(sec2==8){
  clear();
  eight();
}else if(sec2==9){
  clear();
  nine();
}else if(sec2==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin2,LOW);

}



void dig_3(){
   digitalWrite(groundPin3, HIGH);
 if (minn==1){
  clear();
  one();
}
else if(minn==2){
  clear();
  two();
}
else if(minn==3){
  clear();
  three();
}else if(minn==4){
  clear();
  four();
}else if(minn==5){
  clear();
  five();
}else if(minn==6){
  clear();
  six();
}else if(minn==7){
  clear();
  seven();
}else if(minn==8){
  clear();
  eight();
}else if(minn==9){
  clear();
  nine();
}else if(minn==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin3,LOW);
}




void dig_4(){
   digitalWrite(groundPin4, HIGH);
 if (minn2==1){
  clear();
  one();
}
else if(minn2==2){
  clear();
  two();
}
else if(minn2==3){
  clear();
  three();
}else if(minn2==4){
  clear();
  four();
}else if(minn2==5){
  clear();
  five();
}else if(minn2==6){
  clear();
  six();
}else if(minn2==7){
  clear();
  seven();
}else if(minn2==8){
  clear();
  eight();
}else if(minn2==9){
  clear();
  nine();
}else if(minn2==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin4,LOW);
}



void count(){
    unsigned long  prevtime;
  

  if(DateTime.available()) { 
    
    prevtime = DateTime.now();
    while( prevtime == DateTime.now() )  
        ;
    DateTime.available();
    char *time1 = DateTime.Second;
    char sec = *time1;
    char sec2 = *(time1+1); 
    char *time2 = DateTime.Minute;
    char minn = *time2;
    char minn2 = *(time2+1); 
  } 
          
}
     
    


void loop (){
  
  dig_1();
  dig_2();
  dig_3();
  dig_4();
  count();
  
}

sorry for the bad English

Try replacing the count function with this:

void count(){
  unsigned long  prevtime;

  if(DateTime.available()) {

    prevtime = DateTime.now();
    while( prevtime == DateTime.now() )  
      ;
    DateTime.available();
    char sec = DateTime.Second / 10;
    char sec2 = DateTime.Second %10;
    char minn =  DateTime.Minute / 10;
    char minn2 =  DateTime.Minute % 10;
  }
}

I am not sure how your digits are ordered so you may need to reverse sec/sec2 and minn/min2

Don't worry, your English is fine. Your program is not bad, either, with mem's correction.

But, there is a way to make your program better. You can replace all of the one(), two(), three(), etc. routines with just one routine:

void digit_to_pins(int digit)
{
    digitalWrite(ledPin1, ((digit >> 3) & 1));
    digitalWrite(ledPin2, ((digit >> 2) & 1));
    digitalWrite(ledPin3, ((digit >> 1) & 1));
    digitalWrite(ledPin4, (digit & 1));
}

Then, instead of:

if (sec==1){
  clear();
  one();
}
else if(sec==2){
  clear();
  two();
}
etc., etc.

You can use:

clear();
digit_to_pins(sec);

Of course, you would do the same thing for the sec2, minn, and minn2 digits.

This will make your program easier to read and modify.

Regards,

-Mike

Here is a variation on mfm9's suggestion that uses the arduino bit functions that is even easier to read:

void digit_to_pins(int digit)
{
    digitalWrite(ledPin1, bitRead(digit, 3));
    digitalWrite(ledPin2, bitRead(digit, 2));
    digitalWrite(ledPin3, bitRead(digit, 1));
    digitalWrite(ledPin4, bitRead(digit, 0) );
}

hi again I've tried to put the mem's code in but the display just flashes once every second but without displaying the figure, the way the display works, is that I have made a shield with a 7 segment 4511 decoder / driver IC and a Darlington arrays uln2803 with 8 gates which control the ground connection and the select digt to be displayed, output from the Arduino has 6 ground pins and 4 pins that set the numbers in binary to 7 segment decoder

here is the old code before i tryet to make it use DateTime

int ledPin1 = 5;
int ledPin2 = 4;
int ledPin3 = 3;
int ledPin4 = 2;
int groundPin1 = 6;
int groundPin2 = 7;
int groundPin3 = 8;
int groundPin4 = 9;

int msec;
int sec;
int sec2;
int minn;
int minn2;

void setup(){
  
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(groundPin1, OUTPUT);
  pinMode(groundPin2, OUTPUT);
  pinMode(groundPin3, OUTPUT);
  pinMode(groundPin4, OUTPUT);
 
}


void clear(){
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, HIGH);
}   
  


void zero(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, LOW);
}   

void one(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, HIGH); 
}   

void two(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, LOW);
    
}
void three(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, HIGH);
}  
void four(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, LOW);
}
void five(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, HIGH);
    
}
void six(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, LOW);
}
void seven(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, HIGH);
}
void eight(){
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, LOW);
}
void nine(){
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, HIGH);
}



void dig_1(){
  digitalWrite(groundPin1, HIGH);
 if (sec==1){
  clear();
  one();
}
else if(sec==2){
  clear();
  two();
}
else if(sec==3){
  clear();
  three();
}else if(sec==4){
  clear();
  four();
}else if(sec==5){
  clear();
  five();
}else if(sec==6){
  clear();
  six();
}else if(sec==7){
  clear();
  seven();
}else if(sec==8){
  clear();
  eight();
}else if(sec==9){
  clear();
  nine();
}else if(sec==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin1,LOW);
}





void dig_2(){
   digitalWrite(groundPin2, HIGH);
 if (sec2==1){
  clear();
  one();
}
else if(sec2==2){
  clear();
  two();
}
else if(sec2==3){
  clear();
  three();
}else if(sec2==4){
  clear();
  four();
}else if(sec2==5){
  clear();
  five();
}else if(sec2==6){
  clear();
  six();
}else if(sec2==7){
  clear();
  seven();
}else if(sec2==8){
  clear();
  eight();
}else if(sec2==9){
  clear();
  nine();
}else if(sec2==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin2,LOW);

}



void dig_3(){
   digitalWrite(groundPin3, HIGH);
 if (minn==1){
  clear();
  one();
}
else if(minn==2){
  clear();
  two();
}
else if(minn==3){
  clear();
  three();
}else if(minn==4){
  clear();
  four();
}else if(minn==5){
  clear();
  five();
}else if(minn==6){
  clear();
  six();
}else if(minn==7){
  clear();
  seven();
}else if(minn==8){
  clear();
  eight();
}else if(minn==9){
  clear();
  nine();
}else if(minn==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin3,LOW);
}




void dig_4(){
   digitalWrite(groundPin4, HIGH);
 if (minn2==1){
  clear();
  one();
}
else if(minn2==2){
  clear();
  two();
}
else if(minn2==3){
  clear();
  three();
}else if(minn2==4){
  clear();
  four();
}else if(minn2==5){
  clear();
  five();
}else if(minn2==6){
  clear();
  six();
}else if(minn2==7){
  clear();
  seven();
}else if(minn2==8){
  clear();
  eight();
}else if(minn2==9){
  clear();
  nine();
}else if(minn2==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin4,LOW);
}



void count(){
    msec=msec+1;
    
     if (msec==42){
     sec=sec+1;
     msec=0;
    }
    if (sec==10){
     sec2=sec2+1;
     sec=0;
    }
    if (sec2==6){
     minn=minn+1;
     sec2=0;
     sec=0;
    }
    if (minn==10){
     minn2=minn2+1;
     minn=0;
    }
    if (minn2==6){
      sec=0;
      sec2=0;
      minn=0;
      minn2=0;
    }
    
    
          
}
     
    


void loop (){
  
  dig_1();
  dig_2();
  dig_3();
  dig_4();
  count();
  
}

the code above works fine but the way it measures the time is very inaccurate
which is therefore want to use DateTime instead

the problem for me lies in the way it is built, I can only write one number at a time and therefore can only use the numbers from 0-9 and not numbers with two decimal places, so I think it is when I get the problem thatr it only flashes

here is the code that just flashes the display

and a video big 7 segment display - YouTube

#include <DateTime.h>
int ledPin1 = 5;
int ledPin2 = 4;
int ledPin3 = 3;
int ledPin4 = 2;
int groundPin1 = 6;
int groundPin2 = 7;
int groundPin3 = 8;
int groundPin4 = 9;


int sec;
int sec2;
int minn;
int minn2;

void setup(){
  
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(groundPin1, OUTPUT);
  pinMode(groundPin2, OUTPUT);
  pinMode(groundPin3, OUTPUT);
  pinMode(groundPin4, OUTPUT);
  DateTime.sync(1234567890); 
 
}


void clear(){
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, HIGH);
}   
  


void zero(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, LOW);
}   

void one(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, HIGH); 
}   

void two(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, LOW);
    
}
void three(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, HIGH);
}  
void four(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, LOW);
}
void five(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, HIGH);
    
}
void six(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, LOW);
}
void seven(){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, HIGH);
}
void eight(){
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, LOW);
}
void nine(){
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    digitalWrite(ledPin4, HIGH);
}



void dig_1(){
  digitalWrite(groundPin1, HIGH);
 if (sec==1){
  clear();
  one();
}
else if(sec==2){
  clear();
  two();
}
else if(sec==3){
  clear();
  three();
}else if(sec==4){
  clear();
  four();
}else if(sec==5){
  clear();
  five();
}else if(sec==6){
  clear();
  six();
}else if(sec==7){
  clear();
  seven();
}else if(sec==8){
  clear();
  eight();
}else if(sec==9){
  clear();
  nine();
}else if(sec==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin1,LOW);
}





void dig_2(){
   digitalWrite(groundPin2, HIGH);
 if (sec2==1){
  clear();
  one();
}
else if(sec2==2){
  clear();
  two();
}
else if(sec2==3){
  clear();
  three();
}else if(sec2==4){
  clear();
  four();
}else if(sec2==5){
  clear();
  five();
}else if(sec2==6){
  clear();
  six();
}else if(sec2==7){
  clear();
  seven();
}else if(sec2==8){
  clear();
  eight();
}else if(sec2==9){
  clear();
  nine();
}else if(sec2==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin2,LOW);

}



void dig_3(){
   digitalWrite(groundPin3, HIGH);
 if (minn==1){
  clear();
  one();
}
else if(minn==2){
  clear();
  two();
}
else if(minn==3){
  clear();
  three();
}else if(minn==4){
  clear();
  four();
}else if(minn==5){
  clear();
  five();
}else if(minn==6){
  clear();
  six();
}else if(minn==7){
  clear();
  seven();
}else if(minn==8){
  clear();
  eight();
}else if(minn==9){
  clear();
  nine();
}else if(minn==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin3,LOW);
}




void dig_4(){
   digitalWrite(groundPin4, HIGH);
 if (minn2==1){
  clear();
  one();
}
else if(minn2==2){
  clear();
  two();
}
else if(minn2==3){
  clear();
  three();
}else if(minn2==4){
  clear();
  four();
}else if(minn2==5){
  clear();
  five();
}else if(minn2==6){
  clear();
  six();
}else if(minn2==7){
  clear();
  seven();
}else if(minn2==8){
  clear();
  eight();
}else if(minn2==9){
  clear();
  nine();
}else if(minn2==0){
  clear();
  zero();
}
delay(5);
digitalWrite(groundPin4,LOW);
}



void count(){
  unsigned long  prevtime;

  if(DateTime.available()) {

    prevtime = DateTime.now();
    while( prevtime == DateTime.now() )
      ;
    DateTime.available();
    char sec = DateTime.Second / 10;
    char sec2 = DateTime.Second %10;
    char minn =  DateTime.Minute / 10;
    char minn2 =  DateTime.Minute % 10;
  }
}

     
    


void loop (){
  
  dig_1();
  dig_2();
  dig_3();
  dig_4();
  count();
  
}

Here is something that needs work but should get you closer:

#include <DateTime.h>
int ledPin1 = 5;
int ledPin2 = 4;
int ledPin3 = 3;
int ledPin4 = 2;

int placePins[] = {6,7,8,9};  // pins to select the digit place  (these were previously named groundPins)

void setup(){
  
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  for(int i=0; i < 4; i++)  
     pinMode(placePins[i], OUTPUT);
  DateTime.sync(1234567890);
  Serial.begin(9600);
}
 

void clear(){
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    digitalWrite(ledPin4, HIGH);
}  
  
void showNumeral(int numeral)
{
    Serial.println(numeral,DEC);
    digitalWrite(ledPin1, bitRead(numeral, 3));
    digitalWrite(ledPin2, bitRead(numeral, 2));
    digitalWrite(ledPin3, bitRead(numeral, 1));
    digitalWrite(ledPin4, bitRead(numeral, 0) );
} 

void showDigit(int place, int numeral)
{
   Serial.print(place); Serial.print("=");
   digitalWrite(placePins[place],  HIGH);
   showNumeral(numeral);
   delay(5);
   digitalWrite(placePins[place],  LOW);
}

void loop (){
unsigned long  prevtime;

  if(DateTime.available()) {

    prevtime = DateTime.now();
    while( prevtime == DateTime.now() )
      ;
    DateTime.available();
    showDigit(0, DateTime.Second / 10);
    showDigit(1, DateTime.Second %10);
    showDigit(2, DateTime.Minute / 10);
    showDigit(3, DateTime.Minute % 10);
    Serial.println();
  }  
}

Here is a finished version of the code posted above. You probably will need to change the order of the pins if you have the digits connected differently to my test.

The same code can be used to drive a 4x4 LED array as a binary clock (that's how I tested it)

You can easily modify it to display hours by changing a few lines of code.

// Binary clock using DateTime
// drives Row LEDs on  on

#include <DateTime.h>

int numeralPins[] = {2,3,4,5}; //pins controlling the binary representation of a numeral (were called ledPin) 
int placePins[] = {6,7,8,9};  // pins to select the digit place  (these were called groundPins)- add two more pins to display hours

void setup(){
  for(int i=0; i < 4; i++)  
     pinMode(numeralPins[i], OUTPUT);
  for(int i=0; i < 4; i++)    // change 4 to 6 if you add two pins to display the hours
       pinMode(placePins[i], OUTPUT);
       
  DateTime.sync(1234567890);
}
  
void showDigit(int place, int numeral)
{
   digitalWrite(placePins[place],  LOW);
   for(int bit=0; bit < 4; bit++) 
       digitalWrite(numeralPins[bit], bitRead(numeral, bit));
   delay(5);
   digitalWrite(placePins[place],  HIGH);
}

void loop ()
{
    DateTime.available();
    showDigit(0, DateTime.Second / 10);
    showDigit(1, DateTime.Second %10); 
    showDigit(2, DateTime.Minute / 10);
    showDigit(3, DateTime.Minute % 10);
  
// to show hours: uncomment the next two lines and add two pins to the placePins array     
//    showDigit(4, DateTime.Hour / 10);
//    showDigit(5, DateTime.Hour %10); 
}

tanks for the cod work well the only thing was that i switch the HIGH LOW around and set the pins i the right order

a short video with the new code