PRACTICA DIRIGIDA 2





Construcción de un prototipo con la Circuit Playground, siguiendo la ayuda del Video 2

Aquí muestro la programación Dirigida para un circuito para encender Neopixeles usando el el proboard de Arduino,
Vamos a ocupar una Protoboar
                           un potenciómetro (perilla que envía valores según graduación)
                             5 cables macho
                             3 lagartos con terminación hembra
                             1 Cricuit Playground

Los capacitores que vamos a utilizar son  3.3v (energia, GND(tierra), y el 9 según lo programemos.

En la placa vamos a colocar después de la programación y compilación un potenciómetro en la placa.



1 tierra
                                                                        2 datos
                                                                                  3 dispositivos 
tomado de https://es.aliexpress.com




Esta es la programación para controlar el potenciómetro donde  se gira la perilla y cambia la intensidad de los neopixeles.


#include <Adafruit_CircuitPlayground.h> // se incluye la libreria
#include <Adafruit_Circuit_Playground.h>

int contador=0;              // se declara la variable y se inicializa en 0, el valor de map
void setup() {
  pinMode (A9, INPUT);        //se incia el capacitor 9, que es el que recibe los datos
  CircuitPlayground.begin();  //se inicializan el CircuitPlayground
}
void loop() {
  int val=map(analogRead(A9),0,1023,0,255); // se lee la función con el analog.read: val es una variable local y se define de una sola vez
contador=(contador+1)%10;                   //envia el residuo de una división al potenciómetro.
CircuitPlayground.setPixelColor(contador,CircuitPlayground.colorWheel(val)); //cambia el color del neopixel
}








Usando la protoboard con circuit Playground

la siguiente programación enciende un led en la CircuitPplayground al oprimir el botón ubicado en la protoboar.


#include <Adafruit_CircuitPlayground.h>
#include <Adafruit_Circuit_Playground.h>

int pinDelBoton = 10;
int umbral =50;
void setup() {
 CircuitPlayground.begin();
 pinMode(pinDelBoton, INPUT);
}
void loop()
{
  encenderLed();
}
  void encenderLed()
  {
    if (CircuitPlayground.readCap(pinDelBoton) > umbral )
    {
      CircuitPlayground.setPixelColor(4, 255,255,0);
      delay(20);
      }
      else
      {
        CircuitPlayground.setPixelColor(4, 0,0,0);
        delay(20);
      }
  }




RETO de la practica


Este reto nos propone crear un circuito con sensor de contacto en la protoboard para que controle el encendido y apagado de neopixeles.
En mi primer intento:

#include <Adafruit_CircuitPlayground.h>
#include <Adafruit_Circuit_Playground.h>

int pinDelBoton = 9;
int umbral =100;
void setup() {
 CircuitPlayground.begin();
 pinMode(pinDelBoton,  INPUT);
  }
void loop()
{
  encenderneopixeles();
}
  void encenderneopixeles()
  {
    if (CircuitPlayground.readCap(pinDelBoton) > umbral )
   {
    delay(500);
    CircuitPlayground.setPixelColor(0,550,0,0);
        CircuitPlayground.setPixelColor(1,0,0,255);
        CircuitPlayground.setPixelColor(2,0,255,0);
        CircuitPlayground.setPixelColor(3,255,0,0);
        CircuitPlayground.setPixelColor(4,0,0,255);
        CircuitPlayground.setPixelColor(5,0,255,0);
        CircuitPlayground.setPixelColor(6,255,0,0);
        CircuitPlayground.setPixelColor(7,0,0,255);
        CircuitPlayground.setPixelColor(8,0,255,0);
        CircuitPlayground.setPixelColor(9,255,0,0);
     
    delay(1000);
   
      }
      else
      {
        CircuitPlayground.setPixelColor(0,0,0,0);
        CircuitPlayground.setPixelColor(1,0,0,0);
        CircuitPlayground.setPixelColor(2,0,0,0);
        CircuitPlayground.setPixelColor(3,0,0,0);
        CircuitPlayground.setPixelColor(4,0,0,0);
        CircuitPlayground.setPixelColor(5,0,0,0);
        CircuitPlayground.setPixelColor(6,0,0,0);
        CircuitPlayground.setPixelColor(7,0,0,0);
        CircuitPlayground.setPixelColor(8,0,0,0);
        CircuitPlayground.setPixelColor(9,0,0,0);
       
      }
  }
  
Una segunda prueba:  en esta programación le agregue una espera a cada instrucción que activa el Neopixel en donde queda encendido hasta que se encienda el ultimo y lo apago con la instrucción circuitPlayground.clearPixel(), combinando el color de los Neopixeles. 


#include <Adafruit_CircuitPlayground.h>
#include <Adafruit_Circuit_Playground.h>

int pinDelBoton = 9;
int entrada =50;

void setup() {
 CircuitPlayground.begin();
 pinMode(pinDelBoton,  INPUT);
 CircuitPlayground.clearPixels();
 }
void loop()
{
  encenderneopixeles();
}
  void encenderneopixeles()
  {
    if (CircuitPlayground.readCap(pinDelBoton) > entrada )
   {
       CircuitPlayground.setPixelColor(0,550,0,0); delay(1000);
        CircuitPlayground.setPixelColor(1,0,0,255); delay(900);
        CircuitPlayground.setPixelColor(2,0,255,0);delay(800);
        CircuitPlayground.setPixelColor(3,255,0,0);delay(700);
        CircuitPlayground.setPixelColor(4,0,0,255);delay(600);
        CircuitPlayground.setPixelColor(5,0,255,0);delay(500);
        CircuitPlayground.setPixelColor(6,255,0,0);delay(400);
        CircuitPlayground.setPixelColor(7,0,0,255);delay(300);
        CircuitPlayground.setPixelColor(8,0,255,0);delay(200);
        CircuitPlayground.setPixelColor(9,255,0,0);delay(100);
       
            }
      else
      {
        CircuitPlayground.clearPixels();
      }
  }






Investigando y consultando encontré otra forma de hacer el RETO  mas eficiente, 











#include <Adafruit_CircuitPlayground.h>
#include <Adafruit_Circuit_Playground.h>

int off=0;
int pix=0;

void setup() 
{
 CircuitPlayground.begin();
    Serial.begin(9600);
       pinMode(A10,  INPUT);
       }
void loop()
{
  pix = (pix+1)%10;              // nos da un residuo para activar los neopoxeles
  off=digitalRead(A10);       //guarda la lectura del pin mode, del boton (0 o 1)
  if (off ==1)                        // se evalúa la condición de apagado
         {
           CircuitPlayground.setPixelColor(pix,0,255,255); // se activan los neopixeles si la condición es verdadera
             delay(10);
         } 
              else
         {  
  CircuitPlayground.clearPixels();   // se limpian los neopixeles si la condición es falsa
      delay(20);
        }
 }

 Adaptado de https://iniciandoconcircuitplayground.blogspot.com/search/label/practica%202

Comentarios

Entradas populares de este blog

PROYECTO FINAL

PRACTICA DIRIGIDA 1