Adresserbara LED Neopixel växten (4 / 6 steg)
Steg 4: Min kod
Se till att spara och ladda upp vilken kod som du använder till arduino först.
Om min fil längst ner inte fungerar här är det:
[code]
/ * HC-SR04 Sensor (ultraljud)
https://www.DealExtreme.com/p/HC-sr04-Ultrasonic-...
Denna skiss läser en HC-SR04 ultraljud avståndsmätare och returnerar avståndet till närmaste objektet i intervallet. Det gör det skickar en puls till sensorn att inleda en behandling, då lyssnar efter en puls att återvända. Längden på den återkommande pulsen är proportionell mot avståndet av objektet från sensorn.
Krets:
* VCC anslutning av sensor kopplad till + 5V
* GND anslutning av sensor kopplad till marken
* TRIG anslutning av sensor kopplad till digital stift 2
* EKO anslutning av sensor kopplad till digital stift 4
Ursprungliga koden för Ping))) exempel skapades av David A. Mellis anpassad för HC-SR04 av Tautvidas Sipavicius detta exempelkoden är i public domain. */
CONST int trigPin = 2;
CONST int echoPin = 4;
Lysdioder #include "FastLED.h"
Hur många lysdioder i ditt band?
#define NUM_LEDS 60
För led marker som Neopixels, som har en datalinje, marken och makten, du bara / / måste definiera DATA_PIN. För led chipset som är SPI baserat (fyra ledningar - data, klocka, / / marken, och driva), liksom LPD8806 definiera både DATA_PIN och CLOCK_PIN
#define DATA_PIN 3
#define CLOCK_PIN 13
Definiera matrisen med lysdioder CRGB lysdioder [NUM_LEDS];
void setup() {
FastLED.addLeds (lysdioder, NUM_LEDS);
Ultrasonic sensor
initiera seriell kommunikation:
Serial.BEGIN(9600); }
void loop() {
Ultrasonic sensor
fastställa variabler för varaktigheten av ping,
och avstånd resultatet i tum och centimeter: lång varaktighet, tum, cm;
Sensorn utlöses av en hög puls av 10 eller fler mikrosekunder.
Ge en kort låg puls förhand för att säkerställa en ren hög puls:
pinMode (trigPin, produktionen);
digitalWrite (trigPin, låg);
delayMicroseconds(2);
digitalWrite (trigPin, hög);
delayMicroseconds(10);
digitalWrite (trigPin, låg);
Läs signalen från sensorn: en hög puls vars
varaktigheten är tid (i mikrosekunder) från den sändande
ping till mottagning av dess eko av ett objekt.
pinMode (echoPin, ingång);
längd = pulseIn (echoPin, hög);
konvertera tiden till ett avstånd
tum = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.Print(inches);
Serial.Print ("in");
Serial.Print(cm);
Serial.Print("cm");
Serial.println();
Delay(100);
Lysdioder
Aktivera LED, sedan pausa
om (cm < = 60) {
för (int jag = 0; jag < 60; i ++) {
lysdioder [i] = CRGB::Red;
FastLED.show();
Delay(50);
Nu stänga av lampan, sedan pausa
lysdioder [i] = CRGB::Black;
FastLED.show(); Delay(50);
} }
annars om (cm > 60 & & cm < = 200) {
Aktivera LED, sedan pausa
för (int jag = 0; jag < 60; i ++) {
lysdioder [i] = CRGB::Red;
FastLED.show();
Delay(100);
} }
annat {
för (int jag = 0; jag < 60; i ++) {
Nu stänga av lampan, sedan pausa
lysdioder [i] = CRGB::Black;
FastLED.show();
Delay(100);
} }
}
lång microsecondsToInches(long microseconds) {
Enligt Parallaxs datablad för PING))), det finns
73.746 mikrosekunder per tum (dvs. ljud resor på 1130 fot per
det andra). Detta ger vägsträcka som ping, utgående
och tillbaka, så vi delar med 2 att få distansera av hindret.
Se: http://www.parallax.com/dl/docs/prod/acc/28015-PI...
återvända mikrosekunder / 74 / 2; }
lång microsecondsToCentimeters(long microseconds) {
Ljudets hastighet är 340 m/s eller 29 mikrosekunder per centimeter.
Ping reser ut och tillbaka, så för att hitta distansera av den
objekt vi tar hälften av den tillryggalagda.
återvända mikrosekunder / 29 / 2; }
[/code]