Escolar Documentos
Profissional Documentos
Cultura Documentos
“SoftwareSerial.h UART/USART
Arduino ”
Microcomputadoras Automotrices I
UPIITA-IPN
Equipo:
Martinez Sanchez Pedro
Torres Alcaraz Edgar Alejandro
Velasco Silva Omar Oswaldo
13 de marzo de 2019
1
Índice
1. Objetivos 3
2. Material 3
3. Marco Teórico 4
3.1. UART en Arduino . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Transmisión y recepción de datos serie . . . . . . . . . . . . . 4
3.3. Biblioteca Software Serial . . . . . . . . . . . . . . . . . . . . 5
3.3.1. FUNCIONES . . . . . . . . . . . . . . . . . . . . . . . 6
4. Desarrollo de la práctica 7
5. CONTADOR-MAESTRO-UART 8
6. CONTADOR-ESCLAVO-UART 9
7. TECLADO-MATRICIAL-MAESTRO-UART 11
8. TECLADO-MATRICIAL-ESCLAVO-I2C 12
9. POTENCIOMETRO-MAESTRO-UART 13
10.POTENCIOMETRO-ESCLAVO-UART 14
11.Conclusiones 15
2
1. Objetivos
Desarrollar tres programas con la libreia ¡SoftwareSerial.h¿cuya funcion sea
la comunicacion entre dos Arduinos (Maestro y Esclavo) mediante el puerto
serie UART.
2. Material
1. 2 Arduinos Uno.
2. Push Boton.
3. Potenciometro.
4. Teclado Matricial.
3
3. Marco Teórico
3.1. UART en Arduino
UART, son las siglas en inglés de Universal Asynchronous Receiver-
Transmitter, en español: Transmisor-Receptor Ası́ncrono Universal, es
el dispositivo que controla los puertos y dispositivos serie. Se encuentra
integrado en la placa base o en la tarjeta adaptadora del dispositivo.
4
Algunosgunos esquemas de señalización no usan cables eléctricos; ejemplo
de esto son la fibra óptica, infrarrojo (inalámbrico) y Bluetooth (inalámbri-
co). Algunos esquemas de señalización emplean una modulación de señal
portadora (con o sin cables); por ejemplo, la modulación de señales de audio
con módems de lı́nea telefónica, la modulación en radio frecuencia (RF) en
radios de datos y la DC-LIN para la comunicación de lı́nea eléctrica.
1.jpg
5
3.3.1. FUNCIONES
SoftwareSerial(rxPin, txPin, inversel ogic)
Descripción:
SoftwareSerial se utiliza para crear una instancia de un objeto SoftwareSerial,
cuyo nombre es necesario proporcionar al igual que en el ejemplo siguiente.
El argumento inverse logic es opcional y por defecto es false. Véase más
abajo para más detalles acerca de lo que hace. Con SoftwareSerial pueden
ser creados objetos múltiples, sin embargo, sólo uno puede estar activo en un
momento dado.Es necesario llamar a SoftwareSerial.begin () para permitir
la comunicación.
Parámetros:
rxPin: el pin en que se desea recibir datos serie TxPin: el pin en el que se
transmiten los datos serieinverse logic: se utiliza para invertir el sentido de
los bits entrantes (el valor por defecto es de lógica normal). Si se activa,
SoftwareSerial pone un nivel LOW (0 voltios) en el pin Rx como 1 bit
(estado de reposo) y un nivel HIGH (5 voltios) como 0 bits. También afecta
a la forma en que se escribe en el pin Tx. El valor por defecto es false.
6
4. Desarrollo de la práctica
Se realizo la conexion de los Arduinos Uno de la siguiente manera como se
muestra en los siguientes circuitos.
Utilizando dos pines, Definiendo Tx y Rx en ambos Arduinos conectando sus
tierras entre si.
UART.jpg
2.jpg
7
5. CONTADOR-MAESTRO-UART
Listing 1: Codigo-Maestro
# include < SoftwareSerial .h >
SoftwareSerial Trans (2 ,3); // TX =2 RX =3
int estadoboton =0;
int estadoboton1 =0;
5 int salida =0;
char i ;
void setup ()
{
pinMode (4 , INPUT );
10 Trans . begin (9600);
}
void loop () {
estadoboton = digitalRead (4);
15 if (( estadoboton == HIGH )&&( estadoboton1 == LOW )){
salida =! salida ;
}
estadoboton1 = estadoboton ;
if ( salida == HIGH ){
20 serialEvent ();
delay (30);
}
}
25 void serialEvent () {
Trans . print ( i );
i ++;
if ( i ==256) { i =0;}
delay (30);
30 }
8
6. CONTADOR-ESCLAVO-UART
Listing 2: Codigo-Esclavo
# include < LiquidCrystal .h >
# include < SoftwareSerial .h >
SoftwareSerial Trans2 (6 ,7);
LiquidCrystal lcd (2 ,3 ,4 ,5 ,11 ,12);
5 int i ;
void setup ()
{
lcd . begin (16 ,2);
Serial . begin (9600);
10 Trans2 . begin (9600);
void loop () {
15 if ( Trans2 . available ()){
i = Trans2 . read ();
lcd . print ( i );
Serial . println ( i );
delay (30);
20 lcd . clear ();
}
}
9
4.jpg
10
7. TECLADO-MATRICIAL-MAESTRO-
UART
Listing 3: Codigo-Maestro
# include < SoftwareSerial .h >
SoftwareSerial Trans (2 ,3); // TX =2 RX =3
# include < Keypad .h >// L i b r e r a para el control del keypad
const byte filas = 4;
5 const byte columnas = 4;
char teclado [ filas ][ columnas ]={
{ ’1 ’ , ’2 ’ , ’3 ’ , ’A ’} ,
{ ’4 ’ , ’5 ’ , ’6 ’ , ’B ’} ,
{ ’7 ’ , ’8 ’ , ’9 ’ , ’C ’} ,
10 { ’* ’ , ’0 ’ , ’# ’ , ’D ’}
}; // variable teclado
byte filaPines [ filas ]={11 ,10 ,9 ,8};
byte columnaPines [ columnas ]={7 ,6 ,5 ,4};
Keypad calcu = Keypad ( makeKeymap ( teclado ) ,
15 filaPines , columnaPines , filas , columnas );
void setup (){
Trans . begin (9600);
}
void loop () {
20 char c = calcu . getKey ();
if ( c != NO_KEY && ( c == ’1 ’ || c == ’2 ’ || c == ’3 ’ ||
c == ’4 ’ || c == ’5 ’ || c == ’6 ’ || c == ’7 ’ || c == ’8 ’ || c == ’9 ’
|| c == ’0 ’ || c == ’A ’ || c == ’B ’ || c == ’C ’
|| c == ’D ’ || c == ’* ’ ||
c == ’# ’))
25 { Trans . print ( c );
delay (30);
}
}
11
8. TECLADO-MATRICIAL-ESCLAVO-I2C
Listing 4: Codigo-Esclavo
15 void loop () {
Serial . flush ();
25 }
}
12
3.jpg
Figura 5: POTENCIOMETRO
9. POTENCIOMETRO-MAESTRO-UART
Listing 5: Codigo-Maestro
// maestro pot
# include < SoftwareSerial .h >
SoftwareSerial Trans (2 ,3); // TX =2 RX =3
char sen ;
5 int sensorValue = 0;
13
10. POTENCIOMETRO-ESCLAVO-UART
Listing 6: Codigo-Esclavo
# include < LiquidCrystal .h >
# include < SoftwareSerial .h >
SoftwareSerial Trans2 (6 ,7); // TX =2 RX =3
LiquidCrystal lcd (12 ,11 ,5 ,4 ,3 ,2);
5 int c ;
void setup ()
{
lcd . begin (16 ,2);
Serial . begin (9600);
10 Trans2 . begin (9600);
}
void loop () {
14
11. Conclusiones
Se realizaron tres circuitos con sus respectivos codigos utilizando un pulsador,
un potenciometro y un teclado matricial logrando la comunicacion entre dos
Arduinos Uno, utilizando la libreria Softwareserial.h mediante la transmision
UART.
Referencias
[UART y USB en Arduino] ttps://aprendiendoarduino.wordpress.com/2016/11/09/uart-
y-usb-en-arduino/
15