#include #include #include #define TX PA6 #define RX PA5 SoftwareSerial Serial(RX, TX); int inA1 = PA0; // input 1 of the stepper int inA2 = PA1; // input 2 of the stepper int inB1 = PA3; // input 3 of the stepper int inB2 = PA4; // input 4 of the stepper int filter=0; int stepDelay = 25; // Delay between steps in milliseconds void setup() { pinMode(inA1, OUTPUT); pinMode(inA2, OUTPUT); pinMode(inB1, OUTPUT); pinMode(inB2, OUTPUT); Serial.begin(9600); } void step1() { digitalWrite(inA1, LOW); digitalWrite(inA2, HIGH); digitalWrite(inB1, HIGH); digitalWrite(inB2, LOW); delay(stepDelay); } void step2() { digitalWrite(inA1, LOW); digitalWrite(inA2, HIGH); digitalWrite(inB1, LOW); digitalWrite(inB2, HIGH); delay(stepDelay); } void step3() { digitalWrite(inA1, HIGH); digitalWrite(inA2, LOW); digitalWrite(inB1, LOW); digitalWrite(inB2, HIGH); delay(stepDelay); } void step4() { digitalWrite(inA1, HIGH); digitalWrite(inA2, LOW); digitalWrite(inB1, HIGH); digitalWrite(inB2, LOW); delay(stepDelay); } void stopMotor() { digitalWrite(inA1, LOW); digitalWrite(inA2, LOW); digitalWrite(inB1, LOW); digitalWrite(inB2, LOW); } void loop() { if (Serial.available()>0) { int eps=0.5; int low=Serial.read(); int high=Serial.read(); int value = (256*high) + low; if (value > 511) value -= 1024; int V = 2.5 - value*5.0/(20.0*512.0); int R = 10000.0/(5.0/V-1.0); int B = 3750.0; int R25 = 10000.0; int T = 1.0/(log(R/R25)/B+(1/(22.0+273.15))) - 273.15; filter = (1-eps)*filter + eps*T; Serial.print(filter); if (filter==26.8) { //for (int i=0; i<=11; i++) //{ step1(); step2(); step3(); step4(); //} } else stopMotor(); } else stopMotor(); }