Hallo,
ich habe eine kurze Frage zu dem folgenden Code:
Ich möchte, dass Matrix1 “TOR BAYERN” anzeigt, wenn der Ultraschallsensor 1 eine Entfernung von weniger als 4 cm misst. Matrix2 soll “TOR HAMBURG” anzeigen, wenn der Ultraschallsensor 2 diese Entfernung misst.
Der Code funktioniert auch soweit. Also Matrix1 zeigt TOR BAYERN an, wenn das der Ultraschallsensor1 sagt… Das ist ja auch gut so… Jedoch reagiert das selbe Board, also Matrix1, auch auf den Ultraschallsensor2 mit TOR HAMBURG…
Das Matrix2 leuchtet einfach nur durch…
Vielen Dank im Voraus
LG Marvin
// Laufschrift-Demo für 8x8 LED Matrix mit Max7219
// By 'jurs' for German Arduino Forum
/* Used Pins */
int Max7219_pinCLK = 10;
int Max7219_pinCS = 9;
int Max7219_pinDIN = 8;
int pos = 0;
int pingPin = 13;
int inPin = 12;
int Max7219_pinCLK1 = 11;
int Max7219_pinCS1 = 3;
int Max7219_pinDIN1 = 7;
int pos1 = 0;
int pingPin1 = 4;
int inPin1 = 2;
#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][8]={
{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
{0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22},//A
{0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0},//B
{0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0},//C
{0x7C,0x42,0x42,0x42,0x42,0x42,0x7C,0x0},//D
{0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x7C},//E
{0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x40},//F
{0x3C,0x40,0x40,0x40,0x40,0x44,0x44,0x3C},//G
{0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x44},//H
{0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C},//I
{0x3C,0x8,0x8,0x8,0x8,0x8,0x48,0x30},//J
{0x0,0x24,0x28,0x30,0x20,0x30,0x28,0x24},//K
{0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C},//L
{0x81,0xC3,0xA5,0x99,0x81,0x81,0x81,0x81},//M
{0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0},//N
{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//O
{0x3C,0x22,0x22,0x22,0x3C,0x20,0x20,0x20},//P
{0x1C,0x22,0x22,0x22,0x22,0x26,0x22,0x1D},//Q
{0x3C,0x22,0x22,0x22,0x3C,0x24,0x22,0x21},//R
{0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C},//S
{0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x8},//T
{0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1C},//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
{0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8},//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_pinCS,LOW);
digitalWrite(Max7219_pinCS1,LOW);
for(i=8;i>=1;i--)
{
digitalWrite(Max7219_pinCLK,LOW);
digitalWrite(Max7219_pinDIN,DATA&0x80);//Obtain the MSB of the data
DATA = DATA<<1;
digitalWrite(Max7219_pinCLK,HIGH);
}
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_pinCS,LOW);
digitalWrite(Max7219_pinCS1,LOW);
Write_Max7219_byte(address);
Write_Max7219_byte(data);
digitalWrite(Max7219_pinCS,HIGH);
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_pinCLK,OUTPUT);
pinMode(Max7219_pinCS,OUTPUT);
pinMode(Max7219_pinDIN,OUTPUT);
delay(50);
Init_MAX7219();
Serial.begin(9600);
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(50);
}
}
}
void loop(){
long duration, inches, cm;
pinMode (pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
pinMode(inPin, INPUT);
duration = pulseIn(inPin, HIGH);
cm = microsecondsToCentimeters(duration);
if(cm < 4){
textloop(" TOR BAYERN ");
}
Serial.println(cm, DEC);
delay(100);
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);
if(cm < 4){
textloop(" TOR HAMBURG ");
}
Serial.println(cm, DEC);
delay(100);
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}