Hallo zusammen,
ich bin gerade mal wieder im Krieg mit meinen kleinen Nachbauten:
Nach wie vor ist die Hauptfront die Kommunikation.
Ich verwende ja dafür die MAX487 (Datenblatt).
Mein Aufbau schaut wiefolgt aus:
Arduino 1:
Arduino-Nachbau mit MAX487 und Tastaturmatrix.
Aktueller Sketch:
#include <Keypad.h>
const byte ROWS = 6; // Four rows
const byte COLS = 3; // Three columns
// Define the Keymap
char keys[ROWS][COLS] = {
{'A','R','B'},
{'C','X','D'},
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'M','*','C'}
};
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = { 5, 4, 3, 9, 10, 11 };
// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
byte colPins[COLS] = { 8, 7, 6 };
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
pinMode(2, OUTPUT);
Serial.begin(115200);
}
void loop()
{
char key = kpd.getKey();
if (key)
{
/*digitalWrite(2, HIGH);
Serial.write(key);
digitalWrite(2,LOW);*/
digitalWrite(2,HIGH);
Serial.println("Hallo");
digitalWrite(2,LOW);
}
}
Arduino 2:
Arduino-Nachbau mit MAX487 und Display.
Aktueller Sketch:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
char befehl[50];
char stopp_zeichen[] = {";"};
int new_data = 0;
byte data;
void setup()
{
Serial.begin(115200);
lcd.begin(20,4);
for (int i = 0; i< 2; i++)
{
lcd.backlight();
delay(500);
lcd.noBacklight();
delay(500);
}
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Archery Results");
lcd.setCursor(0,1);
lcd.print("Phillip Seelig");
delay(3000);
lcd.clear();
}
void loop()
{
if (Serial.available() > 0)
{
lcd.clear();
lcd.setCursor(0,0);
Serial.readBytes(befehl, 250);
lcd.print(befehl);
/*lcd.setCursor(0,1);
Serial.readBytes(befehl, 50);
lcd.print(befehl);*/
}
}
Das Problem ist jetzt folgendes:
Drück ich am Arduino 1 eine Taste, so zeigt der Serialmonitor (im Arduino IDE über den USB-Konverter) "Hallo" an. Schau ich allerdings auf das Display von Arduino 2, so wird nur "H" angezeigt.
Steck ich RX/TX vom USB-Konverter am Arduino 2 an, drück bei Arduino 1 auf eine Taste und beobachte den Serialmonitor am PC, so rührt sich dort gar nichts, am Display von Arduino 2 erscheint wieder "H".
Geb ich im Serialmonitor (immer noch an Arduino 2) "Hallo" ein, so erscheint das auch am Display von Arduino 2.
Also scheint es doch folgende Probleme zu geben:
Die MAX187 senden immer nur 1 Byte. Warum?
Hab ich den USB-Konverter am Empfänger (nach dem MAX187, also parallel zum ATMega), so kann ich über den Serialmonitor keine Daten lesen. Warum?
Ich steh mal wieder - oder besser gesagt immer noch? - am Rande der Ratlosigkeit, was die Kommunikation angeht.. und hoff auf eure Hilfe.
LG und guten Start ins Wochenende
Fipsi