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;
}
}
}