Skip to content
2026.06.04.
  • F
  • X
  • LinkedIn
  • YouTube
  • Instagram
  • GitHub
TavIR

TavIR

Mikrokontroller világ

  • TavIR Tudástár
  • TavIR WebShop
  • TavIR Fórum
  • Hírek
  • Könyvek
    • Egyszerű elektronika – Kezdőlap
    • ESP8266/ESP32
    • Tippek
      • Tippek-trükkök (AVR)
      • Tippek-trükkök (ESP8266/ESP32)
  • +Gyorstippek
  • +Mélyvíz
  • +Témakereső
  • Kapcsolat
  • Főoldal
  • Könyv
  • Mit ne használjunk Arduino projektekben?
  • SoftwareSerial
  • Mit ne használjunk Arduino projektekben?

SoftwareSerial

Robert 2022.05.02.
157 softwareserial - Cseh Robert / TavIR - softwareserial soros port
Az ATMega328 chipet tartalmazó Arduino lapok egyetlen hardware UART-ot (soros portot) tartalmaznak. De mit lehet tenni, ha második soros portra is szükség van? Egyszerű: a SoftwareSerial eljárással létrehozunk annyit, amennyi csak kell. De mi ezzel a probléma?
A probléma, hogy hiányzik a közvetlen hardware támogatás és a SoftwareSerial folyamatosan ciklikusan figyeli a változásokat és az eközben eltelt időből számolható a fogadott/küldött adat. Erre csak akkor van mód, ha a megszakítások letiltásra kerülhetnek – különben elcsúszik az időzítés és széthullik a kommunikáció. Ez így elég nagy felfordulást okoz az időzítésérzékeny folyamatokban. Ha egynél több UART-ra van szükség, akkor az Arduino Mega vagy a Leonardo lehet megfelelő választás. Így az USB porton marad az illesztés (Mega) vagy a chip integrált USB-je biztosítja a soros kommunikációt. Mindenképp marad így szabadon hardware soros port.

Tartalomjegyzék

Toggle
  • De mikor lehet használni a SoftwareSerial vagy a NewSoftwareSerial eljárásokat?
  • SoftwareSerial mintakód
    • Hol használható a szoftveres sorosport?
    • Mit ne használjunk Arduino projektekben? – Tartalomjegyzék

De mikor lehet használni a SoftwareSerial vagy a NewSoftwareSerial eljárásokat?

Amikor a szoftver UART pl. debug információt küld, és megengedhető a megszakítások miatti csúszás vagy a megszakítások tiltása. A küldés során a SoftSerial eljárások használatából fakadóan előforduló időzítéscsúszást még tolerálnak a vevőáramkörök, ugyanakkor a SoftSerial vételre való használata a megszakítások kiszámíthatatlansága miatt erősen bizonytalan működést eredményez!
A NewSoftserial az Arduino-0022 verziójához jelent meg először, majd az Arduino-1.0 kiadásában a SoftSerial ejárás kicserélésre is került. Azaz az Arduino 1.0-ban már SoftSerial néven a NewSoftSerial található meg.
Ami a NewSoftSerial előnye a SoftSerialhoz képest:
  • 4-600 byte SRAM megtakarítás, mivel a print osztályt használja. Így nem szükséges duplikált kódrészlet.
  • A vétel (Rx) ugyanúgy bufferelésre kerül, mint a hardware sorosport esetén. 
  • A Tx kivezetés bármelyik szabad I/O láb lehet, míg vétel esetén az Arduino Uno, Dieclimila/Duemilanove (ATMega168/328) esetén a 0..13 mellett az A0…A5 is megfelel Rx kivezetésnek. Ám Arduino Mega esetén csak az alábbi kivezetésekre kerülhet a szoftveres Rx láb: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69. Leonardo (ATMega32U4) esetén ugyanilyen kötöttség a  8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI) kivezetések használhatósága Rx esetén. A megkötések oka, hogy a NewSoftSerial megszakításkezelést használ az adatok fogadásának detektálására – így csökkentve az adatvesztések kockázatát.
  • Egyidőben több SoftwareSerial is használható a programon belül.
  • A 8, 16 és 20 MHz processzorok is támogatottak.
  • A szoftveres soros port begin() párja az end() is elérhető. A kivezetés a felszabadítás után standard I/O kivezetésként használható.
