NoNoseOnTV . part 2

Et hop voilà le code version 2.

// # Author  : Hugues Lepesant
// # Date    : 24/04/2014
// # Version : 0.2
 
// # URM Code based on Jiang's work from DFRobot
// # Product name:ultrasonic scanner Kit
// # Product SKU:SEN0001
  
// # Description:
// # The Sketch for scanning 180 degree area 4-500cm detecting range
  
// # Connection:
// #       Pin 1 VCC (URM V3.2) -> VCC (Arduino)
// #       Pin 2 GND (URM V3.2) -> GND (Arduino)
// #       Pin 4 PWM (URM V3.2) -> Pin 3 (Arduino)
// #       Pin 6 COMP/TRIG (URM V3.2) -> Pin 5 (Arduino)
// # Pin mode: PWM
// # Working Mode: PWM passive control mode.
// # If it is your first time to use it,please make sure the two jumpers to the right hand
// # side of the device are set to TTL mode. You'll also find a secondary jumper on
// # the left hand side, you must break this connection or you may damage your device.
  
int URPWM=3;        // PWM Output 0-25000us,every 50us represent 1cm
int URTRIG=5;       // PWM trigger pin
 
int pinGreen = 2;
int pinYellow = 6;
int pinRed = 7;

int duration = 1000;
 
int distMinimum = 100; // 100 cm
int distMedium = 150;  // 150 cm
 
boolean up=true;       // create a boolean variable
unsigned long time;    // create a time variable
unsigned long urmTimer = 0; // timer for managing the sensor reading flash rate
  
unsigned int Distance=0;
 
uint8_t EnPwmCmd[4]={0x44,0x22,0xbb,0x01}; // distance measure command
  
void setup() {             // Serial initialization
    Serial.begin(9600);    // Sets the baud rate to 9600
 
    pinMode(pinGreen, OUTPUT);
    digitalWrite(pinGreen, LOW);
     
    pinMode(pinYellow, OUTPUT);
    digitalWrite(pinYellow, LOW);
     
    pinMode(pinRed, OUTPUT);
    digitalWrite(pinRed, LOW);
 
    PWM_Mode_Setup();
}
  
void loop() {
  Distance = PWM_Mode();
  Serial.print("Distance = ");
  Serial.print(Distance);
  Serial.println(" cm");
   
  if ( Distance > distMedium ) {
    digitalWrite(pinGreen, HIGH);
    digitalWrite(pinYellow, LOW);
    digitalWrite(pinRed, LOW);
  }
 
  if ( Distance > distMinimum && Distance < distMedium ) {
    digitalWrite(pinGreen, LOW);
    digitalWrite(pinYellow, HIGH);
    digitalWrite(pinRed, LOW);
  }
 
  if ( Distance < distMinimum ) {
    digitalWrite(pinGreen, LOW);
    digitalWrite(pinYellow, LOW);
    digitalWrite(pinRed, HIGH);
    
    tone(8, 330, duration);
//    noTone(8);
 }
   
  delay(2000);
}
 
  
void PWM_Mode_Setup(){
    pinMode(URTRIG,OUTPUT);       // A low pull on pin COMP/TRIG
    digitalWrite(URTRIG,HIGH);    // Set to HIGH
  
    pinMode(URPWM, INPUT);        // Sending Enable PWM mode command
     
    for (int i=0;i<4;i++) {
        Serial.write(EnPwmCmd[i]);
    }
}
  
int PWM_Mode(){                   // a low pull on pin COMP/TRIG  triggering a sensor reading
    digitalWrite(URTRIG, LOW);
    digitalWrite(URTRIG, HIGH);   // reading Pin PWM will output pulses
      
    unsigned long DistanceMeasured=pulseIn(URPWM,LOW);
      
    if (DistanceMeasured==50000) { // the reading is invalid.
      return 0;
    } else {
        return DistanceMeasured/50; // every 50us low level stands for 1cm
    }
}

Ce contenu a été publié dans Mes Projets. Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.