Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

08.1 Dot-Matrix

11. November 2011

Als Weiterführung der ersten Dot-Matrix-Aufgabe durften wie Icons erstellen, die wir dann mit der Matrix animieren sollten. Ich habe in Illustrator vier Icons erstellt und zuerst den Mund animiert. Im Verlauf der Programmierung ist aus dem zweiten Icon, dem Fisch, dann eine startende Rakete entstanden, die von Mitstudenten auch als Wasserhahn angesehen wurde. Für die Animation habe ich mit verschachtelten Arrays gearbeitet, sodass die Einzelbilder im Code möglichst einfach zu lesen waren, die Spalten und Reihen jenen der Matrix entsprachen. Danach habe ich den Code mit Ton verbunden und angefangen die Mondschein-Sonate nachzuprogrammieren. Für die Spalten und Reihen habe ich zwei ineinander verschachtelte for-Schlaufen verwendet und mit einer Reset-Funktion die LEDs jeweils vor dem nächsten Bild wieder in den Default-Zustand gebracht.  

int leds[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
int leds_rows[] = { 2, 3, 4, 5, 6, 7, 8 };
int leds_cols[] = { 9, 10, 11, 12, 13 };
int cOut = 0;
int z = 0;
#define delayFrame 8

/* FISH
{{1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {0,1,1,1,0},
                     {1,0,1,1,0},
                     {1,0,1,0,1},
                     {1,1,0,1,1} }
                     */
//#define numIcons 18
char out[][7][5] = {
                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{0,1,1,1,0},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{0,1,1,0,1},
                     {0,1,1,1,0},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{0,1,1,1,0},
                     {0,1,1,0,1},
                     {0,1,1,1,0},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,0,1,0,1},
                     {0,1,1,1,0},
                     {0,1,1,0,1},
                     {0,1,1,1,0},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1} },

                    {{1,1,0,1,1},
                     {1,0,1,0,1},
                     {0,1,1,1,0},
                     {0,1,1,0,1},
                     {0,1,1,1,0},
                     {1,0,1,0,1},
                     {1,1,0,1,1} },

                    {{1,1,1,1,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {0,1,1,1,0},
                     {0,1,1,0,1},
                     {0,1,1,1,0},
                     {1,0,1,0,1} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {0,1,1,1,0},
                     {0,1,1,0,1},
                     {0,1,1,1,0} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {0,1,1,1,0},
                     {0,1,1,0,1} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {0,1,1,1,0} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,0,1,1} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} }
};

//#define numIcons2 22
char out2[][7][5] = {
                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,0,1,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,1,1,1},
                     {1,1,1,0,1},
                     {1,1,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,1,1,1},
                     {1,1,1,0,0},
                     {1,1,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,1,1,0},
                     {1,1,1,0,0},
                     {1,1,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,1,0,0},
                     {1,1,1,0,0},
                     {1,1,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,0,0,0},
                     {1,1,1,0,0},
                     {1,1,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,0,0,0,0},
                     {1,1,1,0,0},
                     {1,1,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{0,0,0,0,0},
                     {1,1,1,0,0},
                     {1,1,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{0,0,0,0,0},
                     {0,1,1,0,0},
                     {1,1,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{0,0,0,0,0},
                     {0,0,1,0,0},
                     {1,1,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{0,0,0,0,0},
                     {0,0,1,0,0},
                     {1,0,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{0,0,0,0,0},
                     {0,0,0,0,0},
                     {0,0,1,0,0},
                     {1,0,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{0,1,0,1,0},
                     {0,0,0,0,0},
                     {0,0,0,0,0},
                     {0,0,1,0,0},
                     {1,0,0,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1} },

                    {{1,0,1,0,1},
                     {0,1,0,1,0},
                     {0,0,0,0,0},
                     {0,0,0,0,0},
                     {0,0,1,0,0},
                     {1,0,0,0,1},
                     {1,1,0,1,1} },

                    {{1,1,0,1,1},
                     {1,0,1,0,1},
                     {0,1,0,1,0},
                     {0,0,0,0,0},
                     {0,0,0,0,0},
                     {0,0,1,0,0},
                     {1,0,0,0,1} },

                    {{1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {0,1,0,1,0},
                     {0,0,0,0,0},
                     {0,0,0,0,0},
                     {0,0,1,0,0} },

                    {{1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {0,1,0,1,0},
                     {0,0,0,0,0},
                     {0,0,0,0,0} },

                    {{1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {0,1,0,1,0},
                     {0,0,0,0,0} },

                    {{1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {0,1,0,1,0} },

                    {{1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1} },

                    {{1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1} },

                    {{1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1} },

                    {{1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1} },

                    {{1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1} },

                    {{1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1} },

                    {{1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1} },

                    {{1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1} },

                    {{1,1,1,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,1,1,1} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,0,1,1},
                     {1,0,1,0,1},
                     {1,1,0,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} },

                    {{1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,0,0,0,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1},
                     {1,1,1,1,1} }
};

int i=9; int d=1; int k=2; int d2=1;

void setup() {
  Serial.begin(9600);
  // ROWS
  for(int l=0; l<sizeof(leds_rows); l++) {
    pinMode(leds_rows[l], OUTPUT);
    digitalWrite(leds_rows[l],LOW);
  }
  // COLS
  for(int l=0; l<sizeof(leds_cols); l++) {
    pinMode(leds_cols[l], OUTPUT);
    digitalWrite(leds_cols[l],HIGH);
  }
}

void loop() {
   for(int n=0; n<(sizeof(out2)/sizeof(out2[0])); n++) {

    for(int m=0; m<7; m++) {
      for(int l=0; l<sizeof(out2[cOut][m]);l++) {
        digitalWrite(leds_cols[l],out2[cOut][m][l]);
        digitalWrite(leds_rows[m],1);
      }
      delay(2);
      mReset();
    }

    //Serial.println(sizeof(out)/sizeof(out[0]));
    if (z==delayFrame) {
      cOut++;
      if (cOut==(sizeof(out2)/sizeof(out2[0]))) cOut=0;
    }
    z++;
    if (z>delayFrame) z=0;

   }
}

void mReset() {
  // ROWS
  for(int l=0; l<sizeof(leds_rows); l++) {
    digitalWrite(leds_rows[l],LOW);
  }
  // COLS
  for(int l=0; l<sizeof(leds_cols); l++) {
    digitalWrite(leds_cols[l],HIGH);
  }
}