En esta entrada veremos como funciona un display de 7 segmentos con Arduino
Código;
//array con los pines donde van conectados los segmentos
int ledes[8]={2,3,4,5,6,7,8,9};
/* array con las combinaciones de encendido/apagado para cada núnero
pin 2
**********
8 * *3
* 9 *
**********
7 * *4
* *
********** * 5
6
*/
int numeros[10][8]={
//0
{1,1,1,1,1,1,1,0},
//1
{0,1,1,1,0,0,0,0},
//2
{1,1,0,1,1,1,0,1},
//3
{1,1,1,1,1,0,0,1},
//4
{0,1,1,1,0,0,1,1},
//5
{1,0,1,1,1,0,1,1},
//6
{0,0,1,1,1,1,1,1},
//7
{1,1,1,1,0,0,0,0},
//8
{1,1,1,1,1,1,1,1},
//9
{1,1,1,1,0,0,1,0},
};
void setup() {
for(int i=2;i<10;i++){
pinMode(i,OUTPUT); //modo de salida para todos los segmentos
}
}
void loop() {
// vamos recorriendo el array. Si es 0 no se enciende el led (segmento)
//si es 1 se enciende el led (segmento)
for(int i=0;i<10;i++){
for (int j=0;j<8;j++){
digitalWrite(ledes[j],numeros[i][j]);
}
delay (1000); //esperamos 1 segundo
}
}
domingo, 20 de enero de 2019
Arduino: Control con mando IR
Para ver cómo funciona un control con señales infrarrojas pongo dos ejemplos:
Ejemplo1
Encendido de un LED amarillo durante 1 segundo con la tecla ON/OFF de un mando a distancia y de otro LED verde con la tecla HOME.
Código:
//Incluimos la libreria para manejar el sensor IR
#include <IRremote.h>
long code=0; //almacenaremos el códio IR que recibe el
//sensor del mando a distancia
int pinIR = 2;//La señal del sensor va al pin 2
IRrecv receptorIR(pinIR); //declaramos un objeto del tipo Sensor IR
decode_results results; // variable que almacena lo que llega del mando
void setup()
{
pinMode(3, OUTPUT); //pines de los LEDs
pinMode(4, OUTPUT);
Serial.begin(9600);
receptorIR.enableIRIn(); //Inicializamos el sensor IR
//Instrucciones de funcionamiento
Serial.println("pulsa ON/OFF para encender el led amarillo");
Serial.println("pulsa HOME para encender el led rojo");
}
void loop()
{
digitalWrite(3,LOW); //apagamos los LEDs
digitalWrite(4,LOW);
if(receptorIR.decode(&results)){ //Si llega cualquier valor
code=results.value; //Lo almacenamos en la vbe code
Serial.println(results.value);
if((code==65548)or(code==12)){ //algunos mandos mandan varias
digitalWrite(3,HIGH); //señales al pulsar cada tecla
}
if((code==65620)or(code==84)){
digitalWrite(4,HIGH);
}
delay(1000); //Esperamos 1 segundos
receptorIR.resume(); //El receptor espera la siguiente señal
}
}
Ejemplo2
Encendido de dos LEDs con la tecla ON/OFF y apagado con la HOME
Código:
//Incluimos la libreria para manejar el sensor IR
#include <IRremote.h>
long code=0; //almacenaremos el códio IR que recibe el
//sensor del mando a distancia
int pinIR = 2; //La señal del sensor va al pin 2
int ordenEncender=0; //utilizamos esta vble para llamar al
//procedimiento encender() si esta a 1
//y apagar() si esta a 0
IRrecv irrecv(pinIR); //declaramos un objeto del tipo Sensor IR
decode_results results; // variable que almacena lo que llega del mando
void setup()
{
pinMode(3, OUTPUT); //pines de los LEDs
pinMode(4, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
//Instrucciones de funcionamiento
Serial.println("pulsa ON/OFF para encender los ledes");
Serial.println("pulsa HOME para apagar los ledes");
}
void loop()
{
digitalWrite(3,LOW);
digitalWrite(4,LOW);
if(irrecv.decode(&results)){ //Si llega cualquier valor
code=results.value; //Lo almacenamos en la vbe code
Serial.println(results.value);
if ((code==65548)or(code==12)){ //algunos mandos mandan varias señales al pulsar cada tecla
ordenEncender=1; //activamos la orden para encender
}
if((code==65620)or(code==84)){
ordenEncender=0; //desactivamos la orden para encender
}
//delay(1000);
irrecv.resume(); //El receptor espera la siguiente señal
}
if(ordenEncender==1){
encender();
}
if(ordenEncender==0){
apagar();
}
}
//encendemos los LEDs
void encender(){
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
}
//apagamos los LEDs
void apagar(){
digitalWrite(3,LOW);
digitalWrite(4,LOW);
}
Ejemplo1
Encendido de un LED amarillo durante 1 segundo con la tecla ON/OFF de un mando a distancia y de otro LED verde con la tecla HOME.
Código:
//Incluimos la libreria para manejar el sensor IR
#include <IRremote.h>
long code=0; //almacenaremos el códio IR que recibe el
//sensor del mando a distancia
int pinIR = 2;//La señal del sensor va al pin 2
IRrecv receptorIR(pinIR); //declaramos un objeto del tipo Sensor IR
decode_results results; // variable que almacena lo que llega del mando
void setup()
{
pinMode(3, OUTPUT); //pines de los LEDs
pinMode(4, OUTPUT);
Serial.begin(9600);
receptorIR.enableIRIn(); //Inicializamos el sensor IR
//Instrucciones de funcionamiento
Serial.println("pulsa ON/OFF para encender el led amarillo");
Serial.println("pulsa HOME para encender el led rojo");
}
void loop()
{
digitalWrite(3,LOW); //apagamos los LEDs
digitalWrite(4,LOW);
if(receptorIR.decode(&results)){ //Si llega cualquier valor
code=results.value; //Lo almacenamos en la vbe code
Serial.println(results.value);
if((code==65548)or(code==12)){ //algunos mandos mandan varias
digitalWrite(3,HIGH); //señales al pulsar cada tecla
}
if((code==65620)or(code==84)){
digitalWrite(4,HIGH);
}
delay(1000); //Esperamos 1 segundos
receptorIR.resume(); //El receptor espera la siguiente señal
}
}
Ejemplo2
Encendido de dos LEDs con la tecla ON/OFF y apagado con la HOME
Código:
//Incluimos la libreria para manejar el sensor IR
#include <IRremote.h>
long code=0; //almacenaremos el códio IR que recibe el
//sensor del mando a distancia
int pinIR = 2; //La señal del sensor va al pin 2
int ordenEncender=0; //utilizamos esta vble para llamar al
//procedimiento encender() si esta a 1
//y apagar() si esta a 0
IRrecv irrecv(pinIR); //declaramos un objeto del tipo Sensor IR
decode_results results; // variable que almacena lo que llega del mando
void setup()
{
pinMode(3, OUTPUT); //pines de los LEDs
pinMode(4, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
//Instrucciones de funcionamiento
Serial.println("pulsa ON/OFF para encender los ledes");
Serial.println("pulsa HOME para apagar los ledes");
}
void loop()
{
digitalWrite(3,LOW);
digitalWrite(4,LOW);
if(irrecv.decode(&results)){ //Si llega cualquier valor
code=results.value; //Lo almacenamos en la vbe code
Serial.println(results.value);
if ((code==65548)or(code==12)){ //algunos mandos mandan varias señales al pulsar cada tecla
ordenEncender=1; //activamos la orden para encender
}
if((code==65620)or(code==84)){
ordenEncender=0; //desactivamos la orden para encender
}
//delay(1000);
irrecv.resume(); //El receptor espera la siguiente señal
}
if(ordenEncender==1){
encender();
}
if(ordenEncender==0){
apagar();
}
}
//encendemos los LEDs
void encender(){
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
}
//apagamos los LEDs
void apagar(){
digitalWrite(3,LOW);
digitalWrite(4,LOW);
}
Suscribirse a:
Comentarios (Atom)