Plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar.
Alejandro Alonso Rodriguez @Alex Offline #1
CIRCUITO PARA PROBAR SERVO, DISPLAY Y LEDS:

La idea del circuito es que el display te escale el giro del servo en una escala de 0 a 9. Mientras vas girando el potenciometro, el servo se gira.
Cuando llega al máximo el LED rojo comienza a parpadear a modo de alarma (se me ocurre que tambien podriamos ponerle el zumbador en serie para que además pite). Y cuando llega al minimo de giro (0 en el display) parpadea el LED verde para informar de que está al mínimo.

Yo lo veo una buena idea para mezclar todo lo que sabemos y tenemos hasta el momento.

ESQUEMA:

Los LEDS se conectan al pin 13 y 12. Acordaos de meterle una resistencia que siempre es bueno (yo me cargué el color rojo de mi RGB por no ponersela :okay: ) Por lo visto el pin 13 ya tiene resistencia integrada pero el 12 no.

Imagen

Y el servo al pin 9 tal que así

Imagen

El esquema de conexionado del display está en este post


CÓDIGO:

Código: Seleccionar todo
  1. #include <Servo.h>
  2.  
  3. Servo myservo;  // Crea el servo
  4.  int val;    // variable to read the value from the analog pin
  5.  
  6. const int analogPin = A0;
  7. const int ledCount = 7;
  8. int ledPins[] = {
  9.   2, 3, 4, 5, 6, 7,8 };
  10.  
  11. void setup() {
  12.     pinMode(13, OUTPUT); //LED rojo
  13.   pinMode(12, OUTPUT); //LED verde
  14.   for (int thisLed = 0; thisLed < ledCount; thisLed++) {
  15.     pinMode(ledPins[thisLed], OUTPUT);
  16.     myservo.attach(9);  // ancla el servo al pin 9
  17.   }
  18. }
  19. void loop() {
  20.   val = analogRead(analogPin);            // lee el valor del potenciometro (entre 0 y 1023)
  21.   val = map(val, 0, 1023, 0, 179);     // lo escala para pasar a grados, para el servo (entre 0 y 180)
  22.   myservo.write(val);                  // pone el servo en esa posicion
  23.   delay(15);      
  24.    int sensorReading = analogRead(analogPin);
  25.    int ledLevel = map(sensorReading, 0, 1023, 0, 10);
  26.    switch(ledLevel){
  27.     case 0:
  28.       digitalWrite(2, LOW);
  29.       digitalWrite(3, HIGH);
  30.       digitalWrite(4, HIGH);  
  31.       digitalWrite(5, HIGH);
  32.       digitalWrite(6, HIGH);
  33.       digitalWrite(7, HIGH);
  34.       digitalWrite(8, HIGH);
  35.      
  36.       digitalWrite(12, HIGH);   // enciende el LED
  37.   delay(250);              // espera 250 ms
  38.   digitalWrite(12, LOW);    // apaga el LED
  39.   delay(250);              // espera 250 ms
  40.       break;
  41.      
  42.      case 1:
  43.       digitalWrite(2, LOW);
  44.       digitalWrite(3, LOW);
  45.       digitalWrite(4, LOW);  
  46.       digitalWrite(5, HIGH);
  47.       digitalWrite(6, HIGH);
  48.       digitalWrite(7, LOW);
  49.       digitalWrite(8, LOW);
  50.       break;
  51.       case 2:
  52.       digitalWrite(2, HIGH);
  53.       digitalWrite(3, HIGH);
  54.       digitalWrite(4, HIGH);  
  55.       digitalWrite(5, LOW);
  56.       digitalWrite(6, HIGH);
  57.       digitalWrite(7, LOW);
  58.       digitalWrite(8, HIGH);
  59.       break;
  60.      case 3:
  61.       digitalWrite(2, HIGH);
  62.       digitalWrite(3, HIGH);
  63.       digitalWrite(4, HIGH);  
  64.       digitalWrite(5, HIGH);
  65.       digitalWrite(6, HIGH);
  66.       digitalWrite(7, LOW);
  67.       digitalWrite(8, LOW);
  68.       break;
  69.      case 4:
  70.       digitalWrite(2, HIGH);
  71.       digitalWrite(3, LOW);
  72.       digitalWrite(4, LOW);  
  73.       digitalWrite(5, HIGH);
  74.       digitalWrite(6, HIGH);
  75.       digitalWrite(7, HIGH);
  76.       digitalWrite(8, LOW);
  77.       break;
  78.      case 5:
  79.       digitalWrite(2, HIGH);
  80.       digitalWrite(3, HIGH);
  81.       digitalWrite(4, HIGH);  
  82.       digitalWrite(5, HIGH);
  83.       digitalWrite(6, LOW);
  84.       digitalWrite(7, HIGH);
  85.       digitalWrite(8, LOW);
  86.       break;
  87.      case 6:
  88.       digitalWrite(2, HIGH);
  89.       digitalWrite(3, HIGH);
  90.       digitalWrite(4, HIGH);  
  91.       digitalWrite(5, HIGH);
  92.       digitalWrite(6, LOW);
  93.       digitalWrite(7, HIGH);
  94.       digitalWrite(8, HIGH);
  95.       break;
  96.      case 7:
  97.       digitalWrite(2, LOW);
  98.       digitalWrite(3, LOW);
  99.       digitalWrite(4, HIGH);  
  100.       digitalWrite(5, HIGH);
  101.       digitalWrite(6, HIGH);
  102.       digitalWrite(7, LOW);
  103.       digitalWrite(8, LOW);
  104.       break;
  105.      case 8:
  106.       digitalWrite(2, HIGH);
  107.       digitalWrite(3, HIGH);
  108.       digitalWrite(4, HIGH);  
  109.       digitalWrite(5, HIGH);
  110.       digitalWrite(6, HIGH);
  111.       digitalWrite(7, HIGH);
  112.       digitalWrite(8, HIGH);
  113.       break;
  114.      case 9:
  115.       digitalWrite(2, HIGH);
  116.       digitalWrite(3, HIGH);
  117.       digitalWrite(4, HIGH);  
  118.       digitalWrite(5, HIGH);
  119.       digitalWrite(6, HIGH);
  120.       digitalWrite(7, HIGH);
  121.       digitalWrite(8, LOW);
  122.      
  123.       digitalWrite(13, HIGH);   // enciende el LED
  124.   delay(250);              // espera 250 ms
  125.   digitalWrite(13, LOW);    // apaga el LED
  126.   delay(250);              // espera 250 ms
  127.       break;
  128.    
  129.    }
  130.  }


VIDEO:

"Un discurso político tiene que ser como una buena minifalda. Lo suficientemente corto como para llamar la atención, pero lo suficientemente largo como para tapar lo importante"
Google+ || Twitter
Avatar de Usuario
Administrador
Legendario
Nov 2010 | 2053 Mens.

Rodrigo Zarza @Zarza Offline #2
muy guapo. mañana a ver si le damos la vuelta a la tortilla. me has dado un par de ideas.
Simracer para: 7thRacing
Linkin' Unit
Avatar de Usuario
Veterano
Arduino
May 2011 | 982 Mens.

Rodrigo Zarza @Zarza Offline #3
Aquí está la tonta idea que se me había ocurrido XD
En realidad quería usar el mando del RC como potenciómetro, pero se vuelve loco, algo me falta, pero bueno, por si algún día rompo el mando, me vale ese.

Simracer para: 7thRacing
Linkin' Unit
Avatar de Usuario
Veterano
Arduino
May 2011 | 982 Mens.

Volver a Arduino