0% encontró este documento útil (0 votos)
9 vistas96 páginas

Electronica Conceptos Basicos

El documento proporciona una introducción a conceptos básicos de electrónica y programación con Arduino, incluyendo el uso de componentes como diodos, potenciómetros y LEDs. Se abordan estructuras de control, funciones de generación de números aleatorios, y ejemplos de código para realizar ejercicios prácticos. Además, se discuten técnicas de comunicación serie y el uso de sensores, así como la manipulación de señales analógicas y digitales.

Cargado por

REBECA
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas96 páginas

Electronica Conceptos Basicos

El documento proporciona una introducción a conceptos básicos de electrónica y programación con Arduino, incluyendo el uso de componentes como diodos, potenciómetros y LEDs. Se abordan estructuras de control, funciones de generación de números aleatorios, y ejemplos de código para realizar ejercicios prácticos. Además, se discuten técnicas de comunicación serie y el uso de sensores, así como la manipulación de señales analógicas y digitales.

Cargado por

REBECA
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 DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 96

Electronica conceptos basicos

Potenciometro logarítmico o lineal

DIODOS
DIODO

PARTE negativa “n” y positiva “p”

LED AZUL

https://www.youtube.com/watch?v=KzTm5UmF0Xk&ab_channel=Veritasiumenespa%C3%B1ol

para medir voltaje, intensidad, Resistencia


+ y – conectadas horizontalmente y o demás van conectas vertical

Por detro es asi:


Arduino
File->examples->basics->blink
Casting pasar de int a string o al revés

Documentacion -> programing -> lenguaje reference AQUÍ ESTAN TODOS SUS
METODOS TODO LO QUE NECESITAS
VARIABLES
HOLA MUNDO ARDUINO
CASTEAR
RESTO
Para ahorrar palabras a la hora de escribir:
Ejercicios

COMPARADORES

COMPARADORES AND && , OR || , NOT !=


ESTRUCTURAS DE CONTROL:
IF ELSE

Ejemplo:

Con los numeros aleatorios hay que poner una semilla el randomSeed para que la secuencia de numeros no se repita
cada vez que reiniciemos. Siempre se pone en setup() el randomSeed(analogRead(A0));
Ejercicio num aleatorio entre rangos ver cual se repite más.
Par e Impar
WHILE

ITERACION: CADA VUELTA, ES UNA ITERACION


CONECTAR UN BOTON
ejercicio
Poner dos botones replicando el ejercicio anterior:

Dos leds:
Con un blink -> parpadeo:

DO WHILE
EJEMPLO:

SWITCH
Ejercicio HACER UN DADO DE 6 CARAS CON SWITCH:
const int led1 = 3;
const int led2 = 2;
const int led3 = 4;
const int boton = 7;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(boton,INPUT);
}

void loop() {
int estadoBonton = 0;
int numA;
//genero numero random de 1 a 6
numA= random(1,7);
// compruebo si esta pulsado
estadoBonton = digitalRead(boton);

if ( estadoBonton == true){

switch(numA){
case 1:
Serial.println("numero 1 , salta y bebe");
digitalWrite(led1, HIGH);
delay(5000);
digitalWrite(led1,LOW);
break;
case 2:
Serial.println("numero 2 , bebe boca abajo");
digitalWrite(led2, HIGH);
delay(5000);
digitalWrite(led2,LOW);
break;
case 3:
Serial.println("numero 3, bebe si tiene herman@s");
digitalWrite(led3, HIGH);
delay(5000);
digitalWrite(led3,LOW);
break;
case 4:
Serial.println("numero 4, bebe si lleva pantalon");
break;
case 5:
Serial.println("numero 5, bebe si el dni es par");
break;
case 6:
Serial.println("numero 6, bebe si el dni es impar");
break;
default:
Serial.println("numero incorrecto");

}else{
Serial.println("boton no pulsado");
delay(1000);
}

}
Código del profe

BUCLE FOR:

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
delay(5000);

for(int i = 0; i < 10 ; i ++){


Serial.println(i);
}

}
PIN ANALOGICO, HAY 16 ENTRADAS ANALOGICAS
PWM -> CREA SEÑALES DIGITALES, HACE CREER QUE LLEGA UNA SEÑAL MENOR A LA QUE ES
PRACTICA DIVISOR DE TENSIONES
Potenciometro-> es como la resistencias pero aquí puedo cambiar el valor.
JOYSTICK
CONVERSOR DE DIGITAL A ANALOGICO

PWM ->
regla de 3 para sacar el V que necesito.

CIRCUITO PARA SACAR PWM:


FUNCION MAP ARDUINO -> PERMITE HACER REGLAS D 3
Remapea un nº de un rango a otro rango

Map(x,1,y,2);

1023 -> 5V

0 -> 0V

Map(2.4 , 0 , 5 , 1023);

PWM -> Tiene valores de 0 – 255

V -> Tiene valor de 0 – 1023


Con un led y un potenciómetro, leo potenciómetro y lo paso al pwm y este valor de voltios se lo paso al led y según
mueva el potenciómetro luce mas o menos el led.
RGB led potenciometro y joystic
El potenciómetro y joystick son 3 potenciómetros; uno es girando y el otro de lado a lado.

El led RGB ponemos la patilla larga al negativo ( a tierra), las 3 patillas que quedan van cada una con una resistencia
le pongo 220 mk para que luzca mas, y de cada resistencia la enchufo a cada una de las entradas.
El Joystick tiene que conectarse a + otro a - , otro a una entrada A1 y el otro a otra entrada A2.
El potenciómetro no tiene resistencia, 3 patillas, una + otra al - y otro a la entrada A0 por ejemplo.

**** ENTORNO AYUDA TECLADO - Shift + alt -> crea varias líneas para escribir a la vez.

MISMO EJERCICIO ECHO POR EL PROFESOR


CODIGO CORTO

Podemos transformar un pin A0 a un pin analogico, si te quedas sin pines los


transformas.

aquí el A0 es el numero 54.

TABLA RESISTENCIAS
Se calcula cada línea con su columna, eje: col 1 el rojo es 2 , col 2 el naranja es 3, col 3 el lila es 7 -> 127 * 4ª col aquí
sería el negro entonces es 237 * 1 = 237.

COLORES LA LUZ:

Para hacer un color amarillo hay que poner la cantidad del rojo y la del verde para producir amarillo en un led RGB.

El blanco tiene todos los colores a tope, es la frecuncia mas alta, las tiene todas.

CONTROLADORAS DE LUCES: Tienen canales , uno R , G , B.

Es lo que hemos hecho en el ejercicio anterior.

MESA DE LUCES CON POTENCIOMETRO FADER


COMUNICACIÓN SERIE
Para la comunicación entre 2 dispositivos, se hablan de manera bidimensional en ambos sentidos, para unirles : tx
del 1 coni el rx del 2 y el rx del 1 con el tx del 2.

BAUD RATE -> Símbolos por segundo que puedo enviar. Simbolo partido por segundo.

Serial.begin(9600). -> son 9600 símbolos por segundo.


cable tx , cable rx. Es comunicación asincrona-> no necesita estar en sintonia para enviar informacion. Lo que nos
llega va a un buffer. El buffer tiene una capacidad de 63 bites-> 63 caracteres.

Pin1 y pin0 conectados directamente al pc. El rx y tx transforma para el usb.

SENSOR DE LUZ
Ecuaciones para sacar los valores de la resistencia.

Ejercicio
Led enfrente del LDR y cortamos la luz con una tarjeta.

Atajos de teclado para poner en los strings


CODIGO CON LAS MEDIAS DE LUZ EN MAXIMA Y MIINIMA

const int led = 2;


void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
digitalWrite(led, HIGH);

//calibracion de la luz del ldr


Serial.println("\t Calibrando la luz : ");
//cuenta atras eswto es para que quede bonito
for (int i = 9; i > 0; i--) {
Serial.print(" \t en --- " + (String)i + " , ");
}
Serial.println(" ");
Serial.println("\t cogiendo los datos :\n");
int valorMx = 0;
// meto en la variable valorMx las 10 lecturas para sacar despues la media
for (int i = 0; i < 10; i++) {
valorMx = valorMx + analogRead(A0);
}
delay(500);
// hago la media de las 10 lecturas
int valorMxT = valorMx / 10;
Serial.println(valorMxT);
Serial.println("\t***** *****\n");
Serial.println("------\t El valor maximo del LDR es : \t------");
Serial.println("\t " + (String)valorMxT + "\n");

delay(5000);

// cogemos las 10 medidas tapando la luz


Serial.println("\t Calibrando la luz de nuevo: \n");
for (int i = 9; i > 0; i--) {
Serial.print(" \t en --- " + (String)i + " , ");
}
Serial.println(" ");
Serial.println("\t cogiendo los datos :\n");

//recojo los 10 valores minimos


//inicializo la "caja" donde voy a meter los valores
int valorMin = 0;
for (int i = 0; i < 10; i++) {
valorMin = valorMin + analogRead(A0);
}

// saco la media
int valorMinTotal = valorMin / 10;
Serial.println("\t***** *****\n");
Serial.println("------\t El valor minímo del LDR es : \t------");
Serial.println("\t " + (String)valorMinTotal);
valorMinTotal = 0;
delay(500);
valorMinTotal = 0;
valorMxT = 0;
}
void loop() {

CODIGO DEL PROFESOR SACAR EL THRESHOLD -> Punto medio entre maxima y
minima
const int led = 2;
int valorMaxT = 0;
int valorMinTotal = 0;

void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
digitalWrite(led, HIGH);
//calibracion de la luz del ldr
Serial.println("\t Calibrando la luz : ");
//cuenta atras eswto es para que quede bonito
for (int i = 9; i > 0; i--) {
Serial.print(" \t en --- " + (String)i + " , ");
}
Serial.println(" ");
Serial.println("\t cogiendo los datos :\n");
int valorMx = 0;
// meto en la variable valorMx las 10 lecturas para sacar despues la media
for (int i = 0; i < 10; i++) {
valorMx = valorMx + analogRead(A0);
}
delay(500);
// hago la media de las 10 lecturas
valorMaxT = valorMx / 10;

Serial.println("\t***** *****\n");
Serial.println("------\t El valor maximo del LDR es : \t------");
Serial.println("\t " + (String)valorMaxT + "\n");

delay(5000);

// cogemos las 10 medidas tapando la luz


Serial.println("\t Calibrando la luz de nuevo: \n");
for (int i = 9; i > 0; i--) {
Serial.print(" \t en --- " + (String)i + " , ");
}
Serial.println(" ");
Serial.println("\t cogiendo los datos :\n");

//recojo los 10 valores minimos


//inicializo la "caja" donde voy a meter los valores
int valorMin = 0;
for (int i = 0; i < 10; i++) {
valorMin = valorMin + analogRead(A0);
}
// saco la media
valorMinTotal = valorMin / 10;
Serial.println("\t***** *****\n");
Serial.println("------\t El valor minímo del LDR es : \t------");
Serial.println("\t " + (String)valorMinTotal);
valorMinTotal = 0;
delay(500);
}

void loop() {

// threshol en el punto medio


int threshold = (valorMinTotal + valorMaxT) / 2;
// threshold segun porcentajes
int diferencia = valorMaxT - valorMinTotal;
int thresholdMax = valorMaxT - diferencia * 0.1;
int thresholdMin = valorMinTotal + diferencia * 0.1;
int lectura = analogRead(A0);

if (thresholdMax < lectura) {


Serial.println(" Escenario de max luz");
} else if (thresholdMin > lectura) {
Serial.println(" Escenario de min luz");
} else {
Serial.println(" Escenario indeterminado");
}
int valorPorcentaje = map(lectura, valorMinTotal, valorMaxT, 0, 100);

}
Aquí el botón directo al led sin código

EL ZUMBADOR, EFECTO PIEZOELECTRICO, SIMILARIDAD CON UN ALTAVOZ.


ONDA CUADRADA
Esquema microfono es igual a un altavoz.

El micrófono más fácil de hacer es el electrec.

Los micrófonos piezolectricos -> Transforman la vibración en electricidad. Son chapas.

- Las alarmas tienen piezoeléctrico


