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.
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);
}
}
#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);
}
}
Comentarios
Publicar un comentario