Fontos! A 300,600, 1200 bps sebesség használata a millis() függvény futásában fennakadást okozhat. Nagyobb sebességek esetén a túl gyakori megszakítás adatvesztést okozhat. Így a 38.4kbps, 57.6kbps és a  115.2kbps sebesség kerülendő.
Adáskor nincsen bufferelés, és feltartja a program futását!
 

SoftwareSerial mintakód

A hardware sorosport lábait használjuk, azonban szoftveres sorosortként. A bejövő karaktert visszaküldjük a porton át, minden beérkező karakter átbillenti az alaplapi LED állapotát az ellenkezőjébe.   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*Software serial test
*/
// include the SoftwareSerial library so you can use its functions:
#include <SoftwareSerial.h>
 
#define rxPin 0
#define txPin 1
#define ledPin 13
 
// set up a new serial port
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);
 
byte pinState = 0;
void setup()  {
  // define pin modes for tx, rx, led pins:
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  //Serial.begin(9600);
  mySerial.println("Hello World - SoftwareSerial");
}
 
void loop() {
  if (mySerial.available() > 0){
  // listen for new serial coming in:
  char someChar = mySerial.read();
  // print out the character:
  mySerial.print(someChar);
  // toggle an LED just so you see the thing's alive.  
  // this LED will go on with every OTHER character received:
  toggle(ledPin);
  }
}
 
void toggle(int pinNum) {
  // set the LED pin using the pinState variable:
  digitalWrite(pinNum, pinState);
  // if pinState = 0, set it to 1, and vice versa:
  pinState = !pinState;
}

Hol használható a szoftveres sorosport?

Minden olyan helyen, ahol a soros kommunikációs sebessége nem több mint 19200 bps. Például GPS vevőkkel való kommunikációra, másik Arduinoval való összekötésre vagy akár RS-485 busz használatára. A fokozott megszakításkezelés miatt a főprogramban nem lehet sok idővesztességet okozó programrészlet, megszakításba beágyazva nem lehet időigényes művelet (pl. várakozás, LCD kezelés, soros porti adás/vétel, 1-Wire busz kezelés, stb.).  Érdemes kerülni a többszörös SoftwareSerial használatot, mert egymást is feltartják! 
De a lehetőségek szerint Arduino Mega áramkör ekkor az igazi, vagy a soros porti kommunikáció kiváltása például TWI/Wire vagy SPI kapcsolódással.
Tipp: A szoftveres soros port 64 byte SRAM bufferrel rendelkezik, azaz ha nem tudjuk azonnal kiolvasni/feldolgozni – akkor sem vesznek el az adatok. 
Mintaprogramok találhatóak az Arduino keretrendszerben a Fájl > Minták > SoftwareSerial alatt.
 
Felhasznált források:
  • http://arduiniana.org/libraries/newsoftserial/
  • http://www.arduino.cc/en/Reference/SoftwareSerial
  • http://arduiniana.org/libraries/NewSoftSerial/

 

Mit ne használjunk Arduino projektekben? – Tartalomjegyzék

1
[catlist name="Mit ne használjunk Arduino projektekben?" orderby=date order=asc numberposts=50]

Tags: SoftwareSerial

Post navigation

Előző String osztály
Következő Felhúzóellenállások

Kapcsolódó anyagok

Külső prellmentesítés rotary-enkóderhez 160 rotary - Cseh Robert / TavIR - softwareserial soros port
  • Mit ne használjunk Arduino projektekben?

Külső prellmentesítés rotary-enkóderhez

2022.05.16.
Darlington tranzisztor Tranzisztor belső felépítése
  • Mit ne használjunk Arduino projektekben?

Darlington tranzisztor

2022.05.15.
Felhúzóellenállások 158 pullup - Cseh Robert / TavIR - softwareserial soros port
  • Mit ne használjunk Arduino projektekben?

Felhúzóellenállások

2022.05.03.

Hírlevél

Hogy az újdonságokról első kézből értesülj:
→ Feliratkozás a Hírlevélre

Ingyenes tanfolyam

60 nap alatt Arduino - az ingyenes tanfolyam
→ Kattints ide és iratkozz fel!
60 nap alatt Arduino

Szeretnél egy lépéssel a többiek előtt járni?

Ne hagyd ki a legújabb tanfolyamokat, amik még csak most bontogatják szárnyaikat.

Legyél te az első! Tanfolyamok

Alkatrész-tár

→ TavIR WebShop
→ Tanulókészletek

