Go Down

Topic: RS232 Arduino Mega Board (Read 2746 times) previous topic - next topic

macuserpro

Jan 08, 2011, 10:52 am Last Edit: Jan 08, 2011, 12:10 pm by macuserpro Reason: 1
Kann ich über RS232 RX TX irgendeine Zeichenkette mit meinem Mega verschicken? Und wenn ja könnte jemand einen Beispiel Code posten?
Ich möchte B123111111111S senden. Rx Tx sind ja vorhanden sogar mehrere Schnittstellen wenn ich mich nicht irre.

zusätzliche frage brauche ich diesen komischen Max 3323 chip? und wie heißen die alternativen? oder kann der mega das auch schon so?

macuserpro

#include <ctype.h>

#define bit9600Delay 84  
#define halfBit9600Delay 42
#define bit4800Delay 188
#define halfBit4800Delay 94

byte rx = 15;    
byte tx = 14;
byte SWval;

void setup() {
 pinMode(rx,INPUT);
 pinMode(tx,OUTPUT);
 digitalWrite(tx,HIGH);
 digitalWrite(13,HIGH); //turn on debugging LED
 SWprint('h');  //debugging hello
 SWprint('i');
 SWprint(10); //carriage return
}


oben im quelltext , darf ich hier pin 14 und 15 des mega boards verwenden?

uwefed

#2
Jan 08, 2011, 11:19 pm Last Edit: Jan 08, 2011, 11:25 pm by uwefed Reason: 1
@ at_on
Wieso machst Du das so kompliziert?
Der Mega hat 4 UART (serielle Hardware Interface)
Du mußt nur mit der richtigen Zahl ansprechen: Serial.begin für die erste, Serial1.begin für die 2. Schnittstelle ecc.
http://arduino.cc/en/Reference/Serial

Bei anderen Arduinos die nur eine UART haben kann man die SoftwareSerial- oder NewSoftSerial Library verwenden um eine 2. Serielle Schnittstelle zu bekommen.
http://www.arduino.cc/en/Tutorial/SoftwareSerial , http://arduiniana.org/libraries/newsoftserial/

Der Max 3323 ist ein Interface Baustein der aus 5V die für die RS232 notwendigen Spannungen erzeugt und die Pegelunwandlun von TTL ( 0 und 5V) auf Rs232 (-3bis -25V und 3 bis 25V) vornimmt.
Anstatt eines MAX 3323 oder ähnlichem Baustein kannst Du auch einen TL232 nehmen, wie es die älteren Arduinos haben. Externes bord zb:http://www.watterott.com/de/FTDI-Basic-Breakout-5V.

Zeichenkette empfangen: Es werden 14 zeichen übertragen ode wenn weniger nach 0,5 Sekunden dei Übertragung (der String) als beendet angenommen.
Quote
char Data[15];  // Anzahl der überragenen bytes +1
int i;
unsigned long Tempo;

void setup()
{
 Serial.begin(9600);
}

void loop(){

  do {
    if (Serial.available()) {      
      Data = Serial.read();
      i++;
      }    
    if(i<1)Tempo = millis();
    } while (i<14&&(millis()-Tempo) < 500);
 
  Data = 0;    
 
}


Zeichenkette senden:

Quote
void setup()
{
 Serial.begin(9600);  // erste serielle Schnittstelle
 Serial1.begin(9600);  // zweite serielle Schnittstelle
}

void loop(){
Serial.print("B123111111111S");  // an erste serielle Schnittstelle schicken
Serial1.print("B133333333333S");  // an zweite serielle Schnittstelle schicken
}

Grüße Uwe

Go Up