Skip to main content

map() – Adaptar señales – Ejemplo con Arduino Nº 13

Con la función map(), podemos adaptar un valor de un rango determinado a otro con un rango diferente, es decir, podemos “escalar” una señal a nuestra conveniencia. En el ejemplo siguiente, vas a adaptar una señal de entrada analógica, que va de 0 a 1023, a una señal también analógica, pero esta vez con un margen de valores que va de 0 a 255. osea que cuando la señal de entrada vale cero la señal de salida también valdrá cero, pero cuando la señal de entrada sea 1023 la señal de salida tomará un valor de 255, y así proporcionalmente para todos los valores intermedios.

Además de todo lo anterior, colocarás un LED en la salida analógica del pin número 9, y utilizarás el monitor serie para ver los valores, tanto el valor de entrada (0-1023), como el valor de salida(0-255).

HARDWARE NECESARIO:

Para realizar este circuito necesitarás:

  • Tarjeta Arduino o Genuino
  • Potenciómetro
  • Led rojo
  • Resistencia de 220 ohmios
  • Protoboard
  • Cables de conexión

CIRCUITO:

Para montar este ejemplo utilizarás cualquiera de los circuitos que ya has utilizado antes, para trabajar con entradas analógicas

CÓDIGO:

En este programa la placa Arduino está constantemente leyendo el valor de la entrada analógica, y mediante la función map(valor, MinimoValorEntrada, MaximoValorEntrada, MinimoValorSalida, MaximoValorSalida), escalaremos el valor de la variable y lo mostraremos en la salida 9.

El programa definitivo queda así:

const int PinEntradaAnalogico=A0;

const int PinSalidaAnalogico=9;

int ValorLeido=0;

int ValorSalida=0;

void setup()

{

Serial.begin(9600);

}

void loop()

{

ValorLeido=analogRead(PinEntradaAnalogico);

ValorSalida=map(ValorLeido,0,1023,0,255);

analogWrite(PinSalidaAnalogico,ValorSalida);

Serial.print(“sensor = “);

Serial.print(ValorLeido);

Serial.print(“\t output = “);

Serial.println(ValorSalida);

delay(2);

}

 

Contar el número de pulsaciones – Ejemplo con Arduino Nº 12

Para hacer un contador con Arduino para contar el número de pulsaciones, debemos contar las veces que se acciona un pulsador, recuerda que cuando decimos pulsador, puede ser un final de carrera o cualquier otro detector de dos estados, en definitiva, contaremos las veces que cambia de estado el pulsador, esto se denomina detección de cambio de estado o detector de flanco.

HARDWARE NECESARIO:

Para realizar este circuito necesitarás:

  • Tarjeta Arduino o Genuino
  • Pulsador
  • Resistencia de 10K
  • Protoboard
  • Cables de conexión

CIRCUITO:

Para montar este ejemplo utilizarás cualquiera de los circuitos que ya has utilizado antes, para trabajar con entradas digitales.

Para ello conectarás uno de los extremos de la resistencia a masa y el otro extremo a una de las patillas del pulsador, la otra patilla del pulsador la conectarás a +Vcc, y por último el nudo que hay entre los dos componentes lo conectarás a la entrada digital número 2.

CÓDIGO:

En este programa la placa Arduino está constantemente leyendo el estado del pulsador, y si este ha cambiado respecto al estado anterior, y el estado es alto, incrementa en uno el contador. Además de ello si el número contado es múltiplo de 3 enciende un led, de lo contrario lo apaga.

El programa definitivo queda así:

const int Pulsador=2;

const int Led=13;

int ContadorDePulsaciones=0;

int EstadoDelPulsador=0;

int AnteriorEstadoDelPulsador=0;

void setup()

{

                pinMode(Pulsador,INPUT);

                pinMode(Led,OUTPUT);

                Serial.begin(9600);

}

void loop()