Témakörök

  • Cikk (60)
  • Hír (44)
  • Könyv (39)
    • Egyszerű elektronika tippek (18)
    • ESP8266/ESP32 (2)
    • Mélyvíz (12)
    • Mit ne használjunk Arduino projektekben? (6)
  • OmegaFlux (2)
  • Tippek (60)
    • Gyorstippek (20)
    • Tippek-trükkök (AVR) (21)
    • Tippek-trükkök (ESP8266/ESP32) (5)

Fórum

Hiba történt: a hírcsatorna nem elérhető. Később próbálkozzunk újra.
  • Tovább a TavIR Fórumra...

TavIR WebShop

→ Tovább a TavIR WebShopba
TavIR LCD4x20 (kék-fehér, 2004)
TavIR LCD4x20 (kék-fehér, 2004)

A kijelző 4 x 20 karakteres kialakítású, mely az KS0066 [...]

JT-A1250 1.25 csatlakozó, 2 pin, 20cm, szerelt apa (1.25mm, micro, lengő)
JT-A1250 1.25 csatlakozó, 2 pin, 20cm, szerelt apa (1.25mm, micro, lengő)

JT-A1250 / Joint Tech A1250 sorozatú, 1.25 mm raszterű, 2 [...]

4x Optocsatolt FET kapcsolómodul (PWM, 36V/5..20A)
4x Optocsatolt FET kapcsolómodul (PWM, 36V/5..20A)

A 4 csatornás MOSFET kapcsoló modul akkor jön jól, amikor [...]

1.47" IPS TFT (172x320; ST7789;SPI)
1.47" IPS TFT (172x320; ST7789;SPI)

Kompakt színes kijelző Arduino, ESP32, STM32 és Raspberry Pi alapú [...]

ESP32‑S3 WROOM-N16R8 CAM Development Board (Wi‑Fi + Bluetooth)
ESP32‑S3 WROOM-N16R8 CAM Development Board (Wi‑Fi + Bluetooth)

Az ESP32‑S3 WROOM‑N16R8 CAM fejlesztőpanel akkor jön jól, amikor a [...]

NodeMCU ESP32 / NodeMCU32 (ESP32-WROOM-32D; CP2102; 30pin; USB-C)
NodeMCU ESP32 / NodeMCU32 (ESP32-WROOM-32D; CP2102; 30pin; USB-C)

Az ESP32 DevKit V1 USB-C CP2102 30 pin fejlesztőpanel akkor [...]

2.8" TFT LCD (240*320; SPI; Touch) + SD (ILI9341)
2.8" TFT LCD (240*320; SPI; Touch) + SD (ILI9341)

A 2.8″ TFT LCD (240×320; SPI; Touch) + SD (ILI9341) [...]

TavIR IIC-LCD illesztő (TWI/I2C/I2CLCD)
TavIR IIC-LCD illesztő (TWI/I2C/I2CLCD)

Karakteres LCD kijelző I 2 C buszra - kevesebb vezetékkel, [...]

WT32‑ETH01 - ESP32 Ethernet, Wi‑Fi, Bluetooth modul
WT32‑ETH01 - ESP32 Ethernet,  Wi‑Fi,  Bluetooth modul

A WT32‑ETH01 egy professzionális beágyazott hálózati gateway modul , amely [...]

Meghajtómotor (fém-áttétel, 2 oldalas)
Meghajtómotor (fém-áttétel, 2 oldalas)

A Meghajtómotor (fém-áttétel, 2 oldalas) egy TT-formátumú, 3 V-6 V [...]

4x összefűzött 8x8 mátrix LED (MAX7219/MAX7221)
4x összefűzött 8x8 mátrix LED (MAX7219/MAX7221)

A 4x összefűzött 8×8 mátrix LED (MAX7219/MAX7221) egy kompakt, 8×32 [...]

E22-900T22U USB LoRa modul
E22-900T22U USB LoRa modul

Az Ebyte E22-900T22U USB LoRa modul USB csatlakozású, LoRa szórt [...]

Címkék

alappanel Arduino Arduino nap Arduino nap 2023 art AVR biztosíték darlington dióda eeprom egyszerű elektronika elem ellenállás ESP Espressif Systems flash Forrasztás ft232 fusebit hőmérő i2c i2clcd infravörös ISP JTAG kijelző LCD lm35 MOSFET motor nyák pcb páratartalom Relé RTC telepítés tmp36 tranzisztor Történelem Uno wiring WOM Zener április 1 óra

