Friday, June 25, 2010

Re: Report 1 | #25th of June 2010

Current situation :

We are right now able to control the DC-motors with given speed. Our test chassis can drive forward, backwards, to right and to left. We also have begun some experiences on starting the motors in different directions according to the input sound signal(This experiment is not useful for our summer-project but maybe for fall-projects which are based on sound signals mostly).

This is a very simple code on how to control a DC motor with sound signal :
*** THE CODE IS VERY MESSY ***



[code]

int ledPin =  13;    // LED connected to digital pin 13
boolean motorEnable = false;

int sensorPin = 2;    // select the input pin for the potentiometer
double sensorValue = 0.00;  // variable to store the value coming from the sensor

//motordriver POLULU MD05A:
int IN1_Motor = 11;//direction of motor
int IN2_Motor = 12;//direction of motor
int D2_Motor = 9;//PWM for motor
int D1 = 5;//set to LOW
int EN = 11;//enable signal


int P;
int pwm;
int stepCounter;

void setup()
{
  Serial.begin(9600);

  pinMode(2, INPUT); //  ENCODER kanal A (sort strompe)
  pinMode(3, INPUT); //  ENCODER kanal B

  pinMode(9, OUTPUT);  //  MOTOR PWM
  pinMode(10, OUTPUT); //  MOTOR IN2
  pinMode(11, OUTPUT); //  MOTOR EN
  pinMode(12, OUTPUT); //  MOTOR IN1

  pinMode(13, OUTPUT); //  LED

  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  digitalWrite(12, LOW);

  //Serial.println( "For help press V");
}

//********************************************************
//********************************************************
//***************** LOOP *********************************

void loop()
{
  if (Serial.available() > 0 )
    comm();
    micRead();
   //readFromEncoder();
}
//***************** LOOP *********************************
//********************************************************
//***************** COMM     *****************************
double oldSensorValue;
int counter = 0;
void micRead()
{
  counter = counter + 1;
  oldSensorValue = sensorValue;
  sensorValue = analogRead(sensorPin);
    //Serial.println(sensorValue - oldSensorValue);
  if ( sensorValue - oldSensorValue > 40 && counter != 1){
    Serial.print( "Someones is clapping : " );
    Serial.println(sensorValue);
    eventCall();
  }
}
int flag = 0;
void eventCall(){
       flag++;
       if (flag%4 == 1){
         digitalWrite(10, HIGH);
         digitalWrite(11, HIGH);
         digitalWrite(12, LOW);
         digitalWrite(9, HIGH);
         Serial.println("Moving counter-clockwise");      
         Serial.println(flag);      
         delay(2000);
         return;
       }
       if (flag%2 == 0){
         digitalWrite(11, LOW);
         Serial.println("Stopping the DC motor");
         Serial.println(flag);
         delay(2000);
         return;
       }
       if (flag%4 == 3){
         digitalWrite(10, LOW);
         digitalWrite(11, HIGH);
         digitalWrite(12, HIGH);
         digitalWrite(9, HIGH);
         Serial.println("Moving clockwise");
         Serial.println(flag);      
         delay(2000);
         return;
       }
    
     /*  break;
    
  
       Serial.println( "B pressed" );    
       digitalWrite(10, LOW);
       digitalWrite(12, HIGH);
       digitalWrite(9, HIGH);
       break;*/
}//end of eventCall

void comm()
{
  byte value = Serial.read();

    switch(value)
    {
      // reset, r    
    case 114:
      Serial.print( "Reseting the system");
      digitalWrite(10, LOW);
      digitalWrite(11, LOW);digitalWrite(13, LOW);
      digitalWrite(12, LOW);
      break;

      // STOP motor av på, S
    case 83:
      motorEnable = !motorEnable;

      if (motorEnable == true)
      {
        digitalWrite(11, HIGH); digitalWrite(13, HIGH);
      }
      else
      {
        digitalWrite(10, LOW);
        digitalWrite(11, LOW);digitalWrite(13, LOW);
        digitalWrite(12, LOW);
      }

      Serial.print( "motorEnable= ");
      Serial.println( (int)motorEnable);

      break;

      // ber om alle variable, ?
    case 63:
      Serial.println("******************************");
      Serial.print( "Motor mode :");
      Serial.println( (int)motorEnable);
      Serial.println("******************************");
      break;
      //W
      case 87:
        sensorValue = analogRead(sensorPin);
        Serial.print( "Analogue read is " );
        Serial.println(sensorValue);
      break;
    
      case 70:
       Serial.println( "F pressed" );
       digitalWrite(10, HIGH);
       digitalWrite(12, LOW);
       digitalWrite(9, HIGH);
       break;
    
      case 66:
       Serial.println( "B pressed" );    
       digitalWrite(10, LOW);
       digitalWrite(12, HIGH);
       digitalWrite(9, HIGH);
       break;
    }
}

//***************** COMM     *****************************
//********************************************************
//********************************************************

[/code]

Members developing the code : Puya, Shahab F.

Later updates coming soon ...

No comments:

Post a Comment