Advanced DC motor Controller
Basic example based on the › simple DC motor controller using the built-in L293 chip of the SensorAktor-Shield. One of the built-in switches is used to set the direction of the motor. Have a look on the › switch LED example how to use a switch button.
/* advanced motor controller * * control speed and direction of a motor * * SensorAktor Workshop * Lab3 2008 * Kunsthochschule fuer Medien Koeln * Academy of Media Arts Cologne * http://interface.khm.de * pin mapping SensorAktor Shield * import SensorAktor.h to get already defined mapping * * analog inputs: analog0 = pin0, analog1 = pin1, analog2 = pin2, * analog3 = pin3, analog4 = pin4, analog5 = pin5 * built-in poti: poti = pin5 * amplified input: mic = pin0 * switches: switch1 = pin1, switch2 = pin2, switch3 = pin3 * leds: led1 = pin3, led2 = pin5, led3 = pin6 * power outs: out1 = pin3, out2 = pin5, out3 = pin6 * motor outs: motor1_1 = pin8, motor1_2 = pin13, motor2_1 = pin11, motor2_2 = pin12 * motor pwms: pwmMotor1 = pin10, pwmMotor2 = pin9 * servo outs: servo1 = pin2, servo2 = pin4, servo3 = pin7 */ // import sensor aktor library for pin mapping #include <SensorAktor.h> // import motor library #include <MotorL293.h> // create instance for motor MotorL293 myMotor; // poti value int potiValue = 0; // this block is executed one time when programm starts void setup(){ // set pin modes pinMode(switch1,INPUT); // turn on pullup resistor for switch 1 digitalWrite(switch1, HIGH); // attach pins to motor (motor pin1, motor pin2, pwm pin motor) myMotor.attach(motor1_1, motor1_2, pwmMotor1); } // this block is executed in a loop after setup is called one time void loop(){ // read poti (value between 0 and 1023) potiValue = analogRead(poti); // scale poti value to use it with setPower (value between 0 and 254) potiValue = map(potiValue, 0 , 1023, 0, 254); // set speed of motor using poti value (value between 0 and 254) myMotor.setPower(potiValue); // use switch 1 to set direction of motor 1 (0=left, right=1) if(digitalRead(switch1) == HIGH){ myMotor.setDirection(0); } else{ myMotor.setDirection(1); } }
Files needed
Since Arduino 0015 there are some problems with the old “SensorAktor.h” file.
Use this one instead.