0% encontró este documento útil (0 votos)
14 vistas6 páginas

Seguidor de Linea

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas6 páginas

Seguidor de Linea

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

SEGUIDOR DE LINEA

Programa que demuestra el funcionamiento del sensor de linea KY-033 imprimiendo en monitor serial
si se encuentra sobre una linea de color negro o fuera de la misma.

int SENSOR = 2; // salida de KY-033 a pin digital 2


int VALOR; // almacena valor leido del sensor
int ANTERIOR = 1; // almacena ultimo valor leido del sensor

void setup(){
Serial.begin(9600); // inicializa comunicacion serie a 9600 bps
pinMode(SENSOR, INPUT); // pin 2 como entrada
}

void loop(){
VALOR = digitalRead(SENSOR); // lee valor de sensor y asigna a variable VALOR
if (VALOR != ANTERIOR){ // si el valor es distinto del ultimo
if (VALOR == HIGH) // si VALOR tiene un nivel alto es linea negra
Serial.println("Linea"); // imprime en monitor serial la palabra Linea
else // si VALOR tiene un nivel bajo es fuera de linea
Serial.println("Fuera"); // imprime en monitor serial la palabra Fuera
ANTERIOR = VALOR; // actualiza variable ANTERIOR con el actual de VALOR
}
delay(500); // breve demora de medio segundo
}
CONTROL CON INFRARROJO
Programa que permite mostrar en el monitor serial el codigo correspondiente al botón presionado en
un control remoto mediante el modulo receptor KY-022. Requiere la instalacion de la libreria IRremote.

#include <IRremote.h> // importa libreria IRremote


int SENSOR = 11; // sensor KY-022 a pin digital 11
IRrecv irrecv(SENSOR); // establece al 11 para objeto irrecv
decode_results codigo; // crea objeto codigo de la clase decode_results
void setup() {
Serial.begin(9600); // inicializa comunicacion serie a 9600 bps
irrecv.enableIRIn(); // inicializa recepcion de datos
}
void loop() {
if (irrecv.decode(&codigo)) { // si existen datos ya decodificados
Serial.println(codigo.value, HEX); // imprime valor en hexadecimal en monitor
irrecv.resume(); // resume la adquisicion de datos
}
delay (100); // breve demora de 100 ms.
}
SEGUNDO PROGRAMA
#include <IRremote.h> // importa libreria IRremote
#define Boton_1 0x80BF49B6 // reemplaza cada instancia de Boton_1 por su valor HEX
#define Boton_2 0x80BFC936 // reemplaza cada instancia de Boton_2 por su valor HEX
#define Boton_3 0x80BF33CC // reemplaza cada instancia de Boton_3 por su valor HEX

int SENSOR = 11; // sensor KY-022 a pin digital 11


IRrecv irrecv(SENSOR); // establece al 11 para objeto irrecv
decode_results codigo; // crea objeto codigo de la clase decode_results

int LEDROJO = 2; // componente rojo de LED RGB a pin 2


int LEDVERDE = 3; // componente verde de LED RGB a pin 3
int LEDAZUL = 4; // componente azul de LED RGB a pin 4

void setup() {
Serial.begin(9600); // inicializa comunicacion serie a 9600 bps
irrecv.enableIRIn(); // inicializa recepcion de datos
pinMode(LEDROJO, OUTPUT); // pin 2 como salida
pinMode(LEDVERDE, OUTPUT); // pin 3 como salida
pinMode(LEDAZUL, OUTPUT); // pin 4 como salida
}
void loop() {
if (irrecv.decode(&codigo)) { // si existen datos ya decodificados
Serial.println(codigo.value, HEX); // imprime valor en hexadecimal en monitor
if (codigo.value == Boton_1) // si codigo recibido es igual a Boton_1
digitalWrite(LEDROJO, !digitalRead(LEDROJO)); // enciende o apaga componente rojo
if (codigo.value == Boton_2) // si codigo recibido es igual a Boton_2
digitalWrite(LEDVERDE, !digitalRead(LEDVERDE));// enciende o apaga componente verde
if (codigo.value == Boton_3) // si codigo recibido es igual a Boton_3
digitalWrite(LEDAZUL, !digitalRead(LEDAZUL)); // enciende o apaga componente azul
irrecv.resume(); // resume la adquisicion de datos
}
delay (100); // breve demora de 100 ms.
}
PROGRAMA QUE PERMITE ESTABLECER UNA COMUNICACION CON EL MODULO
BLUETOOTH HC-05

