Paso 15: Mi código capacidad plena
/ * hice mi mejor esfuerzo para fijar la mutilación de mi formato que pasó cuando pegué mi código en la página. Algunas cosas habían incluso sido autorizado/no pega!
Sería sabio comprobar y asegurarse de que algo importante no fue comentada al llegar en el entorno de Arduino.
Original compila bien, comentario si es broken.* /
int sensor1 = A2; cosido a mi... dedo puntero
int sensor2 = A3; //middle int sensor3 = A4; anillo int sensor4 = A5; Pinky
#include / / yaaap, quiere ser como esto. ver su uberguide para instalarlo en tu biblioteca de arduino.
Es un proceso relativamente fácil de ~ 3 paso, vale la pena. Los archivos y las instrucciones están en el siguiente sitio:
https://Learn.Adafruit.com/Adafruit-neopixel-Uber...
Luego pincha en el banner "Sketch" del archivo y seleccione Agregar archivo en el menú para navegar a donde está guardado el archivo .h para agregar su ficha a este proyecto
Static int PIN = 10; Si olvidas esto, donde dice PIN ahí abajo va a enojarse el compilador.
El número es el nombre de su lilypad que los datos enviados desde el pasador.
la siguiente es recto desde el archivo de ejemplo "strandtest"
Parámetro 1 = número de píxeles en tira
Parámetro 2 = número de pin (la mayoría son válidos)
Parámetro 3 = píxeles tipo banderas, sumar como sea necesario: (izquierda hacia fuera la información extra, significa poco para mí) tira de Adafruit_NeoPixel = Adafruit_NeoPixel (15, PIN, NEO_GRB + NEO_KHZ800);
Tengo 15 píxeles, así número
/******************************************************************** *********************************************************************
* instalado *
* *
********************************************************************/
void setup() {}
para las luces:
Strip.Begin();
Strip.Show();
"Inicializar todos los píxeles en 'off'"
inicializar la comunicación serial a 9600 bits por segundo:
pinMode (sensor1, entrada); establece pin de puntero del knit del potenciómetro a la entrada
digitalWrite (sensor1, HIGH); //initializes el sensor de
pinMode (sensor2, entrada); pin de juegos medio punto potenciómetro entrada
digitalWrite (sensor2, HIGH); Inicializa el sensor
pinMode (sensor3, entrada); conjuntos de anillo pin de hoja del potenciómetro a la entrada de punto
digitalWrite (sensor3, HIGH); Inicializa el sensor
pinMode (sensor4, entrada); establece pin de pinky del knit del potenciómetro a la entrada
digitalWrite (sensor4, HIGH); Inicializa el sensor
Serial.Begin(9600); }
/******************************************************************** *********************************************************************
* *
* función principal *
* *
********************************************************************* ********************************************************************/
void loop() {}
int medio = 8; media luz
int derecha = 15; luz de extremo derecho (dirección más alta del LED)
int izquierda = 1; luz de extremo izquierdo (bajo dirección del LED)
leer la entrada en el pin analógico:
3.3 V es 1024
0 V es 0
"SV" corto para valor de sensor
int SV1 = analogRead(sensor1); 300-400 lo 890 950 Hola
int SV2 = analogRead(sensor2); 650-700 lo 900-1015 Hola
int SV3 = analogRead(sensor3); min promedio máximo promedio de 650-700 1000
int SV4 = analogRead(sensor4); min 530 máximo 1024 - avg Hola 950 avg lo 650ish
Si mezcla colores eran el deseo, asignación de 0-250 a 300-950 como el valor de un RGB por dedo meñique fresco podría ser un extraño al azar mezcla ecuaciones RGB utilizando el valor asignado. EH.
/ * //uncomment esta sección para utilizar la función de impresión de serial y haz tu propio dedo gamas de electrodos.
imprimir el valor de leer:
Serial.Print ("valor 1 =");
Serial.Print(sensorValue1);
Serial.Print ("valor 2 =");
Serial.Print(sensorValue2);
Serial.Print ("valor 3 =");
Serial.Print(sensorValue3);
Serial.Print ("valor 4 =");
Serial.println(sensorValue4);
*/
/********************************************************************
* IF/THEN respuesta *
********************************************************************/
rango de respuesta máximo a 950, creo que esto debe impedir que todos respondieron verdadero.
por ahora, tengo alta/baja determinar... brote, número de repeticiones de sonidos bien. ¿Color demasiado?
se repite el uint16_t = 2; Inicializa en dos >> sólo arrojar número de llamada a la función!
PUNTERO de dedo---> girar a la derecha
300-400 lo 890 950 Hola
Si ((SV1 < = 950) & & (SV1 > = 650))
eligió 650 desde su alrededor de la mitad de mi "bajo high-end" y más "bajas" las lecturas.
{
Right_then (de la tira. Color(250,140,0),4,Middle,Right); puede cambiar aquí de color RGB
}
Si ((SV1 < = 649) & & (SV1 > = 0))
{Right_then (de la tira. Color(250,0,0),8,Middle,Right); }
DEDO medio---> girar a la izquierda
650-700 lo 900-1015 Hola
Si ((SV2 < = 950) & & (SV2 > = 775))
{Left_I_go (de la tira. Color(250,140,0), 4, centro, izquierda); }
Si ((SV2 < = 774) & & (SV2 > = 0))
{Left_I_go (de la tira. Color(250,0,0), 8, centro, izquierda); }
DEDO anular---> blink lindo
min promedio máximo promedio de 650-700 1000
Si ((SV3 < = 950) & & (SV3 > = 840))
{Notice_me_Cute (de la tira. Color(0,0,150), 3, izquierda, centro, derecha); azul}
Si ((SV3 < = 839) & & (SV3 > = 0)) //not diferencia == menor exactitud == yo estoy manteniendo las repeticiones cortas para vueltas pueden ser señaladas
{Notice_me_Cute (de la tira. Color(127,255,0), 5, izquierda, centro, derecha); verde lima}
PINKY---> meh
min 530 máximo 1024 - avg Hola 950 avg lo 650ish 650 + (950-650) / 2 = valor medio elegir
Si ((SV4 < = 960) & & (SV4 > = 800))
{dualFade (dejado, derecho);}
Si ((SV4 < = 799) & & (SV4 > = 0))
{dualFade2 (dejado, derecho);}
/********************************************************************
* blink defecto *
********************************************************************
/ más adelante, puede tratar de hacer el "lindo" por tener un contador genérico, diciendo: contador ++; cada lazo,
y usar un % 8 para ser difícil de hacer otro cambio de variable entre 1-7
¿.. .y cambiar entre + y -? puede ser que necesite una tercera variable existentes en la «si 8% == 0" para %2 con y un if anidado declaración sobre +-
'aviso me'
para (int i = izquierda; i > = derecha; i ++)
{//strip.setPixelColor(pixel#,(R,G,B) definida en función de la alimentación)
strip.setPixelColor(i,255,215,0); color "oro"
Strip.Show();
}
Delay(300);
poner fuera de los soportes para tratar de tener luces encender "a la vez" estancia entonces un poco
ahora lo apague
para (int i = derecha; i > = izquierda; i--)
{/ / strip.setPixelColor(pixel#,R,G,B);
strip.setPixelColor(i,0,0,0);
Strip.Show();
}
Delay(300);
retardo entre lecturas parpadeando para estabilidad (era de 75 para la impresión de la serie).
> <> <> <> <> <
}
/********************************************************************
* FINAL de función principal *
********************************************************************
********************************************************************
* *
* SENSOR FUNCIONA!!!!!! *
* *
* Me encanta llamar a funciones, su modo... LIMPIAR!!!!!! *
* *
* Necesario: blink mitad izquierda (píxeles 1-8... o es eso 0-7?) *
* parpadear mitad derecha (8-15 píxeles... o 7-14) *
* "Note me" parpadea (arco iris, seguro) *
para la diversión: paño del arco iris *
*********************************************************************
* es mi LED dirigida
[1] [2 [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15]
¿o [0] [1] [2 [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14]?
Cambiará mi iteraciones internas for() *
********************************************************************
* parpadear izquierda *
********************************************************************/
void Left_I_go (color de uint32_t, repeticiones uint16_t, int medio, int izquierda)
basado en colorWipe en strandtest. Aquí es cómo se llamaba el "c de uint32_t" en 'main()' 50 era la "espera"!
/ * colorWipe (de la tira. Color(255, 0, 0), 50); Rojo
colorWipe (de la tira. Color(0, 255, 0), 50); / / verde
colorWipe (de la tira. Color(0, 0, 255), 50); / / azul * /
de la tira. Color(_,_,_),Repeats,Middle,Left)
{//variables
espera de uint8_t = 20;
uint16_t i;
uint16_t z; 'z' es diferente 'i'
Quiero a parpadear un par de veces, así que haciendo un anidados para lazo
para (z = 0; z < = repeticiones; z ++)
{para (i = centro; i > = izquierda; i--)
{
strip.setPixelColor(i,color);
Strip.Show();
Delay(Wait); }
otro retraso para mantenerlos un poco
Delay(100);
ahora lo apague
> <> <
para (i = centro; i > = izquierda; i--)
{/ / strip.setPixelColor(pixel#,R,G,B);
strip.setPixelColor(i,0,0,0);
Strip.Show();
}
Delay(100);
> <> <
}
}
/********************************************************************
* parpadear derecho *
********************************************************************/
void Right_then (color de uint32_t uint16_t repeticiones, int medio, derecho int
) {/ / tira. Color(_,_,_),Repeats,Middle,Right)
variables
espera de uint8_t = 20; hacer corto
uint16_t i;
uint16_t z;
Quiero a parpadear un par de veces, así que haciendo un anidados para lazo
para (z = 0; z < = repeticiones; z ++)
{para (i = centro; i < = derecha; i ++)
{
strip.setPixelColor(i,color);
Strip.Show();
Delay(Wait);
}
otro retraso para mantenerlos un poco
Delay(100);
ahora lo apague
> <> <
para (i = medio; i < = derecha; i ++) //note cómo he hojeado > a < y--++
{
strip.setPixelColor(i,0,0,0);
Strip.Show();
}
Delay(100); }
}
/********************************************************************
* lindo chocando blink *
********************************************************************/
HM. tal vez hay una manera, Umm... palabra. ¿que el valor predeterminado parpadee parte del void loop(), como poner antes de cualquier sensor verifica, debe ser rápido, derecho? puede Agregar un retraso. ¡ sí! Sólo haré esta una linda versión lujo, dos luces bounching de unos a otros en el medio y de los extremos...
void Notice_me_Cute (color de uint32_t, repeticiones uint16_t, int izquierda, int medio, derecho int)
{/ / tira. Color(_,_,_),Repeats,Left,Middle,Right)
strip.setPixelColor(pixel#,R,G,B);
variables
espera de uint8_t = 50; un poco más lento que el 20 por el giro
uint16_t i;
uint16_t z;
para (z = 0; z < = repeticiones; z ++)
{
en y luz media
strip.setPixelColor(middle,color);
Strip.Show();
Delay(Wait);
strip.setPixelColor(middle,0,0,0);
Strip.Show();
ahora para la fractura
para (i = 1; i
{
strip.setPixelColor(middle-i,color); va a la izquierda del centro de
strip.setPixelColor(middle+i,color); va desde centro
Strip.Show(); ¿muestran juntos?
Delay(Wait);
desde 'uno a uno' necesidad de apagar luces de interior para el lazo
strip.setPixelColor(middle-i,0,0,0);
strip.setPixelColor(middle+i,0,0,0);
Strip.Show();
}
ahora a volver a subir a la mitad
comprobación de entrada de sensor unos aquí sería sabio si lo quiero repetir mucho... pero no sé si es posible y cómo
para (i = 1; i; i--) //did (media-1) ya que no quiero los bordes parpadea dos veces, son golpe una vez cuando el resto se han ido dos veces en un ciclo.
{
strip.setPixelColor(middle-i,color); Esto debe ir a la derecha de la izquierda
strip.setPixelColor(middle+i,color); y esta a la izquierda de la derecha
Strip.Show();
Delay(Wait);
strip.setPixelColor(middle-i,0,0,0);
strip.setPixelColor(middle+i,0,0,0);
Strip.Show(); }
}
}
/********************************************************************
* dualFade (meh!) *
4 º opción sería cool poner sonido o cualquier otra cosa en su lugar.
********************************************************************
/ algo para lanzar en el meñique, ya que no puedo conseguir el arco iris funciona en el strandtest a trabajar.
void dualFade (int izquierda, int derecha)
{
para (int i = 0; i < 255; i = i + 1)
{
para (int k = izquierda; k < = derecha; k ++)
{
int dividir = k 2 %;
Si (dividir == 0)
strip.setPixelColor (k, i, 0, 255-i);
otra cosa
strip.setPixelColor (k, 0, i, 255-i);
Delay(10);
Strip.Show(); }
}
}
/********************************************************************
* meh 2 *
********************************************************************
/ void dualFade2 (int izquierda, int derecha)
{para (int i = 0; i < 255; i = i + 1) {}
para (int k = izquierda; k < = derecha; k ++)
{int dividir = k 2 %;
Si (dividir == 0)
strip.setPixelColor (k, i, 255-i, 0);
otra cosa
strip.setPixelColor (k, 0, 255-i, i);
Delay(10);
Strip.Show();
}
}
}