Hallo Arduino Forum,
ich bin ein absoluter Arduino Anfänger,
für ein IT Projekt muss ich eine 4 stellige 7 Sequement Anzeige ans laufen bringen.
Die Zahlen von 0000-9999 müssen angezeigt werden.
Mein Problem ist das der SerialMonitor die meine Eingaben in ASCII Zeichen ausgibt.
Wie kann ich die Zahlen auf dem Display in Deziamalzahlen umwandeln? Das ist für die meisten wahrscheinlich ein Kinderspiel
Ich habe etwas davon gelesen das bei jeder Zahl -48 funktionieren soll. Habe ich wohl aber nicht so ganz verstanden. Auch mit Atoi habe ich es noch nicht so verstanden. Ist Atoi eine Bibliothek ? Dann dürfte ich die für das Projekt nicht nutzen.
Das ist mein Code zu dem Programm.
int pinA=6;
int pinB=8;
int pinC=12;
int pinD=10;
int pinE=9;
int pinF=7;
int pinG=13;
int pinDP=11;
int D1=2;
int D2=3;
int D3=4;
int D4=5;
int Eingabe;
int S1;
int S2;
int S3;
int S4;
void ziffer1();
void ziffer2();
void ziffer3();
void ziffer4();
void ziffer5();
void ziffer6();
void ziffer7();
void ziffer8();
void ziffer9();
void ziffer0();
void alleaus()
{
digitalWrite(pinA,LOW);
digitalWrite(pinB,LOW);
digitalWrite(pinC,LOW);
digitalWrite(pinD,LOW);
digitalWrite(pinE,LOW);
digitalWrite(pinF,LOW);
digitalWrite(pinG,LOW);
digitalWrite(pinDP,LOW);
}
void ziffer1(){
digitalWrite(pinA,LOW);
digitalWrite(pinB,HIGH);
digitalWrite(pinC,HIGH);
digitalWrite(pinD,LOW);
digitalWrite(pinE,LOW);
digitalWrite(pinF,LOW);
digitalWrite(pinG,LOW);
digitalWrite(pinDP,LOW);
}
void ziffer2(){
digitalWrite(pinA,HIGH);
digitalWrite(pinB,HIGH);
digitalWrite(pinC,LOW);
digitalWrite(pinD,HIGH);
digitalWrite(pinE,HIGH);
digitalWrite(pinF,LOW);
digitalWrite(pinG,HIGH);
digitalWrite(pinDP,LOW);}
void ziffer3(){
digitalWrite(pinA,HIGH);
digitalWrite(pinB,HIGH);
digitalWrite(pinC,HIGH);
digitalWrite(pinD,HIGH);
digitalWrite(pinE,LOW);
digitalWrite(pinF,LOW);
digitalWrite(pinG,HIGH);
digitalWrite(pinDP,LOW);
}
void ziffer4(){
digitalWrite(pinA,LOW);
digitalWrite(pinB,HIGH);
digitalWrite(pinC,HIGH);
digitalWrite(pinD,LOW);
digitalWrite(pinE,LOW);
digitalWrite(pinF,HIGH);
digitalWrite(pinG,HIGH);
digitalWrite(pinDP,LOW);
}
void ziffer5(){
digitalWrite(pinA,HIGH);
digitalWrite(pinB,LOW);
digitalWrite(pinC,HIGH);
digitalWrite(pinD,HIGH);
digitalWrite(pinE,LOW);
digitalWrite(pinF,HIGH);
digitalWrite(pinG,HIGH);
digitalWrite(pinDP,LOW);
}
void ziffer6(){
digitalWrite(pinA,HIGH);
digitalWrite(pinB,LOW);
digitalWrite(pinC,HIGH);
digitalWrite(pinD,HIGH);
digitalWrite(pinE,HIGH);
digitalWrite(pinF,HIGH);
digitalWrite(pinG,HIGH);
digitalWrite(pinDP,HIGH);
}
void ziffer7(){
digitalWrite(pinA,HIGH);
digitalWrite(pinB,HIGH);
digitalWrite(pinC,HIGH);
digitalWrite(pinD,LOW);
digitalWrite(pinE,LOW);
digitalWrite(pinF,LOW);
digitalWrite(pinG,LOW);
digitalWrite(pinDP,LOW);
}
void ziffer8(){
digitalWrite(pinA,HIGH);
digitalWrite(pinB,HIGH);
digitalWrite(pinC,HIGH);
digitalWrite(pinD,HIGH);
digitalWrite(pinE,HIGH);
digitalWrite(pinF,HIGH);
digitalWrite(pinG,HIGH);
digitalWrite(pinDP,LOW);
}
void ziffer9(){
digitalWrite(pinA,HIGH);
digitalWrite(pinB,HIGH);
digitalWrite(pinC,HIGH);
digitalWrite(pinD,HIGH);
digitalWrite(pinE,LOW);
digitalWrite(pinF,HIGH);
digitalWrite(pinG,HIGH);
digitalWrite(pinDP,LOW);
}
void ziffer0(){
digitalWrite(pinA,HIGH);
digitalWrite(pinB,HIGH);
digitalWrite(pinC,HIGH);
digitalWrite(pinD,HIGH);
digitalWrite(pinE,HIGH);
digitalWrite(pinF,HIGH);
digitalWrite(pinG,LOW);
digitalWrite(pinDP,LOW);
}
void zifferntrennung(int Eingabe)
{
S1=Eingabe%10;
Eingabe-=S1;
S2=Eingabe%100/10;
Eingabe-=10S2;
S3=Eingabe%1000/100;
Eingabe-=100S3;
S4=Eingabe%10000/1000;
}
void setup() {
Serial.begin(9600);
pinMode(pinA,OUTPUT);
pinMode(pinB,OUTPUT);
pinMode(pinC,OUTPUT);
pinMode(pinD,OUTPUT);
pinMode(pinE,OUTPUT);
pinMode(pinF,OUTPUT);
pinMode(pinG,OUTPUT);
pinMode(pinDP,OUTPUT);
pinMode(D1,OUTPUT);
pinMode(D2,OUTPUT);
pinMode(D3,OUTPUT);
pinMode(D4,OUTPUT);
}
void a_zahl (byte z){
switch (z){
case 1: ziffer1(); break;
case 2: ziffer2(); break;
case 3: ziffer3(); break;
case 4: ziffer4(); break;
case 5: ziffer5(); break;
case 6: ziffer6(); break;
case 7: ziffer7(); break;
case 8: ziffer8(); break;
case 9: ziffer9(); break;
case 0: ziffer0(); break;
}
}
void loop()
{ if(Serial.available())
Eingabe =Serial.read();
zifferntrennung(Eingabe);
alleaus();
a_zahl(S1);
digitalWrite(D1,HIGH);
digitalWrite(D2,HIGH);
digitalWrite(D3,HIGH);
digitalWrite(D4,LOW);
delay(2);
alleaus();
a_zahl(S2);
digitalWrite(D1,HIGH);
digitalWrite(D2,HIGH);
digitalWrite(D3,LOW);
digitalWrite(D4,HIGH);
delay(2);
alleaus();
a_zahl(S3);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
digitalWrite(D3,HIGH);
digitalWrite(D4,HIGH);
delay(2);
alleaus();
a_zahl(S4);
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
digitalWrite(D3,HIGH);
digitalWrite(D4,HIGH);
delay(2);
}
Es wäre toll wenn mir jemand helfen kann. Stehe doch etwas unter Zeitdruck mit dem Projekt.
Vielen Dank.
Denis