Paso 7: La luz buscando Arduino Sketch
El siguiente código incorpora el sketch de Arduino para buscar una luz brillante con un motor paso a paso.
/*
Control de Motor paso a paso - caza para encontrar una fuente de luz fuerte este programa impulsa un motor de pasos unipolar o bipolar. El motor se une a los pines digitales 8-11 de Arduino. El motor debe girar una vuelta en una dirección, entonces una revolución en la otra dirección. Creado por Scott Turnbull 30 de octubre de 2014 * /
#include
const int stepsPerRevolution = 72; cambiar esto para ajustar el número de pasos por revolución / / para tu motor
inicializar la biblioteca paso a paso sobre los pasadores del 8 al 11:
Paso a paso myStepper (stepsPerRevolution, 8,11,12,13);
int sensorPin = A4; Seleccione la entrada de pin para el fotoresistor
int sensorPin2 = A5; Seleccione la entrada de pin para 2 º fotoresistor
int sensorValue = 0; variable valor entrada luz
int sensorValue2 = 0; valor de entrada variable para luz 2
int sensecalibrate = 0; un valor para calibrar valores del sensor combinado
int sensorValue_old = 0; anterior valor de sensor
int stepvalue = 2; valor de paso para mover
int stepbump = stepvalue; valor (con signo) para mover cada actualización
int stepmax = stepsPerRevolution/4; Cómo ahora barrer a un lado
int steptally = 0; mantener la cuenta de pasos desde posición inicial
void setup() {}
ajustar la velocidad a 5 rpm:
myStepper.setSpeed(5); inicializar el puerto serie:
Serial.Begin(9600);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
sensorValue = analogRead(sensorPin);
sensorValue2 = analogRead(sensorPin2);
sensecalibrate = sensorValue - sensorValue2;
}
void loop() {/ / lee el valor del sensor:
sensorValue = analogRead(sensorPin);
sensorValue2 = analogRead (sensorPin2) + sensecalibrate;
Serial.Print ("Sensor valor:");
Serial.Print(sensorValue);
Serial.Print ("valor del Sensor 2:");
Serial.println(sensorValue2); Serial.Print ("paso cuenta:"); Serial.println(steptally);
Si la luz es más fuerte, sigue avanzando en esa dirección
Si (sensorValue > sensorValue2) {}
Si (abs(steptally+stepvalue) < stepmax) {}
myStepper.step(stepvalue);
steptally = steptally + stepvalue;
} else {}
myStepper.step(-10);
steptally = steptally -10;
}
} else {}
Si la luz es dimmer, interruptor de dirección y doble vuelta
stepbump = 0-stepvalue;
Si (abs(steptally+stepbump) < stepmax) {}
myStepper.step(stepbump);
steptally = steptally + stepbump;
} else {}
myStepper.step(10);
steptally = steptally + 10;
}
}
Delay(400);
}