Hey, ich bins nochmal ![]()
Erstmal danke für die zügigen und hilfreichen Antworten ![]()
So, meine Situation..
Ja, ich bin noch dabei einen Torzähler zu programmieren..
Ein Ultraschallsensor erkennt ein TOR, gibt ein Signal weiter an ein Matrix 8x8 LED, das dann TOR TEAm X und den neuen Spielstand anzeigt.. TOR TEAM X läuft als Animation über das Board, während danach der neue Spielstand so lange ("still") angezeigt wird bis ein neues TOR fällt.
Ich hatte jetzt vor eine Variable "TOR" einzufügen, die sich um 1 erhöht, wenn ein TOR fällt..
Dann möchte ich einige if Schleifen schreiben, die aus if TOR (die Variable) 1 ist, dann läuft TOR TEAM X durch und zeigt 1 an. Wenn dann nochmal ein TOR fällt, wird die Variable wieder um 1 erhöht, dann heisst es if TOR (Variable) 2 ist, dann ... usw..
Geht das? Ist das machbar?
Vielen Dank ![]()
Marvin ![]()
Code:
int Max7219_pinCLK1 = 10;
int Max7219_pinCS1 = 9;
int Max7219_pinDIN1 = 8;
int pos1 = 0;
int pingPin1 = 12;
int inPin1 = 13;
int TOR;
unsigned char i;
unsigned char j;
unsigned char disp2[38][8]={
{
0b00001000,
0b00011000,
0b00101000,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b00001000
},//1
};
#define NUMCHARS 37 // Kleiner Zeichensatz aus 37 Zeichen (0..9, A..Z und Leerzeichen)
const char chars[NUMCHARS+1]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
const unsigned char disp1[NUMCHARS][9]={
{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//0
{0x10,0x30,0x50,0x10,0x10,0x10,0x10,0x10},//1
{0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E},//2
{0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0},//3
{0x8,0x18,0x28,0x48,0xFE,0x8,0x8,0x8},//4
{0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0},//5
{0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x0},//6
{0x3E,0x22,0x4,0x8,0x8,0x8,0x8,0x8},//7
{0x0,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E},//8
{0x3E,0x22,0x22,0x3E,0x2,0x2,0x2,0x3E},//9
{
0b00011000,
0b00100100,
0b01000010,
0b01000010,
0b01111110,
0b01000010,
0b01000010,
0b01000010
} ,//A
{
0b01111100,
0b01000010,
0b01000010,
0b01111100,
0b01000010,
0b01000010,
0b01000010,
0b01111100
} ,//B
{
0b00111100,
0b01000010,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01000010,
0b00111100
} ,//C
{
0b01111100,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b01111100
} ,//D
{
0b01111110,
0b01000000,
0b01000000,
0b01111000,
0b01000000,
0b01000000,
0b01000000,
0b01111110
} ,//E
{
0b01111110,
0b01000000,
0b01000000,
0b01111000,
0b01000000,
0b01000000,
0b01000000,
0b01000000
} ,//F
{
0b00111100,
0b01000010,
0b01000000,
0b01000000,
0b01001100,
0b01000010,
0b00100010,
0b00011100
} ,//G
{
0b01000010,
0b01000010,
0b01000010,
0b01111110,
0b01000010,
0b01000010,
0b01000010,
0b01000010
} ,//H
{
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000
} ,//I
{
0b00000100,
0b00000100,
0b00000100,
0b00000100,
0b00000100,
0b00000100,
0b01000100,
0b00111000
} ,//J
{
0b01000010,
0b01000100,
0b01001000,
0b01010000,
0b01100000,
0b01010000,
0b01001000,
0b01000100
} ,//K
{
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01111110
} ,//L
{
0b01000010,
0b01000010,
0b01100110,
0b01011010,
0b01000010,
0b01000010,
0b01000010,
0b01000010
},//M
{
0b01100010,
0b01100010,
0b01010010,
0b01010010,
0b01001010,
0b01001010,
0b01000110,
0b01000110
} ,//N
{
0b00111100,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b00111100
} ,//O
{
0b01111100,
0b01000010,
0b01000010,
0b01111100,
0b01000000,
0b01000000,
0b01000000,
0b01000000
} ,//P
{
0b00111100,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b01010010,
0b01001010,
0b00111100
} ,//Q
{
0b01111100,
0b01000010,
0b01000010,
0b01111100,
0b01010000,
0b01001000,
0b01000100,
0b01000010
} ,//R
{
0b00111100,
0b01000010,
0b01000000,
0b00111100,
0b00000010,
0b00000010,
0b01000010,
0b00111100
}
,//S
{
0b00111110,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b00001000
} ,//T
{
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b00111100
} ,//U
{0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18},//V
{0x0,0x49,0x49,0x49,0x49,0x2A,0x1C,0x0},//W
{0x0,0x41,0x22,0x14,0x8,0x14,0x22,0x41},//X
{
0b01000010,
0b01000010,
0b00100100,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00011000
} ,//Y
{0x0,0x7F,0x2,0x4,0x8,0x10,0x20,0x7F},//Z
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},// [Space]
};
void Write_Max7219_byte(unsigned char DATA)
{
unsigned char i;
digitalWrite(Max7219_pinCS1,LOW);
for(i=8;i>=1;i--)
{
digitalWrite(Max7219_pinCLK1,LOW);
digitalWrite(Max7219_pinDIN1,DATA&0x80);//Obtain the MSB of the data
DATA = DATA<<1;
digitalWrite(Max7219_pinCLK1,HIGH);
}
}
void Write_Max7219(unsigned char address,unsigned char data)
{
digitalWrite(Max7219_pinCS1,LOW);
Write_Max7219_byte(address);
Write_Max7219_byte(data);
digitalWrite(Max7219_pinCS1,HIGH);
}
void writeChar2Matrix(byte* databytes)
{
int i;
for(i=0;i<8;i++)
{
Write_Max7219(i+1,databytes[i]);
}
}
void Init_MAX7219(void)
{
Write_Max7219(0x09, 0x00); //decode: BCD
Write_Max7219(0x0a, 0x03); //Brightness
Write_Max7219(0x0b, 0x07); //
Write_Max7219(0x0c, 0x01); //
Write_Max7219(0x0f, 0x00); //
}
void setup()
{
pinMode(Max7219_pinCLK1,OUTPUT);
pinMode(Max7219_pinCS1,OUTPUT);
pinMode(Max7219_pinDIN1,OUTPUT);
delay(50);
Init_MAX7219();
Serial.begin(9600);
}
void textloop(char* text)
{
byte i,j,k;
byte data[8];
byte thischar, nextchar;
for(j=0;j<strlen(text);j++)
{
thischar=strchr(chars,text[j])-chars; // Index des Buchstaben im disp1 Array
// Index des nächsten Buchstaben im disp1 Array
if (j+1<strlen(text)) nextchar=strchr(chars,text[j+1])-chars;
else nextchar=strchr(chars,' ')-chars;
for (k=0;k<8;k++)
{
for (i=0;i<8;i++)
{
data[i]=((unsigned int)disp1[thischar][i]<<8 | disp1[nextchar][i]) >>8-k;
}
writeChar2Matrix(data);
delay(100);
}
}
}
void loop(){
long duration, inches, cm;
pinMode (pingPin1, OUTPUT);
digitalWrite(pingPin1, LOW);
delayMicroseconds(2);
digitalWrite(pingPin1, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin1, LOW);
pinMode(inPin1, INPUT);
duration = pulseIn(inPin1, HIGH);
cm = microsecondsToCentimeters(duration);
for(i=1;i<9;i++)
Write_Max7219(i,disp1[j][i-1]);
if(cm < 4){
VARIABLE IMMER UM 1 ERHÖHEN
}
if(TOR = 1){
textloop(" TOR BAYERN ");
for(j=0;j<38;j++)
{
for(i=1;i<9;i++)
Write_Max7219(i,disp2[j][i-1]);
delay(1000);
}
}
if(TOR = 2){
textloop(" TOR BAYERN ");
for(j=0;j<38;j++)
{
for(i=1;i<9;i++)
Write_Max7219(i,disp3[j][i-1]);
delay(1000);
}
}
Serial.println(cm, DEC);
delay(10);
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}