PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Arduino Mini Pro Schnittstellen



holzi
12.04.2013, 10:25
Moin, moin
ich möchte einen seriellen GPS-Empfänger an einen Arduino Mini Pro anschliessen. Die empfangenen Daten auf dem Board verarbeiten und per serieller Schnittstelle wieder an den PC ausgeben.
Die Ausgabe von Daten per serieller Schnittstelle an den PC ist kein Problem.
Nun heisst es auf der Arduino-Seite, dass mittels der SoftwareSerial Library für den Empfang bestimmte Pins für RX geschaltet werden können. Wäre ja genau das richtige.
Also habe ich mir für den Anfang den folgenden Code geschrieben:

int incomingByte;

#include <SoftwareSerial.h>

#define rxPin 10
#define txPin 11

SoftwareSerial sensorSerial=SoftwareSerial(rxPin,txPin); // Setzen der Pins für SoftwareSerial RX, TX

void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(4800); // Setzen der Baudrate serieller Port
while (!Serial) //Warten, bis der serielle Port verbunden ist
{
}
Serial.println("GESR-Sensor-Shield");
Serial.println("(c) Peter Holzknecht");
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
sensorSerial.begin(4800); // Setzen der Baudrate des SoftwareSerial Ports
}

void loop()
{
if (sensorSerial.available()>0)
{
incomingByte = sensorSerial.read();
Serial.write(incomingByte);
}
}

In der Zeile if (sensorSerial.available()>0) bleibt aber das Programm stehen, denn die Schnittstelle an Pin 10 für den Empfang wird nicht geöffnet.
Ist diese Vorgehensweise mit dem Arduino Mini Pro überhaubt möglich oder mache ich im Code etwas grundsätzliches falsch?

LG hier aus dem Norden Peter

oderlachs
12.04.2013, 10:57
Mit welcher Arduino Version programmierst Du? Ab Vers.1.xx ist da die serielle Kommunikation etwas anders glaub ich. Muss mal schauen, ich verwende eigendlich nur ArduinoProMini für meine Anwendengen, obwohl ich erst auf Ardu-Uno+ div. Shield teste und programmiere...
Ich weiss ja nicht was Du da vorhast, aber ich brauche bei meiner Anwendung keinen SoftwareSerial-Port. Die GPS Maus liegt mit TX am Uart-RX = 0 an 1 = Uart-TX liegt das Terminal zur Textausgabe usw.. Meine GPS Maus hat zwar RX/TX aber ich benmutze nur den TX Ausgang. Auch nachzulesen in U.Sommers "Arduino" Franzis Verlag S.227. Achtung in dem Buch sind so einige Fehler versteckt...auch bei den Grundrechenarten des Ohmschen Gesetzes.

Mal sehen vieleicht habe ich heute Abend Zeit, habe auch GPS Modul für Arduino Serial-Anbindung zu liegen.

Gruss
Gerhard
Nachtrag:

Arduino v1.0.1:
'incomingByte' was not declared in this scope was will der compiler damit sagen, incomingByte ist nicht deklariert.. er kennt diese Variable nicht !!!

holzi
12.04.2013, 12:51
Ist doch deklariert in der ersten Zeile gleich:
int incomingByte;

Das wird auch nicht angemeckert. Ich arbeite mit der Version 1.0.4
Probleme macht die Zeile
if (sensorSerial.available()>0)

Was habe ich vor?
Ich wollte einen GPS-Empfänger und einen Ultraschallsensor an dieses Board anschließen und die so empfangenen Daten zur Auswertung an mein PC-Programm weiter übergeben. Dafür brauche ich eigentlich 3 serielle Schnittstellen. Und genau dafür soll die SoftwareSerial Library ja da sein. Diese Library steht ja auch im Verzeichniss \libraries\SoftwareSerial\ zur Verfügung. Aber das funktioniert ja nicht. BNur für den GPS-Empfäger wird die Lösung von oberlachs funktionieren. Funktioniert das mir der Library aber überhaupt auf diesem Board?

Gruss Peter

oderlachs
12.04.2013, 16:20
ja der ArduinoProMini macht auch das, ich hatte nur immer/manchmal Probleme mit der Librarie softwareserial bzw newsoftwareserial, da kommt es echt auf die versionen dieser Libraries an.
Sorry das mit der Deklaration von incomingByte war mein Fehler..also ich kann es bestens kompilierren siehe Foto:
25109

ich denke mal es liegt an Deiner SoftwareSerial-Librarie-version hier meine: 25110

Gerhard