integer zerlegen

Hallo,
ich habe eine Variable vom Type int, dieser ist von 0-59.
Jetzt möchte ich wenn der Wert größer 9 ist diesen in die einzelnen Zahlen zerlegen
z.B. aus 12 wir dann 1 und 2
oder aus 35 wird dann 3 und 5
kann mir da jemand weiterhelfen.
Das ganze ist für eine Uhr die auf ein Zweizeiligen Display die Zeit in großen Ziffern darstellen soll.

z.Z rufe ich die Ziffern noch so auf
// number, pos
customNumber(1,0);
customNumber(2,4);
customNumber(11,7);
customNumber(5,9);
customNumber(9,13);

wobei ich die Nummern (also die erste Ziffer in der Klammer) durch die Aufgeteilten Integer Werte ersetzen will.

Dann hab ich bei meiner Arduino 1.0 Version das Problem, wenn ich lcd.write(0); aufrufe, das ich eine Fehlermeldung bekomme.

sketch_jul18b.cpp: In function ‘void customNumber(int, int)’:
sketch_jul18b:118: error: call of overloaded ‘write(int)’ is ambiguous

wenn ich aber statt lcd.write(0);
lcd.write(cc1);schreibe wobei cc0 eine Integer Variable mit dem Wert 0 ist, geht es.

Hier mal ein Auszug aus meinem Code um die Funktion zu verdeutlichen.

#include <LiquidCrystal.h>

LiquidCrystal lcd = LiquidCrystal(8, 9, 4, 5, 6, 7); 
  
int cc0=    0;
byte newChar0[8] = {
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
};

byte newChar1[8] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
};

byte newChar2[8] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};

byte newChar3[8] = {
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
};
byte newChar4[8] = {
  B00000,
  B00000,
  B00011,
  B00011,
  B00011,
  B00000,
  B00000,
  B00000,
};
byte newChar5[8] = {
  B00000,
  B00000,
  B11000,
  B11000,
  B11000,
  B00000,
  B00000,
  B00000,
};

void setup() {
  lcd.createChar(0, newChar0);
  lcd.createChar(1, newChar1);
  lcd.createChar(2, newChar2);
  lcd.createChar(3, newChar3);
  lcd.createChar(4, newChar4);
  lcd.createChar(5, newChar5);



  lcd.begin(16, 2); 
  lcd.clear();
}

void loop (){
  // number,  pos
  customNumber(1,0);
  customNumber(2,4);
  customNumber(11,7);
  customNumber(5,9);
  customNumber(9,13);
  delay(1000);
   customNumber(1,0);
  customNumber(2,4);
  //customNumber(11,7);
  customNumber(5,9);
  customNumber(8,13);
  delay(1000);
    customNumber(1,0);
  customNumber(2,4);
  customNumber(11,7);
  customNumber(5,9);
  customNumber(7,13);
  delay(1000);
    customNumber(1,0);
  customNumber(2,4);
  //customNumber(11,7);
  customNumber(5,9);
  customNumber(6,13);
  delay(1000);
}

void customNumber(int number, int pos)
{
  
     switch (number){
      case 0:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(cc0);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(2);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 1:
      {
        lcd.setCursor(pos,0);
        lcd.write(cc0);
        lcd.write(2);
        lcd.write(32);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(1);
        lcd.write(2);
        lcd.write(1);
        lcd.write(32);
        break;
      }
      case 2:
      {
        lcd.setCursor(pos,0);
        lcd.write(cc0);
        lcd.write(cc0);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(2);
        lcd.write(3);
        lcd.write(3);
        lcd.write(32);
        break;
      }
      case 3:
      {
        lcd.setCursor(pos,0);
        lcd.write(cc0);
        lcd.write(3);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(1);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 4:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(32);
        lcd.write(32);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 5:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(3);
        lcd.write(3);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(1);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 6:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(3);
        lcd.write(3);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(2);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 7:
      {
        lcd.setCursor(pos,0);
        lcd.write(cc0);
        lcd.write(cc0);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(32);
        lcd.write(32);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 8:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(3);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(2);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 9:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(3);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(1);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 11:
      {
        lcd.setCursor(pos,0);
        lcd.write(4);
        lcd.write(5);
        lcd.setCursor(pos, 1);
        lcd.write(4);
        lcd.write(5);
        break;
      }
      
     }
}

einer = minuten %10; zehner = minuten /10;

Grüße Uwe

Danke Uwe,

ich werde es nachher mal probieren.

Gruß
Ingo

EDIT
Ich hab den Vorschlag von Uwe umgesetzt.
Anbei der Countdowntimer mit großen Ziffern.
Aufgebaut auf dem LCD Shield von DfRobot

Untitled by mr_sc0tch, on Flickr

Und hier noch der Code. Evtl. kann es ja der Eine oder Andere gebrauchen.

#include <LiquidCrystal.h>

LiquidCrystal lcd = LiquidCrystal(8, 9, 4, 5, 6, 7); 
unsigned long currentTime;
unsigned long loopTime; 

int cc0=    0;
byte newChar0[8] = {
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
};

byte newChar1[8] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
};

byte newChar2[8] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};

