Go Down

Topic: Project 10 - Zoetrope , The motor spin in only one direction (Read 1 time) previous topic - next topic

Hi at all, I got a little problem in the project 10, the enable button works, the potentiometer too but there is a problem with the direction... the spin only in one direction, in the other it stops. That's the code:
Code: [Select]

const int controlPin1=2;
const int controlPin2 = 3;
const int enablePin = 9;
const int directionSwitchPin = 4;
const int onOffSwitchStatePin = 5;
const int potPin = A0;

int onOffSwitchState=0;
int previousOnOffSwitchState=0;
int directionSwitchState = 0;
int previousDirectionSwitchState = 0;

int motorEnabled = 0;
int motorSpeed = 0;
int motorDirection = 1;

void setup()
{
  pinMode(directionSwitchPin,INPUT);
  pinMode(onOffSwitchStatePin,INPUT);
  pinMode(controlPin1,OUTPUT);
  pinMode(controlPin2,OUTPUT);
  pinMode(enablePin,OUTPUT);
 
  digitalWrite(enablePin, LOW);
 
  Serial.begin(9600);
}

void loop()
{
  onOffSwitchState = digitalRead(onOffSwitchStatePin);
  delay(1);
  directionSwitchState=digitalRead(directionSwitchPin);
  motorSpeed = analogRead(potPin)/4;
 
  if(onOffSwitchState != previousOnOffSwitchState)
  {
    if(onOffSwitchState == HIGH)
    {
      motorEnabled = !motorEnabled;
    }
  }
 
  if(directionSwitchState != previousDirectionSwitchState)
  {
    if(directionSwitchState == HIGH)
    {
      motorDirection = !motorDirection;
    }
  }
 
  if(motorDirection == 0)
  {
    digitalWrite(controlPin1, HIGH);
    digitalWrite(controlPin2, LOW);
    Serial.println("Direction 1 (The motor turn)");
  }
  else
  {
    digitalWrite(controlPin1, LOW);
    digitalWrite(controlPin2, HIGH);
    Serial.println("Direction 2(The motor doesn't turn)");
  }
 
  if(motorEnabled == HIGH)
  {
    analogWrite(enablePin, motorSpeed);
  }
  else
  {
    analogWrite(enablePin , 0);
  }
 
  previousDirectionSwitchState = directionSwitchState;
  previousOnOffSwitchState=onOffSwitchState;
}

Arduino switch correctly between the and and else of the direction because on the serial monitor I see both the message(direction 1 and direction 2) but in the direction 2 the motor doesn't turn. I tried to reverse HIGH and LOW and I realized that the motor  never turn when the controlPin1 is LOW and the controlPin2 is HIGH. Where is the problem?

In the attached I there are the photo of the breadboard. Thank you in advance and sorry for bad language, I''m not english :D

I have the exact same problem.  Anyone, please help.

plustwo

from my understanding, the buttons work as described and you can see that on the monitor. I would suspect there could be a wiring problem on your circuit. I hooked up the project last night and all works fine without any problem. however, I didn't have time to reproduce your problem... still think it could be a wiring issue. try rewiring the project.  8)

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy