sábado, 24 de febrero de 2024

Encendido de un LED al accionar un pulsador (con resistencia pull-down o normalmente abierto)

/* Encendido de un LED al accionar un pulsador
Utilizo Aduino UNO y el 'shield' Basic I/O
El pulsador 4, en el BasicIO, está conectado
con una resistencia pull-down (normalmente abierto), de manera que
al pulsarlo (se cierra el circuito), el valor de estado del LED se pone
en 1 (HIGH), se cierra el circuito y se enciende 
el LED amarillo; y, al sotarlo (se abre el circuito), 
el valor del estado del LED se pone en 0 (LOW) 
y se apaga el LED. 

Joan Aranès Clua
24/02/2024
*/                  

//Declaración de variables y asignación de valores GPIO
//--------------------------------------------------------------------
//Variable para representar el estado del pulsador
// 1: cierra el circuito; 0: abre el circuito
int Valor;                    

int Pulsador = 4;                //Entrada(digital) del pulsador: D4
int Led_amarillo = 10;           //Salida (digital) del led blanco: D10
//--------------------------------------------------------------------
                    
//Configuración del 'sketch'      
//--------------------------------------------------------------------
void setup() 
{
  pinMode(Pulsador, INPUT);      //La patilla del pulsador se configura como entrada
  pinMode(Led_amarillo, OUTPUT);   //La patilla del led se configura como salida
}
//--------------------------------------------------------------------

//Acciones del 'sketch'
//--------------------------------------------------------------------
void loop() 
{
  Valor=digitalRead(Pulsador);       //Lee el estado, según se pulse 
                                     //o se suelte el pulsador
  digitalWrite(Led_amarillo,Valor);  //Pone el LED en el estado actual
}
Shield Basic I/O montado sobre un Arduino UNO

$\diamond$

Encendido y apagado de los leds rojo, amarillo, verde y blanco del 'shield' Basic I/O

//------------------------------------------------------------------
// Encendido y apagado de los leds rojo, amarillo, verde y blanco 
// del shield Basic I/O 
// Ulitilizo la placa Arduino UNO
// Se encienden y apagan secuencialmente, en el orden:
// rojo -> amarillo -> verde -> blanco
// Joan Aranès Clua
// 22/02/2024
//------------------------------------------------------------------
int led_rojo=11; 
int led_amarillo=10; 
int led_verde=9; 
int led_blanco=6; 
int retardo=100; //valor del retardo (delay) en milisegundos

void setup() {
  pinMode(led_rojo,OUTPUT);
  pinMode(led_amarillo,OUTPUT);
  pinMode(led_verde,OUTPUT);
  pinMode(led_blanco,OUTPUT);

}

void loop() {
  digitalWrite(led_rojo,HIGH);
  delay(retardo);  // put your main code here, to run repeatedly:
  digitalWrite(led_rojo,LOW);
  delay(retardo);
  digitalWrite(led_amarillo,HIGH);
  delay(retardo);  // put your main code here, to run repeatedly:
  digitalWrite(led_amarillo,LOW);
  delay(retardo);
  digitalWrite(led_verde,HIGH);
  delay(retardo);  // put your main code here, to run repeatedly:
  digitalWrite(led_verde,LOW);
  delay(retardo);
  digitalWrite(led_blanco,HIGH);
  delay(retardo);  // put your main code here, to run repeatedly:
  digitalWrite(led_blanco,LOW);
  delay(retardo);
}

Uso del puerto serie y del teclado del ordenador para cambiar el valor del temporizador de retardo en el encendido y apagado de un LED

//------------------------------------------------------------------
// Uso del puerto serie y del teclado del ordenador
// para cambiar el valor del temporizador de retardo 
// ---
// Utilizo la placa Arduino UNO y el shield Basic I/O
// --- 
// Se encienden y apaga el led amarillo
// con duración controlable del parpadeo 
// entre lenta y rápida
// la cual se puede cambiar durante la ejecución del sketchr
// ---
// Joan Aranès Clua
// 23/02/2024
//------------------------------------------------------------------

