Designproject 2 Code
Designproject 2 Code
pinMode(7, INPUT);
attachInterrupt(digitalPinToInterrupt(2), count, RISING);
Serial.begin(115200);
void loop() {
//beginning of sequence
// 1ST APPROACH at 35mm/s (262.5rpm), stops when switch is pressed; HIGH is CW and
Positive pulses
t = micros();
v_motor = 175; // Change depending on load to reach target
Serial.println(" 1st Approach");
while (digitalRead(10) == HIGH) {
target = 262;
digitalWrite(12, HIGH);
analogWrite(3, v_motor);
current_rpm = getSpeed(100000);
error = (target - current_rpm);
v_motor = v_motor + 0.1 * error;
//print necessary data for the displacement and velocity graphs
Serial.print("Time:");
Serial.print("\t");
Serial.print(micros());
Serial.print("\t\t");
Serial.print("Pulses:");
Serial.print("\t");
Serial.print(pulses);
Serial.print("\t\t");
Serial.print("v_motor:");
Serial.print("\t");
Serial.print(v_motor);
Serial.print("\t\t");
Serial.print("RPM:");
Serial.print("\t");
Serial.println(current_rpm);
delayMicroseconds(3000);
Serial.print("Time:");
Serial.print("\t");
Serial.print(micros());
Serial.print("\t\t");
Serial.print("Pulses:");
Serial.print("\t");
Serial.print(pulses);
Serial.print("\t\t");
Serial.print("v_motor:");
Serial.print("\t");
Serial.print(v_motor);
Serial.print("\t\t");
Serial.print("RPM:");
Serial.print("\t");
Serial.println(current_rpm);
}
// Stops between approaches, gives motor time to complete rotations
digitalWrite(3,0);
delay(700);
Serial.print("Time:");
Serial.print("\t");
Serial.print(micros());
Serial.print("\t\t");
Serial.print("Pulses:");
Serial.print("\t");
Serial.print(pulses);
Serial.print("\t\t");
Serial.print("v_motor:");
Serial.print("\t");
Serial.print(v_motor);
Serial.print("\t\t");
Serial.print("RPM:");
Serial.print("\t");
Serial.println(current_rpm);
Serial.print("Time:");
Serial.print("\t");
Serial.print(micros());
Serial.print("\t\t");
Serial.print("Pulses:");
Serial.print("\t");
Serial.print(pulses);
Serial.print("\t\t");
Serial.print("v_motor:");
Serial.print("\t");
Serial.print(v_motor);
Serial.print("\t\t");
Serial.print("RPM:");
Serial.print("\t");
Serial.println(current_rpm);
void count() {
if (digitalRead(7) == LOW)
pulses++;
else
pulses--;
}