Närhet aktiverat Kinetic Skulptur (6 / 7 steg)
Steg 6: Arduino kod
#define echoPin 6 / / Detta är echo pin
#define triggerPin 7 / / detta är trigger pin
#include
int RPM = 120; Upprättar varv - Per - minut av Motor
int upptäckt = 15. Definierar avståndet då motorn kommer att aktivera
int stride = 50; Anger antalet steg Stepper Motor kommer att ta
CONST int stepsPerRevolution = 200. Antalet steg som krävs för motorns axel att göra en fullständig revolution.
int jag = 0; index för att befolka Array Data
int j = 1; index för att skifta av datavärden och beräkna löpande genomsnittlig
int dataset = 10; Längden på löpande data array
int gräns =(dataset-1); kompensera för indexering
int Full = 0; Används för att upprätta bearbetning lägen.
för din motor
initiera stepper biblioteket på stift 8 till 11:
Stepper myStepper (stepsPerRevolution, 8, 11, 12, 13); Förekomst av Stepper klass
int DataCollection [10] = {0,0,0,0,0,0,0,0,0,0}. Tom Data Array där värden kommer att samlas in
void setup() {
MOTOR
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
NÄRHETEN SENSOREN
Serial.BEGIN (115200); //start seriell kommunikation
pinMode (echoPin, ingång);
pinMode (triggerPin, produktionen);
}
void loop() {
NÄRHETEN SENSOREN
digitalWrite (triggerPin, hög); göra en 10usec puls
delayMicroseconds(10); GÖR inte ändra detta, för att hålla takt med vilken data samlas
digitalWrite (triggerPin, låg);
int avstånd = pulseIn(echoPin,HIGH); Insamling av data
avståndet = abs(distance/58); Frekvens omvandlas till enheter för avstånd [cm]
om (Full == 1) {/ / databehandling en gång Data Array är fylld med datapunkter
DataCollection [0] = avstånd; Nya datavärde placeras på den första cellen i matrisen
int Spara= DataCollection [0]; Variabel plats-innehavaren av nya datavärde
för (j = 1; j
int Hold = DataCollection [j];
DataCollection [j] =Spara; Variabel plats-innehavaren av tidigare datavärde
Spara= håll; Överföring av värde mellan plats-innehavaren variabler
}
int summa = 0; Variabel för Computing Data Array genomsnittet
för (j = 0; j < = gräns; j ++) {/ / för Loop för att skapa summan av datavärden
Summa = summa + DataCollection [j];
}
int genomsnittliga = summan/datauppsättning; Beräknar medelvärdet av aktuella Data Array
Serial.Print ("den genomsnittliga avståndet är:"); Visar avläsningar
Serial.Print((Average),dec); / / skicka mätning till seriell övervaka //Displays läsningar
Serial.println ("cm");
om ( genomsnittliga < = upptäckt) {
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
myStepper.setSpeed(RPM);
myStepper.step(stride);
} annat if(Average > Detection) {
digitalWrite(9,LOW);
digitalWrite(10,LOW);
}
}
om (Full == 0) {
DataCollection [i] = avstånd;
i ++;
IF(i==dataset) {
Hela = 1;
}
}
}