COMANDOS AT

CONEXIÓN CON ARDUINO

#include <SoftwareSerial.h> // libreria que permite establecer pines digitales


// para comunicacion serie

SoftwareSerial miBT(10, 11); // pin 10 como RX, pin 11 como TX

void setup(){
Serial.begin(9600); // comunicacion de monitor serial a 9600 bps
Serial.println("Listo"); // escribe Listo en el monitor
miBT.begin(38400); // comunicacion serie entre Arduino y el modulo a 38400 bps
}

void loop(){
if (miBT.available()) // si hay informacion disponible desde modulo
Serial.write(miBT.read()); // lee Bluetooth y envia a monitor serial de Arduino

if (Serial.available()) // si hay informacion disponible desde el monitor serial


miBT.write(Serial.read()); // lee monitor serial y envia a Bluetooth

Segundo programa:
Programa que permite encender y apagar dos LEDs mediante el modulo Bluetooth HC-05

#include <SoftwareSerial.h> // libreria que permite establecer pines digitales


// para comunicacion serie

SoftwareSerial miBT(10, 11); // pin 10 como RX, pin 11 como TX

char DATO = 0; // variable para almacenar caracter recibido


int LEDROJO = 2; // LED rojo a pin digital numero 2
int LEDVERDE = 3; // LED verde a pin digital numero 3

void setup(){
miBT.begin(38400); // comunicacion serie entre Arduino y el modulo a 38400 bps
pinMode(LEDROJO, OUTPUT);// pin 2 como salida
pinMode(LEDVERDE, OUTPUT); // pin 3 como salida
}

void loop(){
if (miBT.available()){ // si hay informacion disponible desde modulo
DATO = miBT.read(); // almacena en DATO el caracter recibido desde modulo

if( DATO == '1' ) // si el caracter recibido es el numero 1


digitalWrite(LEDROJO, HIGH); // enciende LED rojo

if( DATO == '2' ) // si el caracter recibido es el numero 2


digitalWrite(LEDROJO, LOW); // apaga LED rojo

if( DATO == '3' ) // si el caracter recibido es el numero 3


digitalWrite(LEDVERDE, HIGH); // enciende LED verde

if( DATO == '4' ) // si el caracter recibido es el numero 4


digitalWrite(LEDVERDE, LOW); // apaga LED verde
}
}
Tercer programa
Que función cumple el programa:

#include <SoftwareSerial.h> // libreria que permite establecer pines digitales


// para comunicacion serie

SoftwareSerial miBT(10, 11); // pin 10 como RX, pin 11 como TX

char DATO = 0; // variable para almacenar caracter recibido


int LEDROJO = 2; // LED rojo a pin digital numero 2
int LEDVERDE = 3; // LED verde a pin digital numero 3
int BRILLO = 0; // variable para almacenar valor de brillo del LED verde

void setup(){
miBT.begin(38400); // comunicacion serie entre Arduino y el modulo a 38400 bps
pinMode(LEDROJO, OUTPUT); // pin 2 como salida
pinMode(LEDVERDE, OUTPUT); // pin 3 como salida
}

void loop(){
if (miBT.available()){ // si hay informacion disponible desde modulo
DATO = miBT.read(); // almacena en DATO el caracter recibido desde modulo

if( DATO == '1' ) // si el caracter recibido es el numero 1


digitalWrite(LEDROJO, !digitalRead(LEDROJO)); // escribe valor opuesto al leido del LED rojo

if ( DATO == '2' ){ // si el caracter recibido es el numero 2


BRILLO = BRILLO + 10; // incrementa BRILLO en 10
if (BRILLO > 255) // si el valor de BRILLO es mayor a 255
BRILLO = 255; // asigna a BRILLO el valor de 255

analogWrite(LEDVERDE, BRILLO);// escribe valor de BRILLO en LED verde mediante PWM


}

if ( DATO == '3' ){ // si el caracter recibido es el numero 3


BRILLO = BRILLO - 10; // derementa BRILLO en 10
if (BRILLO < 0) // si el valor de BRILLO es menor a 0
BRILLO = 0; // asigna a BRILLO el valor de 0

analogWrite(LEDVERDE, BRILLO);// escribe valor de BRILLO en LED verde mediante PWM


}

También podría gustarte