- las alas de los aviones.
- Puedo detectar roturas-> en una chapa de metal con piezoeléctricos que emitan y otros que reciban, puedes
detectar de donde viene la vibración, si cambia la forma de como se recibe la vibración.

así convierto vibración en electricidad.


ONDA CUADRADA

ONDA SINUIDAL COMPARACIÓN CON CUADRADA

Funciones de Onda TONE();


2 tipos de zumbadores

ACTIVO-> Pita por si solo , tiene la silicona negra.

PASIVO->tapa verde, tienes que tratarlo como un altavoz tonto, tu tienes que darle el tono. Con un generador de
tonos.

Crea tono encendiendo y apagando el zumbador.


TONOS ARDUINO, WWW.DRAGAOSEMCHAMA.COM
El tonePitch -> libreria que te da las notas, tu puedes hacer notas.

Amplificador y altavoces

El altavoz depende de la intensidad que le entra.

Divisor de tensión

19000 es demasiado grande , 65536 es el máximo en 16bits


Como empieza en 20 ya no es menor que 5
Puertos serie
Todos los arduinos tienen que estar conctados con la misma tierra, y el voltaje igual tiene que ser, o usar un
convertidor.

Cable usb tiene 4 cables

CONVERTIDOR TTL -> estándar del voltaje al que trabaja el chip


CURIOSIDAD ->Un cargador y su cable

COMUNICACIÓN comunicación serie->

aquí salen números binarios por el string

con char me repite el dato


Serial.available-> tamaño del buffer

readString()

CON ReadString
EJERCICIO SECUENCIADOR DE LUCES

Puerto 13 es el led de la placa.

Para que no entre en el default hay que poner abajo a la derecha la opción “sin ajuste de línea” porque sino nos mete
la letra mas un intro entonces se genera un espacio en blanco y es como si además de la letra pusieses un espacio en
blanco.
FUNCIONES ARDUINO CODIGO SERIAL. …. Arduino.cc

Serial.setTimeout(lomg milliseconds);
Serial.read();
Serial.readString();
Serial.parseInt();
Serial.parseFloat();
Serial.setTimeout(long milliseconds); -> si pasado un milisegundo deja de intentar realizar algo. Se utiliza para leer
cadenas de Strings. Este timeout espera este tiempo para leer la cadena al ser tipo long puedo poner una cadena
larga.

Serial.readStriingUntil(char terminador) -> lee el string hasta…. Lo que le digas. Por ejem: hasta una coma.

Serial.parseInt() -> Lee el buffer y muestra desde el primer digito que encuentre entero.

Solo lee 1230.

Serial.parseFloat() -> lee el buffer hasta que encuentra un numero decimal (con punto).

Funciones del serial, está todo en www.arduino.cc


EJERCICIO AGENDA ARDUINO:
-Me pregunta que quiero hacer
-caso A, -> añadir contacto
-caso B -> mostrar por pantalla el último contacto
Ejercicio comando, tiempo , frecuencia
DISPLAY LCD

el d1 y d2 no se utilizan
https://docs.arduino.cc/learn/electronics/lcd-displays/
Es el código de ejemplo del Arduino esta en examples->liquidCristal->Hello World!

JUEGO DE SALTAR muñeco CON LCD + botón y potenciometro


https://www.youtube.com/watch?v=3hZxCFgvq7o&ab_channel=REES52
FUNCIONES

PARAMETROS
Parametros de entrada

En el parámetro de salida solo se manda un parámetro.

EJERCICIOS
EJERCICIOS
Ejercicio realizado por el profesor

Ejemplos : todo en una función, otra manera usando un switch case. Acordarnos de ramdonseed(analogRead(A0)),
poner la semilla.
DISPLAY 7 SEGMENTOS

Permite poner números del 0 al 9 y alguna letra. por cada pin del led se
conecta una resistencia. 5011AS -> POSITIVO COMUN ‘ANODO’; 555BS->NEGATIVO COMUN ‘CATODO’.

SI es anodo lleva 5v y si es Catodo lleva 0v;

PARA FORMAR LOS NUMEROS


