Brauche Hilfe für Schulprojekt

Hallo, ich und ein Freund wollen für ein Schulprojekt ein mit MITAppInventor gesteuertes LED Display welches mit einem Arduino UNO verbunden ist bauen. Wir haben leider maximal Anfängerwissen in diesem Bereich und benötigen ein bisschen Hilfe.

Wir benutzen einen Arduino UNO, als LED Display benutzen wir ein 2x2 Max7219 LED Matrix Modul Rot und dazu haben wir ein HC-05 Bluetooth Modul.

Die Anschlüsse und den Code für den Arduino haben wir aus diesem Video:

Und den Code welcher für das Bluetooth Modul benötigt wird und der für AppInventor haben wir aus diesem Video:

Der Code welchen ich jetzt geschrieben habe ist dieser hier:

#include <LedControl.h>

char Incoming_value = 0;

const int DIN = 8;
const int CS = 3;
const int CLK = 11;

LedControl matrix = LedControl(DIN, CLK, CS, 4);

const int BRIGHTNESS = 1;

const int MAX_ROWS = 8;
byte matrixModul1[MAX_ROWS] = {B00000001,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000001,};
byte matrixModul2[MAX_ROWS] = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};
byte matrixModul3[MAX_ROWS] = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
byte matrixModul4[MAX_ROWS] = {B10000001,B10000001,B10000001,B10000001,B11111111,B10000001,B10000001,B10000001,};
byte matrixModul5[MAX_ROWS] = {B10000001,B10000001,B10000001,B10000001,B11111111,B10000001,B10000001,B10000001,};
byte matrixModul6[MAX_ROWS] = {B10000001,B10000001,B10000001,B10000001,B11111111,B10000001,B10000001,B10000001,};
byte matrixModul7[MAX_ROWS] = {B10000001,B10000001,B10000001,B10000001,B11111111,B10000001,B10000001,B10000001,};
byte matrixModul8[MAX_ROWS] = {B10000001,B10000001,B10000001,B10000001,B11111111,B10000001,B10000001,B10000001,};

void setupMatrixModul(int modulIndex) {
  matrix.shutdown(modulIndex, false);
  matrix.setIntensity(modulIndex, BRIGHTNESS);
  matrix.clearDisplay(modulIndex);
}

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);

  for(int i = 0; i <= 3; i++){
    matrix.shutdown(i,false);
    matrix.setIntensity(i, BRIGHTNESS);
    matrix.clearDisplay(i);
  }
}

void drawMatrix(int modul, byte data[]){
  for(int row = 0; row < MAX_ROWS; row++){
    matrix.setRow(modul,row,data[row]);
  }
}

void loop() {
  if(Serial.available() > 0) {
    Incoming_value = Serial.read();
    Serial.print(Incoming_value);
    Serial.print("\n");
    if(Incoming_value == '1') {
      digitalWrite(13, HIGH);
    } else if(Incoming_value == '0') {
      digitalWrite(13, LOW);
    }
  }
  
  drawMatrix(0, matrixModul4);
  drawMatrix(1, matrixModul4);
  drawMatrix(2, matrixModul4);
  drawMatrix(3, matrixModul4);  
  delay(250);
  
  for(int i = 0; i <= 3; i++){
    matrix.clearDisplay(i);
  }
}

Wir wollen erstmal nur das aus dem zweiten Video gezeigte Szenario nachbauen, bei welchem man eine LED Lampe über das Bluetooth Modul steuern kann.
Dabei kommt aber folgender Fehlercode:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x72
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x72
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x72
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x72
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x72
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x72
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x72
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x72
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x72
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x72
Fehlgeschlagenes Hochladen: Hochladefehler: exit status 1

Was eventuell hilfreich wäre ist, dass der Code soweit gut funktioniert, aber ab dem Zeitpunkt an dem ich das Bluetooth Modul mit anschließe kommt gegebene Fehlermeldung.

