diff --git a/Homework/Homework5/Encoder/Encoder.ino b/Homework/Homework5/Encoder/Encoder.ino index 12d06c9..8065388 100644 --- a/Homework/Homework5/Encoder/Encoder.ino +++ b/Homework/Homework5/Encoder/Encoder.ino @@ -1,17 +1,19 @@ #include -const byte IN1 = 6; -const byte IN2 = 7; -const byte ENABLE = 5; +const byte IN1 = 10; +const byte IN2 = 11; +const byte ENABLE = 6; const byte ENCO_B = 3; const byte ENCO_A = 2; -int count = 0; -int forward_count = 0; -int backward_count = 0; const unsigned long RESET_COUNT_PERIOD_IN_US = 50000; const int EDGES_PER_CYCLE = 13; const int REDUCTION_RATIO = 20; +int count = 0; +int forward_count = 0; +int backward_count = 0; +unsigned long aFallingTime = 0; +unsigned long bFallingTime = 0; void setup() { pinMode(IN1, OUTPUT); @@ -19,29 +21,37 @@ void setup() { pinMode(ENABLE, OUTPUT); pinMode(A0, INPUT); pinMode(A1, INPUT); - digitalWrite(IN1, HIGH); - digitalWrite(IN2, LOW); + digitalWrite(IN1, LOW); + digitalWrite(IN2, HIGH); pinMode(ENCO_B, INPUT); pinMode(ENCO_A, INPUT); Serial.begin(115200); Timer1.initialize(); Timer1.setPeriod(RESET_COUNT_PERIOD_IN_US); Timer1.attachInterrupt(resetCountAndPrint); - attachInterrupt(digitalPinToInterrupt(ENCO_A), onEncoAChange, CHANGE); - attachInterrupt(digitalPinToInterrupt(ENCO_B), onEncoBChange, CHANGE); - // attachInterrupt(digitalPinToInterrupt(ENCO_A), onEncoAFalling, FALLING); + // attachInterrupt(digitalPinToInterrupt(ENCO_A), onEncoAChange, CHANGE); + // attachInterrupt(digitalPinToInterrupt(ENCO_B), onEncoBChange, CHANGE); + attachInterrupt(digitalPinToInterrupt(ENCO_A), onEncoAFalling, FALLING); // attachInterrupt(digitalPinToInterrupt(ENCO_B), onEncoBFalling, FALLING); analogWrite(ENABLE, 50); } void loop() { - // int statusA = analogRead(0); - // int statusB = analogRead(1); + // int statusA = digitalRead(ENCO_A); + // int statusB = digitalRead(ENCO_B); // // Serial.print("A: "); + // Serial.print('$'); // Serial.print(statusA); // // Serial.print("B: "); - // Serial.print(", "); - // Serial.println(statusB); + // Serial.print(' '); + // Serial.print(statusB); + // Serial.println(";"); + + // bFallingTime = micros(); + + // aFallingTime = micros(); + + // Serial.println(bFallingTime - aFallingTime); } void resetCountAndPrint() { @@ -51,10 +61,15 @@ void resetCountAndPrint() { // Serial.print(' '); // Serial.print(backward_count); // Serial.print(' '); + count = forward_count - backward_count; + Serial.print(forward_count); + Serial.print(' '); + Serial.print(backward_count); + Serial.print(' '); Serial.println(count); count = 0; - // forward_count = 0; - // backward_count = 0; + forward_count = 0; + backward_count = 0; } void onEncoAFalling() { @@ -64,63 +79,71 @@ void onEncoAFalling() { else { forward_count++; } + + // aFallingTime = micros(); } void onEncoBFalling() { - if (digitalRead(ENCO_A) == LOW) { - forward_count++; - } - else { - backward_count++; - } + // if (digitalRead(ENCO_A) == LOW) { + // forward_count++; + // } + // else { + // backward_count++; + // } + + bFallingTime = micros(); } void onEncoAChange() { - int b_stat = digitalRead(ENCO_B); - int a_stat = digitalRead(ENCO_A); - if (a_stat == LOW) { - // if (b_stat == LOW) { - // Serial.println("A 1"); - // count--; - // } - if (b_stat == HIGH) { - Serial.println("A 2"); - count ++; + if (LOW == digitalRead(ENCO_A)) { + if (LOW == digitalRead(ENCO_B)) { + // Serial.println("A 1"); + // count--; + backward_count++; + } + if (HIGH == digitalRead(ENCO_B)) { + // Serial.println("A 2"); + // count ++; + forward_count++; } } else { - // if (b_stat == HIGH) { - // Serial.println("A 3"); - // count--; - // } - if (b_stat == LOW) { - Serial.println("A 4"); - count++; + if (HIGH == digitalRead(ENCO_B)) { + // Serial.println("A 3"); + // count--; + backward_count++; + } + if (LOW == digitalRead(ENCO_B)) { + // Serial.println("A 4"); + // count++; + forward_count++; } } } void onEncoBChange() { - int a_stat = digitalRead(ENCO_A); - int b_stat = digitalRead(ENCO_B); - if (b_stat == LOW) { - if (a_stat == HIGH) { - Serial.println("B 1"); - count--; + if (LOW == digitalRead(ENCO_B)) { + if (HIGH == digitalRead(ENCO_A)) { + // Seria/l.println("B 1"); + // count--; + backward_count++; + } + if (LOW == digitalRead(ENCO_A)) { + // Serial.println("B 2"); + // count++; + forward_count++; } - // if (a_stat == LOW) { - // Serial.println("B 2"); - // count++; - // } } else { - if (a_stat == LOW) { - Serial.println("B 3"); - count--; + if (LOW == digitalRead(ENCO_A)) { + // Serial.println("B 3"); + // count--; + backward_count++; + } + if (HIGH == digitalRead(ENCO_A)) { + // Serial.println("B 4"); + // count++; + forward_count++; } - // if (a_stat == HIGH) { - // Serial.println("B 4"); - // count++; - // } } } \ No newline at end of file