Tutorial de arduino: Conectando varios pulsadores en una salida « Devthisblog

Devthisblog Desarrollo .net, Diseño Web, Seguridad… Y todo lo que se me vaya ocurriendo…

Febrero 14, 2017

Tutorial de arduino: Conectando varios pulsadores en una salida

Filed under: API,Arduino,c++,Programación — Etiquetas: , , — jnavero @ 10:23 pm

En los posts anteriores hemos visto como configurar el ide para usar arduino en Visual Studio también hemos visto un programa muy sencillo hola mundo y uno un poco más complicado haciendo un pseudo semáforo.

En el día de hoy vamos a hacer lo que se conoce como una escalera de resistencias, para este nuevo post voy a basarme en el anterior del semáforo usando 3 leds conectados (ya tenemos la mitad del trabajo hecho).

Como de costumbre, comenzamos con los componentes.

Receta

En esta ocasión usaremos:

  • 1 Arduino uno
  • 3 Leds (uno rojo, uno verde y otro amarillo)
  • 4 resistencias de 220 ohm (para los leds y un pulsador)
  • 3 pulsadores
  • 2 resistencia 10K

El conexionado queda de la siguiente manera:

Como está basado en el proyecto anterior, la cosa queda de forma similar:

  • Led rojo positivo E8 y pin 6 digital del arduino. En E9 negativo led rojo a resistencia de 220 ohm.
  • Led amarillo positivo en E12 y pin 5 digital del arduino. En E13 negativo del led amarillo a la resistencia de 220 ohm.
  • Led verde positivo en E15 y pin 4 digital del arduino. En E16 negativo del led verde a la resistencia de 220 ohm.
  • Pulsador en E22 positivo y en E24 puenteado con el negativo del otro pulsador (E27)
  • Pulsador en E25 con una resistencia de 220 ohm a positivo y E27 (negativo) a los pulsadores E24 y E30
  • Pulsador en E28 con una resistencia de 10K a positivo y en E30 (negativo) al pulsador E27, una resistencia de B30 a negativo y por último en A30 lo conectamos en el pin A0.

El código

Como en los posts anteriores vamos complicando el código pero muy poquito más 🙂

 C++ | 
 
 copy code |
?

01
02
 
03
#define RED_LED_PIN 6
04
#define YELLOW_LED_PIN 5
05
#define GREEN_LED_PIN 4
06
#define SWITCHS_PIN A0
07
 
08
int switchStatus = 0;
09
 
10
void setup() {
11
 
12
   pinMode(GREEN_LED_PIN, OUTPUT);
13
   pinMode(YELLOW_LED_PIN, OUTPUT);
14
   pinMode(RED_LED_PIN, OUTPUT);
15
   pinMode(SWITCHS_PIN, INPUT);
16
 
17
   Serial.begin(9600);
18
}
19
 
20
void loop() {
21
 
22
   digitalWrite(GREEN_LED_PIN, LOW);
23
   digitalWrite(YELLOW_LED_PIN, LOW);
24
   digitalWrite(RED_LED_PIN, LOW);
25
 
26
   switchStatus = analogRead(SWITCHS_PIN);
27
   Serial.println(switchStatus);
28
 
29
   if(switchStatus == 1023)
30
   {
31
      digitalWrite(RED_LED_PIN, HIGH);
32
   }
33
   else if (switchStatus >= 990 && switchStatus <= 1010)
34
   {
35
      digitalWrite(YELLOW_LED_PIN, HIGH);
36
   }
37
   else if (switchStatus >= 500 && switchStatus <= 520)
38
   {
39
      digitalWrite(GREEN_LED_PIN, HIGH);
40
   }
41
   delay(10);
42
}
43
 
44

(Código en github)

Aquí como diferencia con respecto a los posts anteriores es la línea:

switchStatus = analogRead(SWITCHS_PIN);  Esta línea lee desde el puerto analógico y almacena el valor leído en la variable switchStatus. Los puertos analógicos van de 0 a 1023, y esto depende del voltaje que nos llegue. Al colocarle las resistencias podemos leer diferentes valores y por eso podemos discriminar un pulsador de otro.

¿Cómo podemos saber el valor que nos llega? Podemos calcularlo o simplemente monitorizar las lecturas como hacemos la línea siguiente a la lectura (Serial.println(switchStatus);).

Hasta aquí el post de hoy espero que les sea de utilidad.

No hay comentarios »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress