1

with this sketch i can independently control 4 dc motors cw, ccw, and rotating each of them until the hall sensor related to it detects an magnetic field. what im trying to do now is to create a mode of operation in wich:just pressing button "nine", and first motor starts rotating until its hall sensor detects a magnetic field, after five seconds, the second motor acts the same and so on, ather the fourth motor, after 5 seconds, the first motor starts again. i spent like 5 hours trying but still cant do it. maybe for a pro its not that big deal cose its my first serious Arduino project.

#include <TLE94112.h>
#include <Tle94112Motor.h>
#include <IRremote.h>

#define unu 0x1 #define doi 0x2 #define trei 0x3 #define patru 0x4 #define sound 0x55 #define picture 0x54 #define feature 0x50 #define install 0x52 #define cinci 0x5 #define sase 0x6 #define sapte 0x7 #define opt 0x8 #define tv 0x63 #define av 0x56 #define e 0x60 #define eo 0x42

int RECV_PIN = 2; int hallSensorPin1 = 3; int hallSensorPin2 = 4; int hallSensorPin3 = 5; int hallSensorPin4 = 6; int state1; int oldState1 = 1; int runMode1 = 0; int state2; int oldState2 = 1; int runMode2 = 0; int state3; int oldState3 = 1; int runMode3 = 0; int state4; int oldState4 = 1; int runMode4 = 0;

Tle94112 controller = Tle94112(); Tle94112Motor motor1(controller); Tle94112Motor motor2(controller); Tle94112Motor motor3(controller); Tle94112Motor motor4(controller);

IRrecv irrecv(RECV_PIN); decode_results results;

void setup() { irrecv.enableIRIn(); controller.begin();

motor1.connect(motor1.HIGHSIDE, controller.TLE_HB1); motor1.connect(motor1.LOWSIDE, controller.TLE_HB2); motor1.setPwm(motor1.HIGHSIDE, controller.TLE_PWM2); motor1.setPwmFreq(motor1.HIGHSIDE, controller.TLE_FREQ200HZ);

motor2.connect(motor2.LOWSIDE, controller.TLE_HB3); motor2.connect(motor2.HIGHSIDE, controller.TLE_HB4); motor2.setPwm(motor2.HIGHSIDE, controller.TLE_PWM2); motor2.setPwmFreq(motor2.HIGHSIDE, controller.TLE_FREQ200HZ);

motor3.connect(motor3.HIGHSIDE, controller.TLE_HB5); motor3.connect(motor3.LOWSIDE, controller.TLE_HB6); motor3.setPwm(motor3.HIGHSIDE, controller.TLE_PWM2); motor3.setPwmFreq(motor3.HIGHSIDE, controller.TLE_FREQ200HZ);

motor4.connect(motor4.LOWSIDE, controller.TLE_HB7); motor4.connect(motor4.HIGHSIDE, controller.TLE_HB8); motor4.setPwm(motor4.HIGHSIDE, controller.TLE_PWM2); motor4.setPwmFreq(motor4.HIGHSIDE, controller.TLE_FREQ200HZ);

motor1.begin(); motor2.begin(); motor3.begin(); motor4.begin(); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume();

if (results.value == unu || results.value == 0x801 || results.value == 0x2049) {
  motor1.start(63);
  runMode1 = 0;
}
if (results.value == cinci || results.value == 0x805 || results.value == 0x2053) {
  motor1.start(-63);
  runMode1 = 0;
}
if (results.value == tv || results.value == 0x63 || results.value == 0x2111 || results.value == 0x83F || results.value == 0x3F) {
  motor1.coast();
  runMode1 = 0;
}
if (results.value == sound || results.value == 0x55 || results.value == 0x2103 || results.value == 0x837 || results.value == 0x37) {
  motor1.start(63);
  runMode1 = 1;
}
if (results.value == doi || results.value == 0x802 || results.value == 0x2050) {
  motor2.start(63);
  runMode2 = 0;
}
if (results.value == sase || results.value == 0x806 || results.value == 0x2054) {
  motor2.start(-63);
  runMode2 = 0;
}
if (results.value == av || results.value == 0x56 || results.value == 0x2104 || results.value == 0x838 || results.value == 0x38) {
  motor2.coast();
  runMode2 = 0;
}
if (results.value == picture || results.value == 0x54 || results.value == 0x2102 || results.value == 0x836 || results.value == 0x36) {
  motor2.start(63);
  runMode2 = 1;
}
if (results.value == trei || results.value == 0x803 || results.value == 0x2051) {
  motor3.start(63);
  runMode3 = 0;
}
if (results.value == sapte || results.value == 0x807 || results.value == 0x2055) {
  motor3.start(-63);
  runMode3 = 0;
}
if (results.value == e || results.value == 0x60 || results.value == 0x2108 || results.value == 0x83C || results.value == 0x3C) {
  motor3.coast();
  runMode3 = 0;
}

if(results.value==feature||results.value==0x50||results.value==0x2098||results.value==0x832||results.value==0x32){ motor3.start(63); runMode3 = 1; } if (results.value == patru || results.value == 0x804 || results.value == 0x2052) { motor4.start(63); runMode4 = 0; } if (results.value == opt || results.value == 0x808 || results.value == 0x2056) { motor4.start(-63); runMode4 = 0; } if (results.value == eo || results.value == 0x42 || results.value == 0x2090 || results.value == 0x82A || results.value == 0x2A) { motor4.coast(); runMode4 = 0; } if (results.value == install || results.value == 0x52 || results.value == 0x2100 || results.value == 0x834 || results.value == 0x34) { motor4.start(63); runMode4 = 1; } } state1 = digitalRead(hallSensorPin1);

if (state1 == HIGH) { oldState1 = 1; } if (state1 == LOW && oldState1 == 1 && runMode1 == 1) { motor1.coast(); oldState1 = 0; } state2 = digitalRead(hallSensorPin2);

if (state2 == HIGH) { oldState2 = 1; } if (state2 == LOW && oldState2 == 1 && runMode2 == 1) { motor2.coast(); oldState2 = 0; }

state3 = digitalRead(hallSensorPin3);

if (state3 == HIGH) { oldState3 = 1; } if (state3 == LOW && oldState3 == 1 && runMode3 == 1) { motor3.coast(); oldState3 = 0; } state4 = digitalRead(hallSensorPin4);

if (state4 == HIGH) { oldState4 = 1; } if (state4 == LOW && oldState4 == 1 && runMode4 == 1) { motor4.coast(); oldState4 = 0; } }

Tincu Ioan
  • 31
  • 2

0 Answers0