Ich kenne mich nicht genug mit Arduino usw. aus um zu wissen welche Informationen noch gebraucht werden aber ein bisschen Hilfe würden wir sehr zu schätzen wissen.

Ist doch klar am 0 und 1 hängt der PC über USB. Wenn ich schon am anfang Bild Unsinn sehe will gar nicht wissen wie es weiter geht.
Sucht euch Beispiele für den HC wo Software Serial wird genutzt

Dann schließt du das BT-Modul vermutlich an Pin D0 und D1 an.
Da solltest du besser nicht machen, da diese Pins für den USB-Serialwandler reserviert sind.
Nimm SoftwareSerial und andere freie digitale Pins dafür.

Okay, und was genau müsste ich dann am Code ändern?
Trotzdem danke für die Hilfe.

Das findest du in den Beispielen zu SoftwareSerial.

Für heute, vor Upload den HC abklemmen, dann sollte das hochladen funktionieren

Okay vielen Dank!
Nach dem Tutorial welches ich benutzt habe sollte man vom Bluetooth Modul RXD an Pin 1 anschließen und TXD an Pin 0. Das klappt aber trotzdem mit den SoftwareSerial Beispielen welche sie erwähnt haben richtig? Wenn ja werde ich es morgen Versuchen.

Ja das klappt.
Deshalb wurde die Library ja geschrieben. Und def. nicht die Pins D0 und D1 verwenden, sondern eigene digitale.

Danke für die Hilfe :slight_smile:

Ja, gerne.

Hat geklappt :grin:
Jetzt hab ich aber Probleme das Bluetooth Modul mit meinem Handy zu verbinden. Wissen sie vielleicht was da das Problem sein könnte?

Prima, so solldas sein.

Mit dem Modul habe ich noch nichts gemacht, da habe ich keine Idee.

Im übrigen dutzen wir uns hier.

Ich denke Euch fehlt die Initialisierung für Softwareserial.
Zeig mal bitte den aktuellen Code und schreib mal an welchen Pins das BT-Modul jetzt dran hängt.

#include <LedControl.h>
#include <SoftwareSerial.h>

char Incoming_value = 0;

const int DIN = 8;
const int CS = 6;
const int CLK = 11;

const byte rxPin = 2;
const byte txPin = 3;

SoftwareSerial mySerial (rxPin, txPin);

LedControl matrix = LedControl(DIN, CLK, CS, 4);

const int BRIGHTNESS = 3;

const int MAX_ROWS = 8;
byte matrixModul1[MAX_ROWS] = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,};
byte matrixModul2[MAX_ROWS] = {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,};

void setupMatrixModul(int modulIndex) {
  matrix.shutdown(modulIndex, false);
  matrix.setIntensity(modulIndex, BRIGHTNESS);
  matrix.clearDisplay(modulIndex);
}

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);

  for(int i = 0; i <= 3; i++){
    matrix.shutdown(i,false);
    matrix.setIntensity(i, BRIGHTNESS);
    matrix.clearDisplay(i);
  }
}

void drawMatrix(int modul, byte data[]){
  for(int row = 0; row < MAX_ROWS; row++){
    matrix.setRow(modul,row,data[row]);
  }
}

void loop() {
  if(Serial.available() > 0) {
    Incoming_value = Serial.read();
    Serial.print(Incoming_value);
    Serial.print("\n");
    if(Incoming_value == '1') {
      digitalWrite(13, HIGH);
    } else if(Incoming_value == '0') {
      digitalWrite(13, LOW);
    }
  }
  
  drawMatrix(0, matrixModul2);
  drawMatrix(1, matrixModul2);
  drawMatrix(2, matrixModul2);
  drawMatrix(3, matrixModul2);  
  delay(5000);
  
  for(int i = 0; i <= 3; i++){
    matrix.clearDisplay(i);
  }
}

Wir haben die Pins 2 und 3 benutzt.

Sag ich doch.
Es fehlt ein mySerial.begin(9600) und im code müsst ihr alles was mit dem Modul zu tun hat von Serial auf mySerial umschreiben.

1 Like