int led_amarillo=10;//Éste es el LED que utilizaré para hacer la práctica 
int retardo=0;//inicialización a cero del valor del retardo
char caracter_de_control; 

void setup() {
  pinMode(led_amarillo,OUTPUT);
  Serial.begin(9600);  
}

void loop() {
  Serial.println("El led amarillo está encendido"); 
  if (Serial.available()>0){
    caracter_de_control=Serial.read(); //lectura del carácter de control
  }
 if (caracter_de_control=='r'){
   retardo=200; // intervalo de tiempo entre el encendido y el apagado de 0,2 s
   //información de salida por el puerto serie hacia el ordenador:
   Serial.print("parpadeo rápido:"); 
   Serial.println(retardo);
 }
if (caracter_de_control=='l'){
   retardo=1000; // intervalo de tiempo entre el encendido y el apagado de 1 s
   //información de salida por el puerto serie hacia el ordenador:
   Serial.print("parpadeo lento:"); 
   Serial.println(retardo);
 }
  //Encendido 
  digitalWrite(led_amarillo,HIGH);
  delay(retardo);
  //Apagado  
  digitalWrite(led_amarillo,LOW);
  delay(retardo);  
 }

martes, 6 de junio de 2023

Multímetros de bajo coste que permiten medir la mayor parte de las magnitudes eléctricas con la suficiente fiabilidad y precisión

El multímetro que uso en mi taller, junio de 2023
El multímetro que uso en mi velero, para comprobar el estado de las baterías y para realizar reparaciones que pueden surgir a bordo, junio de 2023

jueves, 9 de marzo de 2023

Carga y descarga de un condensador. Una práctica con Arduino Uno

He realizado el montaje del circuito, poniendo el condensador en paralelo con la resistencia, probando distintos valores de capacidad del condensador, C, y de la resistencia, R.

Dispongo de un Arduino Uno y una protoboard así como muchos y variado componentes ( condensadores, resistores, etcétera ) por lo que espero poder seguir el curso con dicho material. Después de muchas pruebas, al final, he podido apreciar claramente la carga y la descarga con los valores que figuran en el sketch que he elaborado ( R=220 ohmios y C=470 microfaradios ) para apreciar las variaciones con la suficiente claridad. En las lecturas del puerto serie he podido ver como se pasaba de 3 V en la carga ( incompleta ) a 1 V en la descarga ( incompleta ). Con otros valores y con el sketch original fluctuaban los valores demasiado rápido y no podía apreciar suficientemente bien la carga y la descarga. Los retardos que he programado, acordes con la constante de tiempo son de 100 ms ( T=RC = 103 ms ). Desde luego para valores del condensador de 1 pF y 1 kilo ohmio de resistencia los tiempos de carga y descarga son demasiado pequeños para poder apreciarlos y distinguirlos (1000 microsegundos).

/*

Programa que he escrito para mi Arduino Uno, para poder leer (desde el mismo IDE de Arduino, por el puerto serie) los valores durante la carga y la descarga del condensador (haz clic en la imagen para ver su tamaño natural y leer mejor):

Con Fritzing he también he cargado este código. Todo ha funcionado bien, obteniendo el diseño esquemático y el diseño en PCB (que no muestro aquí). $\diamond$

Detector de presencia con Arduino Uno y un sensor PIR

Esquema del montaje (Fritzing):

Programa que he escrito para Arduino Uno (haz clic para ver el tamaño natural de la imagen):

$\diamond$

Dispositivo de asistencia al aparcamiento, empleando el microcontrolador Arduino Uno, un sensor de ultrasonidos, un LED rojo (alarma luminosa), un zumbador (alarma acústica) y un display (para leer la distancia medida)

$\diamond$

¿Con 350 W basta?

Mi pequeño taladro de columna que tengo puesto encima de un banco