Paso 8: Código de Arduino
Se trata, nuevos sensores de cableado en el arduino es la mejor manera de hacer esta capa su propia. Ser creativo. Utilice el siguiente código muestra como punto y ser creativo a partir de ahí. Háganoslo saber en los comentarios lo que aparejó su capa para detectar!
====================
El código de
====================
bibliotecas incluidas
#include < Wire.h >
#include < ADXL345.h >
#include < NewPing.h >
Sensor sonar
#define TRIGGER_PIN 11 / / pin Arduino atado para activar el pin en el sensor de ultrasonidos.
#define ECHO_PIN 10 / / atado de Arduino pin a pin en el sensor ultrasónico del eco.
#define MAX_DISTANCE 200 / / distancia máxima queremos ping para (en centímetros). Distancia máxima del sensor está valorada en 400-500cm.
Sonar de NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); NewPing instalación de pernos y distancia máxima.
int potencia = 0;
int distancia = 0;
sensor de micrófono
int micPin = A3; Seleccione la entrada de pin para el potenciómetro
Accel + accelRainbow + arco iris
doble val = 0.0;
doble valAdjustAccel = 0.0;
doble highvalAccel = 0.0;
doble maxVal = 0.0;
doble azul, verde, rojo;
doble timecounter = 0;
tc doble = 200;
ADXL345 adxl; adxl variable es una instancia de la biblioteca ADXL345
LEDs PWM
int rojo = 5;
blueLED int = 6;
greenLED int = 3;
botones
redButton int = 7;
int greenButton = 4;
blueButton int = 2;
int rainbowButton = 0;
Botón de int = 8;
int distanceButton = 9;
int micButton = 12;
int accelButton = 13;
otros
int contador = 0;
modos de
int modo = 0; 0 = apagado, 1 = rojo, 2 = azul, 3 = verde, 4 = púrpura, 5 = verde azulado, 6 = amarillo, 7 = blanco, 8 = arco iris
9 = accel azul, 10 = accel verde, 11 = accel rojo, 18 = arco iris accel
12 = micrófono verde, 13 = micrófono azul, 14 = mic rojo
15 = distancia rojo, 16 = distancia azul, 17 = distancia verde
micrófono
int sensorValue = 0; variable para almacenar el valor que viene desde el sensor
doble valAdjustMic = 0.0;
doble highvalMic = 0.0;
void setup() {}
Serial.Begin(115200); Open monitor serie a 115200 baudios
pinMode (rojo, salida);
pinMode (blueLED, salida);
pinMode (greenLED, salida);
pinMode (redButton, entrada);
pinMode (greenButton, entrada);
pinMode (blueButton, entrada);
pinMode (rainbowButton, entrada);
pinMode (botón, entrada);
pinMode (distanceButton, entrada);
pinMode (micButton, entrada);
pinMode (accelButton, entrada);
adxl.powerOn();
}
void loop() {}
readColorButtons();
readAccelButton();
readMicButton();
readDistanceButton();
readOffButton();
modos: 0 = apagado, 1 = rojo, 2 = azul, 3 = verde, 4 = púrpura, 5 = verde azulado, 6 = amarillo, 7 = blanco, 8 = arco iris
9 = accel azul, 10 = accel verde, 11 = accel rojo, 18 = arco iris accel
12 = micrófono verde, 13 = micrófono azul, 14 = mic rojo
15 = distancia rojo, 16 = distancia azul, 17 = distancia verde
Si (modo == 0) / / off
{
digitalWrite (rojo, baja);
digitalWrite (greenLED, LOW);
digitalWrite (blueLED, LOW);
}
Si (modo == 1) //red
{
digitalWrite (rojo, alto);
digitalWrite (greenLED, LOW);
digitalWrite (blueLED, LOW);
}
Si (modo == 2) //blue
{
digitalWrite (rojo, baja);
digitalWrite (greenLED, LOW);
digitalWrite (blueLED, HIGH);
}
Si (modo == 3) / / verde
{
digitalWrite (rojo, baja);
digitalWrite (greenLED, HIGH);
digitalWrite (blueLED, LOW);
}
Si (modo == 4) / / púrpura
{
digitalWrite (rojo, alto);
digitalWrite (greenLED, LOW);
analogWrite (blueLED, 50);
}
Si (modo == 5) / / teal
{
digitalWrite (rojo, baja);
digitalWrite (greenLED, HIGH);
analogWrite (blueLED, 50);
}
Si (modo == 6) / / amarillo
{
digitalWrite (rojo, alto);
digitalWrite (greenLED, HIGH);
digitalWrite (blueLED, LOW);
}
Si (modo == 7) / / blanco
{
digitalWrite (rojo, alto);
digitalWrite (greenLED, HIGH);
digitalWrite (blueLED, HIGH);
}
Si (modo == 8) / / arco iris
{
Rainbow();
}
Si (modo == 9 || modo == 10 || modo == 11) / / accel azul, verde, rojo
{
Accel();
}
Si (modo == 12 || modo == 13 || modo == 14) / / micrófono verde, azul, rojo
{
MIC();
}
Si (modo == 15 || modo == 16 || modo == 17) / distancia rojo, azul, verde
{
distanceSensor();
}
Si (modo == 18) / / arco iris accel
{
accelRainbow();
}
}
void mic() {}
leer el valor del sensor:
sensorValue = analogRead(micPin);
Serial.println(highvalMic);
valAdjustMic = sensorValue-390;
Si (valAdjustMic > highvalMic)
{
highvalMic = valAdjustMic;
}
otra cosa
{
highvalMic = highvalMic*.90;
}
Si (highvalMic > maxVal)
// {
maxVal = highvalMic;
// }
if(highvalMic < 100)
{
highvalMic = 0;
}
Si (modo == 14)
{
analogWrite(greenLED,highvalMic);
digitalWrite (blueLED, LOW);
digitalWrite (rojo, baja);
}
Si (modo == 13)
{
analogWrite(blueLED,highvalMic);
digitalWrite (rojo, baja);
digitalWrite (greenLED, LOW);
}
Si (modo == 12)
{
analogWrite(redLED,highvalMic);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, LOW);
}
Delay(1);
}
void distanceSensor() {}
Delay(50); Esperar 50ms entre pings (pings alrededor de 20 por segundo). 29ms debería ser el retraso más corto entre pings.
unsigned int nos = sonar.ping(); Enviar ping, ping tiempo en microsegundos (uS).
distancia = uS / US_ROUNDTRIP_CM;
Serial.Print ("Ping:");
Serial.Print(US / US_ROUNDTRIP_CM); Convertir el tiempo de ping a distancia en cm y el resultado de la impresión (0 = distancia fija fuera de rango)
Serial.println("cm");
Si (distancia > 29 & & distancia < 131)
{
potencia = (distancia - 30) * 2.55;
}
Si (distancia < 30 || distancia > 150)
{
potencia = 0;
}
Si (distancia > 130)
{
potencia = 255;
}
Si (modo == 17)
{
analogWrite(greenLED,power);
digitalWrite (blueLED, LOW);
digitalWrite (rojo, baja);
}
Si (modo == 16)
{
analogWrite(blueLED,power);
digitalWrite (greenLED, LOW);
digitalWrite (rojo, baja);
}
Si (modo == 15)
{
analogWrite(redLED,power);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, LOW);
}
}
void accel() {}
Aburrido cosas de acelerómetro
int x, y, z;
adxl.readAccel (& x & y y z); leer los valores de acelerómetro y almacenarlos en las variables x, y, z
doble dx, dy, dz;
DX = abs (doble) (x) / 100;
DY = abs (doble) (y) / 100;
DZ = abs (doble) (z) / 100;
Val = sqrt((dx*dx)+(dy*dy)+(dz*dz));
Val = sqrt((x*x)+(y*y)+(z*z));
Salida de x, y, valores z - comentados
Serial.Print(Val);
valAdjustAccel = val-3;
Si (valAdjustAccel > highvalAccel)
{
highvalAccel = valAdjustAccel;
}
otra cosa
{
highvalAccel = highvalAccel*.83;
}
Si (highvalAccel > maxVal)
// {
maxVal = highvalAccel;
// }
Si (highvalAccel * 57 < 4)
{
highvalAccel = 4/57;
}
Si (modo == 10)
{
azul = 1;
rojo = 0;
verde = 0;
}
Si (modo == 9)
{
azul = 0;
rojo = 0;
verde = 1;
}
Si (modo == 11)
{
azul = 0;
rojo = 1;
verde = 0;
}
analogWrite(blueLED,highvalAccel*57*blue);
analogWrite(greenLED,highvalAccel*57*green);
analogWrite(redLED,highvalAccel*57*red);
Delay(30);
}
void accelRainbow() {}
Aburrido cosas de acelerómetro
int x, y, z;
adxl.readAccel (& x & y y z); leer los valores de acelerómetro y almacenarlos en las variables x, y, z
doble dx, dy, dz;
DX = abs (doble) (x) / 100;
DY = abs (doble) (y) / 100;
DZ = abs (doble) (z) / 100;
Val = sqrt((dx*dx)+(dy*dy)+(dz*dz));
Val = sqrt((x*x)+(y*y)+(z*z));
Salida de x, y, valores z - comentados
Serial.Print(Val);
valAdjustAccel = val-3;
Si (valAdjustAccel > highvalAccel)
{
highvalAccel = valAdjustAccel;
}
otra cosa
{
highvalAccel = highvalAccel*.83;
}
Si (highvalAccel > maxVal)
// {
maxVal = highvalAccel;
// }
Si (highvalAccel * 57 < 4)
{
highvalAccel = 4/57;
}
analogWrite(blueLED,highvalAccel*57*blue);
analogWrite(greenLED,highvalAccel*57*green);
analogWrite(redLED,highvalAccel*57*red);
Delay(30);
timecounter = timecounter + 30;
Si (timecounter < tc)
{
rojo = 1;
azul = 0 + (timecounter) /tc;
}
Si (timecounter > 2 * tc & & timecounter < 3 * tc)
{
rojo = 1 - (timecounter-2 * tc) /tc;
}
Si (timecounter > 4 * tc & & timecounter < 5 * tc)
{
verde = 0 + (timecounter-4 * tc) /tc;
}
Si (timecounter > 6 * tc & & timecounter < 7 * tc)
{
azul = 1 - (timecounter-6 * tc) /tc;
}
Si (timecounter > 8 * tc & & timecounter < 9 * tc)
{
rojo = 0 + (timecounter-8 * tc) /tc;
}
Si (timecounter > 10 * tc & & timecounter < 11 * tc)
{
verde = 1-(timecounter-10 * tc) /tc;
}
Si (timecounter > 12 * tc)
{
timecounter = 0;
}
Serial.Print(red);
Serial.Print("");
Serial.Print(Blue);
Serial.Print("");
Serial.Print(Green);
Serial.Print("");
Serial.println(timecounter);
}
void rainbow() {}
analogWrite(blueLED,255*blue);
analogWrite(greenLED,255*green);
analogWrite(redLED,255*red);
Delay(30);
timecounter = timecounter + 30;
Si (timecounter < tc)
{
rojo = 1;
azul = 0 + (timecounter) /tc;
}
Si (timecounter > 2 * tc & & timecounter < 3 * tc)
{
rojo = 1 - (timecounter-2 * tc) /tc;
}
Si (timecounter > 4 * tc & & timecounter < 5 * tc)
{
verde = 0 + (timecounter-4 * tc) /tc;
}
Si (timecounter > 6 * tc & & timecounter < 7 * tc)
{
azul = 1 - (timecounter-6 * tc) /tc;
}
Si (timecounter > 8 * tc & & timecounter < 9 * tc)
{
rojo = 0 + (timecounter-8 * tc) /tc;
}
Si (timecounter > 10 * tc & & timecounter < 11 * tc)
{
verde = 1-(timecounter-10 * tc) /tc;
}
Si (timecounter > 12 * tc)
{
timecounter = 0;
}
Serial.Print(red);
Serial.Print("");
Serial.Print(Blue);
Serial.Print("");
Serial.Print(Green);
Serial.Print("");
Serial.println(timecounter);
}
void readColorButtons() {}
Si (digitalRead (redButton) == alto & & digitalRead (greenButton) == LOW & & digitalRead(blueButton)==LOW)
{
modo = 1; rojo
Contador = 0;
}
Si (digitalRead (redButton) == LOW & & digitalRead (greenButton) == LOW & & digitalRead(blueButton)==HIGH)
{
modo = 2; azul
Contador = 0;
}
Si (digitalRead (redButton) == LOW & & digitalRead (greenButton) == alto & & digitalRead(blueButton)==LOW)
{
Mode = 3; verde
Contador = 0;
}
Si (digitalRead (redButton) == alto & & digitalRead (greenButton) == LOW & & digitalRead(blueButton)==HIGH)
{
modo = 4; púrpura
digitalWrite (rojo, alto);
digitalWrite (greenLED, LOW);
analogWrite (blueLED, 50);
Delay (250);
Contador = 0;
}
Si (digitalRead (redButton) == LOW & & digitalRead (greenButton) == alto & & digitalRead(blueButton)==HIGH)
{
modo = 5; Teal
digitalWrite (rojo, baja);
digitalWrite (greenLED, HIGH);
analogWrite (blueLED, 50);
Delay (250);
Contador = 0;
}
Si (digitalRead (redButton) == alto & & digitalRead (greenButton) == alto & & digitalRead(blueButton)==LOW)
{
modo = 6; amarillo
digitalWrite (rojo, alto);
digitalWrite (greenLED, HIGH);
digitalWrite (blueLED, LOW);
Delay(250);
Contador = 0;
}
Si (digitalRead (redButton) == alto & & digitalRead (greenButton) == alto & & digitalRead(blueButton)==HIGH)
{
modo = 8; arco iris
digitalWrite(redLED,LOW);
digitalWrite(blueLED,LOW);
digitalWrite(greenLED,LOW);
Delay (250);
contador = contador + 250;
}
Si (contador == 1500)
// {
modo = 8; colores del arco iris
digitalWrite (rojo, baja);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, LOW);
Delay (500);
Contador = 0;
// }
Si (contador == 3000);
// {
modo = 0;
digitalWrite (rojo, baja);
digitalWrite (blueLED, HIGH);
digitalWrite (greenLED, LOW);
Delay(500);
digitalWrite (rojo, baja);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, alta;
Delay(500);
digitalWrite (rojo, alto);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, LOW);
Delay(500);
digitalWrite (rojo, baja);
digitalWrite (blueLED, LOW);
digitalWrite (greenLED, LOW);
Contador = 0;
// }
//
}
void readAccelButton() {}
Si (digitalRead(accelButton)) / / 9 = accel azul, 10 = accel verde, 11 = accel rojo, 18 = arco iris accel
{
Si (modo == 9) / / ya accel azul
{
modo = 10; hacer accel verde
Delay(500);
}
else if (modo == 10) / / ya accel verde
{
modo = 11; hacer accel rojo
Delay(500);
}
else if (modo == 11) / / ya accel rojo
{
modo = 18; hacer arco iris accel
Delay(500);
}
else if (modo == 18) / / ya accel arco iris
{
modo = 9; hacer accel azul
Delay(500);
}
otra cosa
{
modo = 9; hacer accel azul
Delay(500);
}
}
}
void readMicButton() {}
Si (digitalRead(micButton)) / / 12 = micrófono verde, 13 = micrófono azul, 14 = mic rojo
{
Si (modo == 12) / / ya micro verde
{
modo = 13; hacer micro azul
Delay(500);
}
else if (modo == 13) / / ya micro azul
{
modo = 14; hacer micro rojo
Delay(500);
}
else if (modo == 14) / / ya mic rojo
{
modo = 12; hacer micro verde
Delay(500);
}
otra cosa
{
modo = 12; hacer micro verde
Delay(500);
}
}
}
void readDistanceButton() {}
Si (digitalRead(distanceButton)) / / 15 = distancia rojo, 16 = distancia azul, 17 = distancia verde
{
Si (modo == 15) / / ya distancia rojo
{
modo = 16; que distancia azul
Delay(500);
}
else if (modo == 16) / / ya distancia azul
{
modo = 17; que distancia verde
Delay(500);
}
else if (modo == 17) / / ya distancia verde
{
modo = 15; que distancia rojo
Delay(500);
}
otra cosa
{
modo = 15; que distancia rojo
Delay(500);
}
}
}
void readOffButton() {}
Si (digitalRead(offButton))
{
modo = 0;
}
}