Tecnosalva

Arduino: práctica nº 2: Control mediante pulsadores

1.9 / 5 ( 159 votos )

Bien en esta segunda práctica usaremos unos pulsadores para controlar el encendido de un diodo LED; ¿cómo conectamos un pulsador? Usaremos un divisor de tensión, como se aprecia en la figura, con una resistencia en Pull-down, de forma que cuando pulsemos la entrada digital tome el valor alto.

Declaramos el pin como entrada y usamos la función DigitalRead() para leer el valor de dicha entrada.

Se proponen tres ejercicios diferentes,

1. Este es el más sencillo, al accionar el pulsador enciendo un diodo LED, al soltar se apaga:

int buttonPin = 2;
int ledPin = 13;

int estado = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}

void loop(){
estado = digitalRead(buttonPin);

if (estado == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}

2. Ahora con dos pulsadores, al accionar el pulsador 1, enciende el Diodo, al accionar el pulsador 2, apaga el diodo.

int ledPin = 13;
int inputPin1 = 2; // pulsador 1
int inputPin2 = 3; // pulsador 2
int p1;
int p2;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}

void loop(){
p1=digitalRead(inputPin1);
p2=digitalRead(inputPin2);
if (p1 == HIGH) {
digitalWrite(ledPin, HIGH);
} else if (p2 == HIGH) {
digitalWrite(ledPin, LOW);
}
}

3. Ahora usamos los pulsadores para iluminar más o atenuar la luz del led, para ello debemos cambiar la conexión del Led al pin 9, que usa la salida PWM, modulación por ancho de pulso, como si de una salida analógica se tratara.

int ledPin = 9;
int inputPin1 = 2; // pulsador 1
int inputPin2 = 3; // pulsador 2
int p1;
int p2;
int value = 0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
void loop(){

p1=digitalRead(inputPin1);
p2=digitalRead(inputPin2);
if (p1 == HIGH) { value--; }
else if (p2 == HIGH) { value++; }
value = constrain(value, 0, 255);
analogWrite(ledPin, value);
delay(10);
}

Salir de la versión móvil