Tryck aktiveras kram-detektor (PAD) (4 / 6 steg)
Steg 4: kod
Koden bygger på ett par if-villkor. Koden läser värdet av tryckknappen (pressad eller inte), och det uppmätta trycket från sensorn. Det första if-villkoret kontrolleras om knappen trycks eller inte. Om bäraren har tryckte den, kommer lysdioden omedelbart avge rött ljus och bo i detta tillstånd tills användaren trycker på knappen igen. I annat-villkoret kontrolleras i koden censurerade tryck värdet. Ovanför tröskelvärdet (i vårt fall 500), kommer att LED ändras till rött. Det kommer att stanna grönt under tröskeln. Dessa färger valdes som de är bäst känt som färgerna för "stopp" och "gå" respektive. Piezo-sensor är känsliga och innebär några tester för att upptäcka lämplig tröskeln. I de flesta tutorials denna sensor kräver en 1MOhm motstånd, men eftersom i vår krets har vi en annan en fäste till tryckknappen, det påverkat extremt värdena.
För NeoPixel kommer att du behöva installera NeoPixel biblioteket till Arduino-biblioteket. Du hittar den här. Vi använde för våra kod i strandtest exempel, och mer specifikt den colorWipe-delen av koden.
För tryckknapp använde vi tryckknapp-exempel 3C från komma igång med Arduino av Massimo Banzi.
För Piezo-sensor finns det också flera Självstudiekurser online. Du bör kontrollera som en tjänar ditt syfte bäst. För den här läraren det helt enkelt läsa värdet.
Här är vår kod utifrån de exempel som finns någon annanstans:
#include
#define PIN 9
Parametern 1 = antal pixlar i remsa
Parameter 2 = Arduino pin-kod (de flesta är giltig)
Parameter 3 = pixel typ flaggor, Lägg ihop efter behov:
NEO_KHZ800 800 KHz bitstream (de flesta NeoPixel produkter w/WS2812 lysdioder)
NEO_GRB pixlar är kopplat för GRB bitstream (de flesta NeoPixel produkter)
Adafruit_NeoPixel strip = Adafruit_NeoPixel (60, PIN, NEO_GRB + NEO_KHZ800);
Detta konstanter inte kommer att ändra:
CONST int piezo = A0;
CONST int buttonPin = 2; numrera av tryckknapp PIN-koden
Variabler som ändras:
int buttonState = 0; aktuell status för knappen
int old_ButtonState = 0;
int state = 0; 0 = grönt och 1 = röd
void setup() {
Serial.BEGIN(9600);
pinMode (buttonPin, ingång);
Strip.BEGIN();
Strip.show(); Initiera alla pixlar till "off"
}
void loop() {/
/ Läs staten av tryckknapp värdet:
buttonState = digitalRead(buttonPin);
int piezoVal = analogRead(piezo);
Serial.println(piezoVal);
Kontrollera om tryckknappen trycks.
om ((buttonState == HIGH) & & (old_ButtonState == låg)) {
State = 1 - stat;
Delay(10);
}
old_ButtonState = buttonState;
om (statligt == 1) {
colorWipe (remsa. Color(255, 0, 0), 50); RÖD
} annat {
om (piezoVal < = 500) {
colorWipe (remsa. Color(0, 255, 0), 50); GRÖN
} annat {
colorWipe (remsa. Color(255, 0, 255), 50); RÖD
}
}
vänta 2 millisekunder innan nästa slingan
för analog till digital omvandlare att bosätta sig
efter den sista behandlingen:
Delay(2);
}
Fylla prickar en efter den andra med en färg
Denna del är nödvändiga för NeoPixel, inkludera bara det
void colorWipe (uint32_t c, uint8_t vänta) {
för (uint16_t jag = 0; jag < strip.numPixels(); i ++) {
strip.setPixelColor (i, c);
Strip.show();
Delay(Wait);
}
}