Paso 4: código
El código se basa en un par de if-condiciones de uso. El código lee el valor de la tecla (presionado o no) y la presión medida del sensor. La primera condición if comprueba si el botón está presionado o no. Si el usuario ha pulsado, el LED emite luz roja y permanecer en este estado hasta que el usuario presiona el botón otra vez inmediatamente. En la otra condición, el código comprueba el valor de presión censurados. Por encima del umbral (en nuestro caso 500), el LED cambiará a rojo. Debajo del umbral de permanecerá verde. Estos colores fueron elegidos como mejores son reconocidos como los colores de 'stop' y 'go' respectivamente. El sensor piezoeléctrico es sensible e implica algunas pruebas para descubrir el umbral adecuado. En la mayoría de tutoriales este sensor requiere una resistencia de 1MOhm, pero porque en nuestro circuito tenemos otro uno conectado a la tecla, muy afectados los valores.
Para el NeoPixel, necesita instalar la biblioteca de NeoPixel a tu librería de Arduino. Usted puede encontrar aquí. Utilizamos para nuestro código en el ejemplo strandtest y más concretamente la parte colorWipe del código.
Para el pulsador, se utilizó el pulsador-ejemplo 3C de empezar con Arduino por Massimo Banzi.
Para el sensor piezoeléctrico, así hay varios tutoriales en línea. Usted debe comprobar que se sirve su propósito mejor. Para este tutorial simplemente es leyendo el valor.
Aquí está nuestro código basado en los ejemplos que se encuentran en otros lugares:
#include
#define pasador 9
Parámetro 1 = número de píxeles en tira
Parámetro 2 = número de pin del Arduino (la mayoría son válidos)
Parámetro 3 = píxeles tipo banderas, sumar como sea necesario:
NEO_KHZ800 800 KHz bitstream (mayoría NeoPixel productos w/WS2812 LED)
NEO_GRB píxeles están cableados para GRB bitstream (más productos de NeoPixel)
Tira de Adafruit_NeoPixel = Adafruit_NeoPixel (60, PIN, NEO_GRB + NEO_KHZ800);
no va a cambiar este constantes:
const int piezo = A0;
const int buttonPin = 2; el número de pin pulsador
Va a cambiar las variables:
int buttonState = 0; estado actual del botón de
int old_ButtonState = 0;
int estado = 0; 0 = verde y 1 = rojo
void setup() {}
Serial.Begin(9600);
pinMode (buttonPin, entrada);
Strip.Begin();
Strip.Show(); Inicializar todos los píxeles en 'off'
}
void loop() {/
leer el estado del pulsador valor:
buttonState = digitalRead(buttonPin);
int piezoVal = analogRead(piezo);
Serial.println(piezoVal);
comprobar si el pulsador está presionado.
Si ((buttonState == HIGH) & & (old_ButtonState == LOW)) {}
estado = 1 - del estado;
Delay(10);
}
old_ButtonState = buttonState;
Si (estado == 1) {}
colorWipe (de la tira. Color(255, 0, 0), 50); ROJO
} else {}
Si (piezoVal < = 500) {}
colorWipe (de la tira. Color(0, 255, 0), 50); VERDE
} else {}
colorWipe (de la tira. Color(255, 0, 255), 50); ROJO
}
}
esperar 2 milisegundos antes del siguiente bucle
para el convertidor de analógico a digital resolver
después de la última lectura:
Delay(2);
}
Rellenar los puntos uno tras otro con un color
Esta parte es necesaria para la NeoPixel, sólo incluirlo
{} void colorWipe (uint32_t c, uint8_t espera)
para (uint16_t i = 0; i < strip.numPixels(); i ++) {}
strip.setPixelColor (i, c);
Strip.Show();
Delay(Wait);
}
}