Stap 4: Code
De code is gebaseerd op een paar van if-voorwaarden. De code leest de waarde van de drukknop (ingedrukt of niet), en de gemeten druk van de sensor. De eerste als-voorwaarde wordt gecontroleerd als de knop wordt ingedrukt of niet. Als de drager heeft het ingedrukt, zal onmiddellijk de LED rood licht uitstralen en in deze toestand blijven, totdat de drager op de knop opnieuw. In de anders-voorwaarde controleert de code de waarde van de gecensureerde druk. Boven de drempel (in ons geval 500), zal de LED veranderen naar rood. Onder de drempel blijft groen. Deze kleuren zijn gekozen zoals ze best daarom erkend zijn als de kleuren voor 'stop' en 'Ga' respectievelijk. De piëzo-sensor is gevoelig en gaat wat testen om te ontdekken de geschikte drempel. In de meeste tutorials deze sensor vereist de weerstand van een 1MOhm, maar omdat in onze schakeling we een ander één op de drukknop hebben aangesloten, het zeer beïnvloed de waarden.
Voor de NeoPixel zal u moeten installeren de NeoPixel library aan uw bibliotheek van de Arduino. U vindt het hier. Wij gebruikt om onze code in het voorbeeld strandtest en meer in het bijzonder de colorWipe-deel van de code.
Voor de drukknop gebruikten we de drukknop-voorbeeld 3C uit aan de slag met Arduino door Massimo Banzi.
Voor de piëzo-sensor zijn er ook verschillende tutorials online. U moet controleren welke dient uw doel het beste. Voor deze tutorial is het gewoon het lezen van de waarde.
Hier is onze code op basis van de voorbeelden gevonden elders:
#include
#define PIN 9
Parameter 1 = aantal pixels in strip
Parameter 2 = Arduino pin nummer (de meeste zijn geldig)
Parameter 3 = pixel type vlaggen, wens samen toevoegen:
NEO_KHZ800 800 KHz bitstream (de meeste NeoPixel producten w/WS2812 LEDs)
NEO_GRB Pixels zijn bedraad voor GRB bitstream (de meeste NeoPixel produkten)
Adafruit_NeoPixel strip = Adafruit_NeoPixel (60, PIN, NEO_GRB + NEO_KHZ800);
Deze constanten niet gewijzigd:
Const int piezo = A0;
Const int buttonPin = 2; het nummer van de drukknop pin
Variabelen zal veranderen:
int buttonState = 0; huidige toestand van de knop
int old_ButtonState = 0;
int status = 0; 0 = groen en 1 = rood
VOID Setup {}
Serial.begin(9600);
pinMode (buttonPin, INPUT);
strip.begin();
strip.show(); Initialiseren van alle pixels op 'off'
}
void loop {/
/ Lees de stand van de drukknop waarde:
buttonState = digitalRead(buttonPin);
int piezoVal = analogRead(piezo);
Serial.println(piezoVal);
Controleer als de drukknop ingedrukt is.
Als ((buttonState == HIGH) & & (old_ButtonState == LOW)) {}
staat = 1 - staat;
delay(10);
}
old_ButtonState = buttonState;
Als (staat == 1) {}
colorWipe (strip. Color(255, 0, 0), 50); ROOD
} else {}
Als (piezoVal < = 500) {}
colorWipe (strip. Color(0, 255, 0), 50); GROEN
} else {}
colorWipe (strip. Color(255, 0, 255), 50); ROOD
}
}
wacht 2 milliseconden voordat de next-lus
voor de analoog / digitaal-converter te regelen
na de laatste lezing:
delay(2);
}
De puntjes een na de andere te vullen met een kleur
Dit deel is vereist voor de NeoPixel, net omvatten het
VOID colorWipe (uint32_t c, uint8_t wachten) {}
voor (uint16_t i = 0; ik < strip.numPixels(); i ++) {}
strip.setPixelColor (i, c);
strip.show();
delay(wait);
}
}