Archívum

  • 2026. június (1)
  • 2026. május (3)
  • 2026. április (2)
  • 2026. március (5)
  • 2026. február (3)
  • 2026. január (3)
  • 2025. december (2)
  • 2025. november (2)
  • 2025. október (3)
  • 2025. augusztus (3)
  • 2025. július (7)
  • 2025. június (4)
  • 2025. május (6)
  • 2025. április (3)
  • 2025. március (3)
  • 2025. február (1)
  • 2025. január (6)
  • 2024. december (5)
  • 2024. november (5)
  • 2024. október (6)
  • 2024. szeptember (5)
  • 2024. augusztus (4)
  • 2024. július (3)
  • 2024. június (1)
  • 2024. május (3)
  • 2024. március (1)
  • 2024. február (2)
  • 2024. január (1)
  • 2023. december (5)
  • 2023. szeptember (2)
  • 2023. augusztus (6)
  • 2023. július (2)
  • 2023. június (1)
  • 2023. május (1)
  • 2023. április (10)
  • 2023. február (1)
  • 2022. szeptember (2)
  • 2022. július (1)
  • 2022. május (6)
  • 2022. április (1)
  • 2022. március (2)
  • 2022. január (3)
  • 2021. december (1)
  • 2021. november (4)
  • 2021. október (2)
  • 2021. szeptember (1)
  • 2021. július (1)
  • 2021. május (2)
  • 2021. április (1)
  • 2021. március (2)
  • 2020. szeptember (1)

Eddig nem olvasott...

Arduino IDE 2.3.9 – ha a régi program fut tovább… Arduino 2.3.9 - cache error
  • Hír

Arduino IDE 2.3.9 – ha a régi program fut tovább…

2026.06.02.
Arduino IDE 2.3.9 – gyorsabb fordítás, de figyelj a cache-re Arduino IDE 2.3.9 megjelent - 2026. 05. 26.
  • Hír

Arduino IDE 2.3.9 – gyorsabb fordítás, de figyelj a cache-re

2026.05.26.
ESP32 család – Hát én immár kit válasszak? EPS kiválasztási stratégia
  • Cikk
  • ESP8266/ESP32

ESP32 család – Hát én immár kit válasszak?

2026.05.15.
A NYÁK napja: apró rézösvények a zöld mezőn 11245 nyak - Cseh Robert / TavIR - softwareserial soros port
  • Cikk

A NYÁK napja: apró rézösvények a zöld mezőn

2026.05.01.

Információk

Cégadatok-impresszum | Használati feltételek
Adatvédelmi irányelvek | Kapcsolat

Elérhetőség

Ügyfélszolgálat: +36 (20) 99-23-781
E-mail: avr (kukac)tavir (pont) hu
Iroda/telephely: 1181 Budapest, Szélmalom utca 13.
Copyright © TavIR Minden jog fenntartva | DarkNews by AF themes.
TavIR
Adatvédelem kezelése

To provide the best experiences, we and our partners use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us and our partners to process personal data such as browsing behavior or unique IDs on this site and show (non-) personalized ads. Not consenting or withdrawing consent, may adversely affect certain features and functions.

Click below to consent to the above or make granular choices. Your choices will be applied to this site only. You can change your settings at any time, including withdrawing your consent, by using the toggles on the Cookie Policy, or by clicking on the manage consent button at the bottom of the screen.

Funkcionális Always active
A technikai tárolás vagy hozzáférés szigorúan szükséges az előfizető vagy felhasználó által kifejezetten kért konkrét szolgáltatás használatának lehetővé tételének jogos céljához, vagy kizárólag a közlés elektronikus hírközlő hálózaton keresztüli továbbításának céljához.
Beállítások
A technikai tárolás vagy hozzáférés a jogos célból szükséges, hogy olyan beállításokat tároljunk, amelyeket az előfizető vagy a felhasználó nem kért.
Statisztika
Kizárólag statisztikai célokra használt technikai tároló vagy hozzáférés. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
A technikai tárolás vagy hozzáférés felhasználói profilok létrehozásához szükséges hirdetések küldéséhez, illetve a felhasználó nyomon követéséhez egy vagy több weboldalon hasonló marketingcélokból.
Statistics

Marketing

Features
Always active

Always active
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
Beállításkezelés
{title} {title} {title}