void Heater::init(int inPin, int outPin, bool isThermocoupler) { usesThermocoupler = isThermocoupler; inputPin = inPin; outputPin = outPin; temp_control_enabled = true; #if TEMP_PID temp_iState = 0; temp_dState = 0; temp_pGain = TEMP_PID_PGAIN; temp_iGain = TEMP_PID_IGAIN; temp_dGain = TEMP_PID_DGAIN; temp_pid_update_windup(); #endif current_temperature = 0; target_temperature = 0; max_temperature = 0; }
// Yep, this is actually -*- c++ -*- void init_extruder() { //reset motor1 motor1_control = MC_PWM; motor1_dir = MC_FORWARD; motor1_pwm = 0; motor1_target_rpm = 0; motor1_current_rpm = 0; //reset motor2 motor2_control = MC_PWM; motor2_dir = MC_FORWARD; motor2_pwm = 0; motor2_target_rpm = 0; motor2_current_rpm = 0; //free up 9/10 servo1.detach(); servo2.detach(); //init our PID stuff. speed_error = 0; iState = 0; dState = 0; pGain = SPEED_INITIAL_PGAIN; iGain = SPEED_INITIAL_IGAIN; dGain = SPEED_INITIAL_DGAIN; temp_control_enabled = true; #if TEMP_PID temp_iState = 0; temp_dState = 0; temp_pGain = TEMP_PID_PGAIN; temp_iGain = TEMP_PID_IGAIN; temp_dGain = TEMP_PID_DGAIN; temp_pid_update_windup(); #endif //encoder pins are for reading. pinMode(ENCODER_A_PIN, INPUT); pinMode(ENCODER_B_PIN, INPUT); //pullups on our encoder pins digitalWrite(ENCODER_A_PIN, HIGH); digitalWrite(ENCODER_B_PIN, HIGH); //attach our interrupt handler attachInterrupt(0, read_quadrature, CHANGE); //setup our motor control pins. pinMode(MOTOR_1_SPEED_PIN, OUTPUT); pinMode(MOTOR_2_SPEED_PIN, OUTPUT); pinMode(MOTOR_1_DIR_PIN, OUTPUT); pinMode(MOTOR_2_DIR_PIN, OUTPUT); //turn them off and forward. digitalWrite(MOTOR_1_SPEED_PIN, LOW); digitalWrite(MOTOR_2_SPEED_PIN, LOW); digitalWrite(MOTOR_1_DIR_PIN, HIGH); digitalWrite(MOTOR_2_DIR_PIN, HIGH); //setup our various accessory pins. pinMode(HEATER_PIN, OUTPUT); pinMode(FAN_PIN, OUTPUT); pinMode(VALVE_PIN, OUTPUT); //turn them all off digitalWrite(HEATER_PIN, LOW); digitalWrite(FAN_PIN, LOW); digitalWrite(VALVE_PIN, LOW); //setup our debug pin. pinMode(DEBUG_PIN, OUTPUT); digitalWrite(DEBUG_PIN, LOW); //default to zero. set_temperature(0); setupTimer1Interrupt(); }