byte newChar3[8] = {
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
};
byte newChar4[8] = {
  B00000,
  B00000,
  B00011,
  B00011,
  B00011,
  B00000,
  B00000,
  B00000,
};
byte newChar5[8] = {
  B00000,
  B00000,
  B11000,
  B11000,
  B11000,
  B00000,
  B00000,
  B00000,
};
//Startvorgabe für den Countdown
int Minuten = 0, Sekunden =15; 
int mZehner, sZehner, mEiner, sEiner;

void setup() {
  lcd.createChar(0, newChar0);
  lcd.createChar(1, newChar1);
  lcd.createChar(2, newChar2);
  lcd.createChar(3, newChar3);
  lcd.createChar(4, newChar4);
  lcd.createChar(5, newChar5);
  currentTime = millis(); 


  lcd.begin(16, 2); 
  lcd.clear();
}

void loop (){



  // number,  pos

   if(Minuten >= 0 && Sekunden >= 0) 
  {
    countdown();
  }
 else
  {
   buzz();
  }

}

void countdown()
{
  currentTime = millis();
  if(currentTime >= (loopTime + 1000))  
  {  
    loopTime = currentTime;  // Updates loopTime
    Sekunden--;
    //aufteilen der Minuten und Secunden auf einzelne Zahlen
    mZehner = Minuten /10;
    mEiner = Minuten %10;
    sZehner = Sekunden /10;
    sEiner = Sekunden %10;
    //aufruf der einzelnen Ziffern und am Display ausgeben
    customNumber(mZehner,0);
    customNumber(mEiner,4);
    customNumber(11,7);
    customNumber(sZehner,9);
    customNumber(sEiner,13); 
    
    //Wenn Sec 0 dann Min -1, Sec wieder auf 59
    if (Sekunden == 0) 
    {
      Minuten--;
      Sekunden = 60;
    } 
  }

}

void buzz(){
  lcd.clear();
  lcd.setCursor(0,1);
  lcd.print("fertig");
  delay(500);
  analogWrite(10,30);
  delay(500);
  analogWrite(10,255);
  delay(500);
  lcd.setCursor(0,1);
  lcd.print("      ");
  analogWrite(10,30);
  delay(500);
  analogWrite(10,255);
  delay(500);
  lcd.setCursor(0,1);
  lcd.print("fertig");
  lcd.setCursor(0,1);
  lcd.print("      ");
  analogWrite(10,30);
  delay(500);
  analogWrite(10,255);
  delay(500);
  analogWrite(10,30);
  delay(500);
  analogWrite(10,255);  
  lcd.setCursor(0,1);
  lcd.print("      ");
}

void customNumber(int number, int pos)
{
  
     switch (number){
      case 0:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(cc0);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(2);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 1:
      {
        lcd.setCursor(pos,0);
        lcd.write(cc0);
        lcd.write(2);
        lcd.write(32);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(1);
        lcd.write(2);
        lcd.write(1);
        lcd.write(32);
        break;
      }
      case 2:
      {
        lcd.setCursor(pos,0);
        lcd.write(cc0);
        lcd.write(cc0);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(2);
        lcd.write(3);
        lcd.write(3);
        lcd.write(32);
        break;
      }
      case 3:
      {
        lcd.setCursor(pos,0);
        lcd.write(cc0);
        lcd.write(3);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(1);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 4:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(32);
        lcd.write(32);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 5:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(3);
        lcd.write(3);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(1);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 6:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(3);
        lcd.write(3);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(2);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 7:
      {
        lcd.setCursor(pos,0);
        lcd.write(cc0);
        lcd.write(cc0);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(32);
        lcd.write(32);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 8:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(3);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(2);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 9:
      {
        lcd.setCursor(pos,0);
        lcd.write(2);
        lcd.write(3);
        lcd.write(2);
        lcd.write(32);
        lcd.setCursor(pos, 1);
        lcd.write(1);
        lcd.write(1);
        lcd.write(2);
        lcd.write(32);
        break;
      }
      case 11:
      {
        lcd.setCursor(pos,0);
        lcd.write(4);
        lcd.write(5);
        lcd.setCursor(pos, 1);
        lcd.write(4);
        lcd.write(5);
        break;
      }
      
     }
}