-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6ee0a6f
commit 4fc2df6
Showing
7 changed files
with
934 additions
and
5 deletions.
There are no files selected for viewing
91 changes: 91 additions & 0 deletions
91
lib/SoftwareSerial/examples/SoftwareSerialExample/SoftwareSerialExample.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
/* | ||
Software serial multple serial test | ||
Receives from the hardware serial, sends to software serial. | ||
Receives from software serial, sends to hardware serial. | ||
based on Mikal Hart's example | ||
The circuit: | ||
* RX is digital pin 10 (connect to TX of other device) | ||
* TX is digital pin 11 (connect to RX of other device) | ||
Library modified by MCUdude to work with "regular" interrupt pins. | ||
This example code is in the public domain. | ||
***** MIGHTYCORE ***** | ||
All pins on the ATmega164, ATmega324, ATmega644 and ATmega1284 | ||
support interrupts, so all pins may be used for RX. | ||
No pins on the ATmega8535, ATmega16 and ATmega32 support | ||
pin change interrupts, so only "regular" interrupts may be used. | ||
For the "STANDARD pinout" this is digital pin 2, 10, 11 | ||
For the "BOBUINO pinout" this is digital pin 2, 3, 6 | ||
***** MEGACORE ***** | ||
Not all pins on the ATmega640, ATmega1280 and ATmega2560 support interrupts. | ||
For the "Arduino MEGA pinout" the following pins may be used for RX: | ||
2, 3, 10, 11, 12, 13, 18, 19, 20, 21, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 | ||
For the "AVR pinout" the following may be used for RX: | ||
4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 34, 35, 36, 37, 52, 53, 54, 55, 56, 57, 58, | ||
77, 78, 79, 80, 81, 82, 83, 84 | ||
Not all pins on the ATmega1281 and ATmega2561 support interrupts. | ||
The following pins may be used for RX: | ||
0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21 | ||
No pins on the ATmega64 and ATmega128 supportpin change interrupts, | ||
so only "regular" interrupts may be used. | ||
The following pins may be used for RX: | ||
4, 5, 6, 7, 18, 19, 20, 21 | ||
***** MINICORE ***** | ||
All pins on the ATmega48, ATmega88, ATmega168 and ATmega328 | ||
support pin change interrupts, so all pins may be used for RX. | ||
No pins on the ATmega8 support pin change interrupts, | ||
so only "regular" interrupts may be used. | ||
The following pins may be used for RX: 2, 3 | ||
***** MAJORCORE ***** | ||
Not all pins on the ATmega162 support interrupts. | ||
The following pins may be used for RX: | ||
10, 11, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 | ||
No pins on the ATmega8515 supports pin change interrupts, | ||
so only "regular" interrupts may be used. | ||
The following pins may be used for RX: 10, 11, 32 | ||
*/ | ||
|
||
#include <SoftwareSerial.h> | ||
|
||
SoftwareSerial mySerial(10, 11); // RX, TX | ||
|
||
void setup() | ||
{ | ||
// Open serial communications and wait for port to open: | ||
Serial.begin(57600); | ||
while (!Serial); // wait for serial port to connect. Needed for native USB port only | ||
|
||
Serial.println("Goodnight moon!"); | ||
|
||
// Set the data rate for the SoftwareSerial port | ||
mySerial.begin(4800); | ||
mySerial.println("Hello, world?"); | ||
} | ||
|
||
void loop() | ||
{ | ||
if (mySerial.available()) | ||
{ | ||
Serial.write(mySerial.read()); | ||
} | ||
|
||
if (Serial.available()) | ||
{ | ||
mySerial.write(Serial.read()); | ||
} | ||
} |
111 changes: 111 additions & 0 deletions
111
lib/SoftwareSerial/examples/TwoPortReceive/TwoPortReceive.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
/* | ||
Software serial multple serial test | ||
Receives from the two software serial ports, | ||
sends to the hardware serial port. | ||
Based on Mikal Hart's twoPortRXExample | ||
In order to listen on a software port, you call port.listen(). | ||
When using two software serial ports, you have to switch ports | ||
by listen()ing on each one in turn. Pick a logical time to switch | ||
ports, like the end of an expected transmission, or when the | ||
buffer is empty. This example switches ports when there is nothing | ||
more to read from a port | ||
The circuit: | ||
Two devices which communicate serially are needed. | ||
* First serial device's TX attached to digital pin 10(RX), RX to pin 11(TX) | ||
* Second serial device's TX attached to digital pin 8(RX), RX to pin 9(TX) | ||
Library modified by MCUdude to work with "regular" interrupt pins. | ||
This example code is in the public domain. | ||
***** MEGACORE ***** | ||
Not all pins on the ATmega640, ATmega1280 and ATmega2560 support interrupts. | ||
For the "Arduino MEGA pinout" the following pins may be used for RX: | ||
2, 3, 10, 11, 12, 13, 18, 19, 20, 21, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 | ||
For the "AVR pinout" the following may be used for RX: | ||
4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 34, 35, 36, 37, 52, 53, 54, 55, 56, 57, 58, | ||
77, 78, 79, 80, 81, 82, 83, 84 | ||
Not all pins on the ATmega1281 and ATmega2561 support interrupts. | ||
The following pins may be used for RX: | ||
0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21 | ||
No pins on the ATmega64 and ATmega128 supportpin change interrupts, | ||
so only "regular" interrupts may be used. | ||
The following pins may be used for RX: | ||
4, 5, 6, 7, 18, 19, 20, 21 | ||
***** MINICORE ***** | ||
All pins on the ATmega48, ATmega88, ATmega168 and ATmega328 | ||
support pin change interrupts, so all pins may be used for RX. | ||
No pins on the ATmega8 support pin change interrupts, | ||
so only "regular" interrupts may be used. | ||
The following pins may be used for RX: 2, 3 | ||
***** MAJORCORE ***** | ||
Not all pins on the ATmega162 support interrupts. | ||
The following pins may be used for RX: | ||
10, 11, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 | ||
No pins on the ATmega8515 supports pin change interrupts, | ||
so only "regular" interrupts may be used. | ||
The following pins may be used for RX: 10, 11, 32 | ||
*/ | ||
|
||
|
||
#include <SoftwareSerial.h> | ||
// software serial #1: RX = digital pin 10, TX = digital pin 11 | ||
SoftwareSerial portOne(10, 11); | ||
|
||
// software serial #2: RX = digital pin 8, TX = digital pin 9 | ||
// on the Mega, use other pins instead, since 8 and 9 don't work on the Mega | ||
SoftwareSerial portTwo(8, 9); | ||
|
||
void setup() | ||
{ | ||
// Open serial communications and wait for port to open: | ||
Serial.begin(9600); | ||
while(!Serial); // wait for serial port to connect. Needed for native USB port only | ||
|
||
// Start each software serial port | ||
portOne.begin(9600); | ||
portTwo.begin(9600); | ||
} | ||
|
||
void loop() | ||
{ | ||
// By default, the last intialized port is listening. | ||
// when you want to listen on a port, explicitly select it: | ||
portOne.listen(); | ||
Serial.println("Data from port one:"); | ||
// while there is data coming in, read it | ||
// and send to the hardware serial port: | ||
while (portOne.available() > 0) | ||
{ | ||
char inByte = portOne.read(); | ||
Serial.write(inByte); | ||
} | ||
|
||
// blank line to separate data from the two ports: | ||
Serial.println(); | ||
|
||
// Now listen on the second port | ||
portTwo.listen(); | ||
// while there is data coming in, read it | ||
// and send to the hardware serial port: | ||
Serial.println("Data from port two:"); | ||
while (portTwo.available() > 0) | ||
{ | ||
char inByte = portTwo.read(); | ||
Serial.write(inByte); | ||
} | ||
|
||
// blank line to separate data from the two ports: | ||
Serial.println(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
####################################### | ||
# Syntax Coloring Map for SoftwareSerial | ||
# (formerly NewSoftSerial) | ||
# This version supports MCUs without | ||
# PCINTs, by using regular interrupts instead | ||
####################################### | ||
|
||
####################################### | ||
# Datatypes (KEYWORD1) | ||
####################################### | ||
|
||
SoftwareSerial KEYWORD1 | ||
|
||
####################################### | ||
# Methods and Functions (KEYWORD2) | ||
####################################### | ||
|
||
begin KEYWORD2 | ||
end KEYWORD2 | ||
read KEYWORD2 | ||
write KEYWORD2 | ||
available KEYWORD2 | ||
isListening KEYWORD2 | ||
overflow KEYWORD2 | ||
flush KEYWORD2 | ||
listen KEYWORD2 | ||
peek KEYWORD2 | ||
|
||
####################################### | ||
# Constants (LITERAL1) | ||
####################################### | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
name=SoftwareSerial | ||
version=1.1 | ||
author=Arduino | ||
maintainer=MCUdude | ||
sentence=Enables serial communication on any digital pin. | ||
paragraph=The SoftwareSerial library has been developed to allow serial communication on any digital pin of the board, using software to replicate the functionality of the hardware UART. It is possible to have multiple software serial ports with speeds up to 115200 bps. This version also supports devices without PCINTs using regular interrupts instead. | ||
category=Communication | ||
url=http://www.arduino.cc/en/Reference/SoftwareSerial | ||
architectures=avr | ||
|
Oops, something went wrong.