{

EstadoDelPulsador=digitalRead(Pulsador);

If(EstadoDelPulsador ¡=AnteriorEstadoDelPulsador)

{

                If(EstadoDelPulsador==HIGH)

{

ContadorDePulsaciones++;

Serial.println(“Pulsador pulsado”);

Serial.print(“El número de veces que has accionado el pulsador es: “

Serial.println(ContadorDePulsaciones);

}

else

{

                Serial.println(“Pulsador sin pulsar”);

}

AnteriorEstadoDelPulsador=EstadoDelPulsador;

If(ContadorDePulsaciones % 3 == 0)

{

                digitalWrite(Led, HIGH);

}

else

{

                digitalWrite(Led,LOW);

}

}

}

 

Resistencia INPUT_PULLUP – Ejemplo con Arduino Nº 11

En este ejemplo te enseñaré el uso de la resistencia INPUT_PULLUP con pinMode(). También monitorizaremos el estado del pulsador mediante el puerto serie que comunica la placa Arduino al PC mediante el cable USB (Universal Serial Bus).

HARDWARE NECESARIO:

Para realizar este circuito necesitarás:

  • Tarjeta Arduino o Genuino
  • Pulsador
  • Protoboard
  • Cables de conexión

CIRCUITO:

En este circuito simplemente te quiero enseñar el concepto de la resistencia INPUT_PULLUP, que es una resistencia interna que tiene el arduino para evitar sobreintensidades. Así que en este circuito utilizaremos solamente un pulsador conectado a masa y al pin 2 de la placa de Arduino, así pues, cuando acciones el pulsador la entrada leerá LOW, pues estarás conectándolo a masa, y cuando no presiones el pulsador estará leyendo HIGH.

CÓDIGO:

En este programa la placa Arduino está constantemente leyendo el estado del pulsador, a través de la función digitalRead(), y hará una comparación sencilla, si la lectura del pulsador es HIGH, apagará el Led del pin número 13, y si la lectura del pulsador es LOW, encenderá el citado pin, además de todo ello, mostrarás la lectura del pulsador en el monitor del puerto serie con la instrucción Serial.println().

 

El programa definitivo queda así:

// Resistencia interna INPUT_PULLUP – www.aprobarfacil.com

void setup()

{

                Serial.begin(9600);

                pinMode(2, INPUT_PULLUP);

                pinMode(13, OUTPUT);

}

void loop()

{

int LecturaPulsador=digitalRead(2);

Serial.println(LecturaPulsador);

If(LecturaPulsador==HIGH)

{

digitalWrite(13,LOW);

}

else

{

                digitalWrite(13,HIGH);

}

}

Vídeos publicados en el canal de youtube de aprobarfacil.com

Estos son los vídeos publicados en el canal de youtube de aprobarfacil.com

ELÉCTRONICA ANALÓGICA

1 – CONCEPTOS BÁSICOS DE ELECTRÓNICA ANALÓGICA

V001 – 1.1.0 – Introducción a la electrónica analógica

V002 – 1.2.0 – Clasificación de la electricidad

V003 – 1.2.1 – Clasificación de los materiales

V004 – 1.2.2 – Conceptos básicos sobre electricidad

V005 – 1.2.3 – Conceptos de intensidad y tensión

V007 – 1.3.1 – Resistencia eléctrica

V008 – 1.3.2 – Tensión eléctrica

V009 – 1.3.3 – Intensidad eléctrica

V010 – 1.3.4 – Potencia eléctrica

V011 – 1.3.5 – Energía eléctrica

V012 – 1.3.6 – Efecto Joule

V013 – 1.4.0 – Resumen para aprobar el tema 01

V014 – 1.5.1 – Ejercicio 01 – Cálculo de la intensidad a partir de la carga y el tiempo

 

2 – COMPONENTES ELECTRÓNICOS PASIVOS

V018 – 2.1.0 – Introducción a los resistores

V019 – 2.1.1 – Clasificación de los Resistores

V020 – 2.1.2 – Identificación de las resistencias

V021 – 2.1.3 – Cómo medir el valor de una resistencia

V022 – 2.1.4 – Asociación de resistencias

V023 – 2.2.0 – Introducción a los condensadores

V024 – 2.2.1 – Clasificación de los condensadores

V025 – 2.2.2 – Identificación de los condensadores

V026 – 2.2.3 – Funcionamiento de un condensador

V028 – 2.3.0 – Resumen para aprobar el tema 02

V030 – 2.4.1 – Ejercicio 01 – Asociación de resistencias

 

3 – CIRCUITOS ELÉCTRICOS

V033 – 3.1.1 – Como medir el valor de la tensión y la intensidad

V035 – 3.3.0 – Circuito eléctrico, mallas, nudos y ramas

V038 – 3.5.0 – Cálculo de la potencia eléctrica

V039 – 3.6.0 – Rendimiento de un generador

V042 – 3.7.2 – Segunda Ley de Kirchoff, mallas

V046 – 3.10.1 – Cómo hallar el circuito equivalente Thevenin

V047 – 3.11.1 – Ejercicio 01 – Circuito Thevenin – Parte 1

V048 – 3.11.2 – Ejercicio 01 – Circuito Thevenin – Parte 2

 

4 – ELECTROMAGNETISMO

V049 – 4.1.0 – Introducción al electromagnetismo

V050 – 4.1.0 – Líneas de fuerza, flujo magnético, inducción magnética

V051 – 4.1.1 – Campo magnético vs intensidad de campo magnético

 

V084 – Análisis y resolución de un Circuito RLC serie en C.A. – Primera parte

V085 – Ejercicio circuito C serie RL

 

7 – COMPONENTES ACTIVOS

V105 – 7.1.0 – Introducción a los componentes activos

V106 – 7.1.1 – La unión PN

V107 – 7.1.2 – Introducción al diodo semiconductor

V108 – 7.2.1 – El diodo zener

V109 – 7.2.2 – El diodo LED

 

8 – RECTIFICADORES

V124 – 8.1.0 – Circuitos rectificadores

V125 – 8.1.1 – Rectificador de media onda

V126 – 8.1.2 – Rectificador onda completa con transformador de toma media

V127 – 8.1.3 – Rectificador onda completa con puente de diodos

V129 – 8.2.1 – Filtro paso bajo

V130 – 8.2.2 – Filtro paso alto

V131 – 8.2.3 – Filtro paso banda

V134 – 8.4.1 – Ejercicio 01: Cálculo del condensador de filtrado

V135 – 8.4.2 – Ejercicio 02: Cálculo de la tensión de rizado

 

9 – AMPLIFICADORES

V137 – 9.1.0 – Introducción a los amplificadores

V138 – 9.1.1 – El decibelio

V139 – 9.2.2 – Zonas de funcionamiento de un transistor

V140 – 9.2.3 – Punto de trabajo de un transistor

V142 – 9.3.0 – Introducción a los amplificadores operacionales

V143 – 9.3.1 – Características de un amplificador operacional

V152 – 9.6.1 – Ejercicio 01: Cálculo punto de trabajo de un transistor

 

 

ELECTRÓNICA DIGITAL

1 – INTRODUCCIÓN A LA ELECTRÓNICA DIGITAL

V250 – 1.1.0 – Introducción a los sistemas digitales

V251 – 1.2.0 – Sistemas de numeración

V252 – 1.2.1 – Sistema binario

V253 – 1.2.2 – Sistema hexadecimal

V254 – 1.3.0 – Introducción a las funciones lógicas

V255 – 1.3.1 – Puertas lógicas 01 – Not, Or y AND

V256 – 1.3.2 – Puertas lógicas 02 – Xor, Nor, Nand y Xnor

V257 – 1.4.0 – Tabla de la verdad

V258 – 1.5.0 – Familias lógicas TTL y CMOS

V259 – 1.6.0 – Circuitos Integrados Comerciales

V260 – 1.7.1 – Ejercicio 01 – Conversión de un número en decimal a binario

V261 – 1.7.2 – Ejercicio 02 – Conversión de un número en binario a decimal

V262 – 1.7.3 – Ejercicio 03 – Conversión de un número en decimal a hexadecimal

V263 – 1.7.4 – Ejercicio 04 – Conversión de un número en hexadecimal a decimal

V264 – 1.7.5 – Ejercicio 05 – Conversión de un número en binario a hexadecimal

V265 – 1.7.6 – Ejercicio 06 – Conversión de un número en hexadecimal a binario

V266 – 1.7.7 – Ejercicio 07 – Pasar los valores de una función a su tabla de verdad

 

2 – SISTEMAS COMBINACIONALES

V270 – 2.1.0 – Introducción a los circuitos combinacionales

V271 – 2.2.1 – Simplificación de funciones mediante álgebra de Boole

V272 – 2.2.2 – Simplificación de funciones mediante Karnauhgt

V273 – 2.3.1 – Hallar la función lógica a partir del circuito eléctrico

V274 – 2.3.2 – Hallar el circuito eléctrico a partir de la función lógica

V275 – 2.3.3 – Hallar el circuito a partir de la función lógica solo con nands

V276 – 2.4.0 – Bloques combinacionales

V277 – 2.4.1 – El decodificador

V278 – 2.4.2 – El codificador

V279 – 2.4.3 – El multiplexor

V280 – 2.4.4 – El demultiplexor

V281 – 2.4.5 – El comparador

V282 – 2.5.01 – Ejercicio 01: Obtención de los valores de salida de una función

V283 – 2.5.02 – Ejercicio 02 – Obtención de la forma canónica de una función

V284 – 2.5.03 – Ejercicio 03 – Simplificación de funciones mediante álgebra de Boole

V285 – 2.5.04 – Ejercicio 04 – Simplificación de funciones mediante Karnaugh

V286 – 2.5.05 – Ejercicio 05 – Cómo hallar la tabla de verdad de decodificador BCD a 10

V287 – 2.5.06 – Ejercicio 06 – Cómo hallar la tabla de verdad de deco BCD a 7 segmentos

V288 – 2.5.07 – Ejercicio 07 – Cómo implementar una tabla de verdad con un multiplexor

V289 – 2.5.08 – Ejercicio 08 – Simplificación de funciones mediante álgebra de Boole

V290 – 2.5.09 – Ejercicio 09 – Simplificación de funciones mediante álgebra de Boole

V291 – 2.5.10 – Ejercicio 10 – Simplificación de funciones mediante la Ley de Morgan

V292 – 2.5.11 – Ejercicio 11 – Simplificación de funciones mediante álgebra de Boole

 

3 – SISTEMAS SECUENCIALES

V300 – 3.1.0 – Introducción a los sistemas secuenciales

V301 – 3.2.0 – Introducción a los biestables

V302 – 3.2.1 – Interpretación de la tabla de verdad de los biestables

V303 – 3.2.2 – Biestables asíncronos – Biestable RS

V304 – 3.2.3 – Biestables síncronos – Biestable RS síncrono por nivel

V305 – 3.2.4 – Biestables síncronos – Biestable RS síncrono por flanco

V306 – 3.2.5 – Biestables síncronos – Biestable JK síncrono por flanco

V307 – 3.2.6 – Biestables síncrono – Biestable D síncrono por flanco

V308 – 3.2.7 – Biestables síncrono – Biestable T síncrono por flanco de bajada

V309 – 3.2.8 – Biestables síncrono – Entradas asíncronas

V310 – 3.3.0 – Circuitos contadores

V311 – 3.3.1 – Circuitos contadores asíncronos

 

4 – CONVERSIÓN ANALÓGICO – DIGITAL

V350 – 4.1.0 – Qué es la conversión analógico – digital

V351 – 4.1.1 – Qué es el muestreado de las señal continua

V352 – 4.1.2 – Diagrama de bloques de un sistema de muestreo

V353 – 4.1.3 – Cuantificación y codificación

 

OTROS VÍDEOS

Vxxx – 1.1.0 – Introducción al curso de presencia web

Noticias Febrero 2017 – aprobarfacil.com

NOTICIAS FEBRERO 2017


NOTICIAS APROBARFACIL.COM


EDUCACIÓN

ABP:


ELECTRÓNICA ANALÓGICA

NOTICIAS:


ELECTRÓNICA DIGITAL

NOTICIAS:

CURSO DE ELECTRÓNICA DIGITAL:

Curso Electrónica digital – Nivel 01 – Introducción

Curso Electrónica digital – Nivel 02 – Sistemas Combinacionales

Curso Electrónica digital – Nivel 03 – Sistemas Secuenciales

Curso Electrónica digital – Nivel 04 – Conversión analógico – digital

Curso Electrónica digital – Nivel 05 – Sistemas Microprogramables


ARDUINO

NOTICIAS:

CONCEPTOS BÁSICOS:

PROYECTOS CON ARDUINO:

EJEMPLOS CON ARDUINO

PROYECTOS CON ARDUINO DEL STARTER KIT:

Evitar rebotes de los pulsadores – Ejemplo con Arduino Nº 10

En algunos casos es necesario evitar rebotes de los pulsadores, como por ejemplo en el caso de contadores, los rebotes se generan por problemas mecánicos o físicos, estos rebotes es posible que la placa de Arduino los lea como múltiples pulsaciones en un corto periodo de tiempo, consiguiendo así engañar al programa.

En este ejemplo te muestro como conseguir evitar el efecto de los rebotes mediante software, para ello comprobaremos varias veces el estado de la entrada en un muy corto periodo de tiempo, para asegurar que el botón ha sido presionado, para ello utilizaremos de nuevo la función millis() y un periodo de tiempo en el que no se contarán los rebotes del pulsador.

En este ejemplo, cada vez que le des al pulsador cambiará el estado del Led, si está encendido se apagará y si está apagado se encenderá.

CIRCUITO:

Para este circuito utilizaremos de nuevo el circuito utilizado en el ejemplo de entradas digitales.

CÓDIGO:

const int Boton=2;

const int Led=13;

int EstadoDelLed=HIGH;

int EstadoDelBoton;

int EstadoAnteriorDelLed=LOW;

unsigned long TiempoDeLaUltimaPulsacion=0;

unsigned long MargenDePulsacion=50;

void setup()

{

                pinMode(Boton, INPUT);

                pinMode(Led, OUTPUT);

                digitalWrite(Led, EstadoDelLed);

}

void loop()

{

                int Lectura=digitalRead(Boton);

                if (Lectura !=EstadoAnteriorDelLed)

                {

                TiempoDeLaUltimaPulsacion=millis();

}

                If((millis() – TiempoDeLaUltimaPulsacion) > MargenDePulsacion)

                {

                if(Lectura != EstadoDelBoton)

                {

                EstadoDelBoton=Lectura;

                If(EstadoDelBoton=HIGH)

                {

                                EstadoDelLed= ¡EstadoDelLed;

}

}

}

}

Evitar rebotes de los pulsadores – Ejemplo con Arduino Nº 09

En algunos casos es necesario evitar rebotes de los pulsadores, como por ejemplo en el caso de contadores, los rebotes se generan por problemas mecánicos o físicos, estos rebotes es posible que la placa de Arduino los lea como múltiples pulsaciones en un corto periodo de tiempo, consiguiendo así engañar al programa y c0ntar tres o cuatro pulsaciones en vez de una.

En este ejemplo te muestro como conseguir evitar el efecto de los rebotes mediante software, para ello comprobaremos varias veces el estado de la entrada en un muy corto periodo de tiempo, para asegurar que el botón ha sido presionado, para ello utilizaremos de nuevo la función millis() y un periodo de tiempo en el que no se contarán los rebotes del pulsador.

En este ejemplo, cada vez que le des al pulsador cambiará el estado del Led, si está encendido se apagará y si está apagado se encenderá.

CIRCUITO:

Para este circuito utilizaremos de nuevo el circuito utilizado en el ejemplo de entradas digitales.

CÓDIGO:

const int Boton=2;

const int Led=13;

int EstadoDelLed=HIGH;

int EstadoDelBoton;

int EstadoAnteriorDelLed=LOW;

unsigned long TiempoDeLaUltimaPulsacion=0;

unsigned long MargenDePulsacion=50;

void setup()

{

                pinMode(Boton, INPUT);

                pinMode(Led, OUTPUT);

                digitalWrite(Led, EstadoDelLed);

}

void loop()

{

int Lectura=digitalRead(Boton);

if (Lectura !=EstadoAnteriorDelLed)

{

TiempoDeLaUltimaPulsacion=millis();

}

                If((millis() – TiempoDeLaUltimaPulsacion) > MargenDePulsacion)

{

if(Lectura != EstadoDelBoton)

                {

                EstadoDelBoton=Lectura;

                If(EstadoDelBoton=HIGH)

                {

                                EstadoDelLed= ¡EstadoDelLed;

}

}

}

}

Timbre con un pulsador – Ejemplo con Arduino Nº 08

En este ejemplo te voy a enseñar cómo crear un circuito de un timbre con un pulsador, eso sí, sustituiremos el timbre por un diodo LED, aunque te invito a probar con un piezoeléctrico, si quieres obtener un sonido en vez de una luz, aunque para aprender el concepto es suficiente con un LED.

Antes de nada, debes comprender el funcionamiento del pulsador, el pulsador es un componente electrónico que une dos puntos del circuito cuando lo presionas, también es llamado Botón.

CIRCUITO:

En este montaje utilizaremos el mismo circuito que en el ejemplo de entradas digitales, es decir utilizaremos una resistencia de 10K conectada a GND por un extremo, y por el otro conectaremos uno de los extremos del pulsador y el otro del pulsador lo conectaremos a Vcc, y es del nudo de la intersección de estos dos componentes de donde sacaremos la señal que llevaremos a la entrada digital 2 de la placa de Arduino.

Cuando el pulsador no está accionado, la patilla 2 del Arduino lee un “cero” es decir cero voltios, y cuando el componente es pulsado, la patilla 2 del Arduino lee un “uno” es decir cinco voltios.

Es necesario recordar, que si en una entrada digital de Arduino, no está conectada ni a GND ni a Vcc, no se puede saber cuál será el valor que estará leyendo en ese momento.

CÓDIGO:

En este caso en la función setup(), inicializamos el Pin 13 como salida mediante la variable Led, y el Pin 2 como entrada mediante la variable, Boton.

En la función loop() leemos si está accionado o no el pulsador mediante la función digitalRead(), la cual nos deja su lectura en la variable EstadoDelBoton.

Por último, simplemente hacemos una comparación para conocer el EstadoDelBoton, y en el caso de que esté activado encenderemos el Led mediante la función digitalWrite(), pasándole el parámetro HIGH y en caso contrario, apagaremos el Led con la misma función digitalWrite(), pero en este último caso, pasándole el parámetro LOW.

El código definitivo queda de la siguiente manera:

const int Boton =2;

const int Led=13;

int EstadoDelBoton=0;

void setup()

{

                pinMode(Led, OUTPUT);

                pinMode(Boton, INPUT);

}

void loop()

{

                EstadoDelBoton=digitalRead(Boton);

                If (EstadoDelBoton==HIGH)(

                {

                               digitalWrite(Led,HIGH);

}

else

{

                digitalWrite(Led,LOW);

}

}

Espero que te haya sido útil este ejemplo, y recuerda que tienes cursos completos de Arduino en el aula virtual de aprobarfacil.com.


Entrada al AULA VIRTUAL de aprobarfacil.com

Aprendizaje Basado en Proyectos vs Enseñanza Directa

Cuando hablamos de comparar el aprendizaje basado en proyectos vs enseñanza directa, pienso que estamos hablando de la eterna dicotomía entre la educación conductista y la educación constructivista,  a los que nos interesa y nos apasiona el tema de la educación hemos leído bastante teoría, que habla del pro y de los contras de ambos métodos, y podemos empezar hablando del estímulo respuesta de Paulov, hasta las teorías constructivistas del gran Ken Robinson, os animo a que busquéis en Youtube videos de este señor.

 

En definitiva os presento esta tabla a ver que pensáis de ella:

 

Enseñanza Directa Aprendizaje Basado en Proyectos
Profesorado experto Profesorado Mediador
Relación de asimilación Relación de dialógica
Conocimiento estático Conocimiento flexible, modificable
Conocimiento objetivo externo al sujeto Conocimiento subjetivo interno al sujeto
Alumno pasivo Alumno activo constructor de su aprendizaje
Interesa más el producto Interesa más el proceso
Currículo vertical Currículo horizontal
No se consideran los aprendizajes previos

Si se consideran los aprendizajes previos

 

¿Qué os parece? es ¿Enseñanza Directa o Enseñanza conductista?, y..

 

¿es ABP o Enseñanza constructivista?

 

Quizás….

¿El ABP es la concrección de la Enseñanza constructivista?