Las resistencias se ponen cada una en una patilla para que tenga mas fuerza la luz de los led.ley de oohm
ARRAYS
//vamos a crear array 10 posiciones
//el array contiene num de 100 a 500;
//1- vamos a imprimirlo por pantalla
//2- modificar, ej.sumar un valor a cada elemento o multiplicarlo
//3- imprimimos el array modificado
//4- crear una función blink con parámetro entrada tiempo de blink
//5- vamos a ejecutar la función 10 veces utilizando cada elemento del
// array como parámetro de entrada
ARRAY BIDIMENSIONAL

Como se accede al array:


7 segmentos

Programa Arduino para pantalla 7 segmentos y 4 dígitos

#define g 11
#define d1 A1
#define d2 A2
#define d3 A3
#define d4 A4

void setup() {
pinMode(g, OUTPUT);
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);

digitalWrite(g, HIGH);
delay(1000);
}

void loop() {
digitalWrite(d1, LOW);
digitalWrite(d4, HIGH);
delay(200);
digitalWrite(d2, LOW);
digitalWrite(d1, HIGH);
delay(200);
digitalWrite(d3, LOW);
digitalWrite(d2, HIGH);
delay(200);
digitalWrite(d4, LOW);
digitalWrite(d3, HIGH);
delay(200);
}

Explicación sketch para pantalla 7 segmentos y 4 dígitos:

1. en el bucle void setup, hemos aplicado una tensión a los cuatro dígitos del indicador
LED para que no se enciendan inicialmente al arrancar el programa;
2. en el bucle void loop iluminamos los dígitos uno a uno (la iluminación se realiza en
modo BAJO), mientras que el segmento G permanece siempre iluminado.

Controlador I2C
Está conectado por un lado al Arduino y por el otro al display , lcd, 7segmentos….. Ahorra cables.
Módulo de pantalla led.

Con un pin analogico , poder leer controlar varios botones

Conviertes de una señal digital a una analógica.

PROGRAMACION ORIENTADA A OBJETOS EN C


Para crear una clase utilizo la variable struct

Ejem: struct coche{

Int ruedas;
int añoCompra;
String matricula; }
Ahora creamos objetos de tipo coche ->
Métodos de clase; se pueden crear funciones dentro de la clase. Y para llamar a esa función ->

ejercicio
FUNCIONES PARA MEDIR TIEMPO millis(); micros();

Sacamos asi el tiempo desde que arranca arduino procesos por segundo, para mas precision aun utilizamos micros()
->
Métodos Get (obtener)me devuelve el valor y set (cambiar) para cambiar valor

RESUMEN DE LAS CLASES METODOS

DHT11 -> SENSOR DIGITAL DE HUMEDAD Y TEMPERATURA 5V


Librería de dht11 - https://github.com/adafruit/DHT-sensor-library

OTRA LIBRERÍA SE INSTALA COMO LA ANTERIOR - https://github.com/adafruit/Adafruit_Sensor


HC-SR04 - SENSOR DE DISTANCIA POR ULTRASONIDOS USA 40KHz

2 tracductores: convierte una energía en otra, uno


emite el otro recibe. Su velocidad es 340 m/s.
https://cursos.mcielectronics.cl/2022/12/06/como-funciona-el-sensor-ultrasonico-hc-sr04-y-como-se-conecta-con-
arduino/

esta ahí muy bien explicado. Desde 10 microsegundos hasta 3 metros.

cuando la onda se corta por algo se enciende el echo y devuelve valor.


const int Trigger = 2; //Pin digital 2 para el Trigger del
sensor
const int Echo = 3; //Pin digital 3 para el Echo del sensor
void setup() {
Serial.begin(9600);//iniciailzamos la comunicación
pinMode(Trigger, OUTPUT); //pin como salida
pinMode(Echo, INPUT); //pin como entrada
digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
}
void loop()
{
long t; //timepo que demora en llegar el eco
long d; //distancia en centimetros
digitalWrite(Trigger, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger, LOW);
t = pulseIn(Echo, HIGH, 20000); //obtenemos el ancho del pulso
d = t/59; //escalamos el tiempo a una distancia en
cm
Serial.print("Distancia: ");
Serial.print(d); //Enviamos serialmente el valor de la
distancia
Serial.print("cm");
Serial.println();
delay(100); //Hacemos una pausa de 100ms
}

También podría gustarte