Projektas #4: Kli??i? išvengimas

Išmokite sukurti program?, kad „Code & Drive“ roboto mašinos ultragarsiniam jutikliui aptikus objekt? arba lyg? pavirši? už 25 cm ar ar?iau, b?t? ?jungti šviesos diodai, ji imt? važiuoti atgal ir pasisuka, kad išvengt? kli?ties. Jai išvengus objekto, ji toliau jud?s ? priek? tiesia linija.

SUD?TINGUMO LYGIS: Vidutinis.

PRATIMO TRUKM?: 40 min.

MEDŽIAGOS:

  • 1 žalios spalvos šviesos diodas
  • 1 raudonos spalvos šviesos diodas
  • 1 Ultragarso jutiklis
  • 2 NS varikliai su ratais
  • 1 USB - Micro USB kabelis
  • Kompiuteris

„Code & Drive“ robotas mašina tur?s b?ti sukonstruotas pagal instrukcij? vadov?.

Kas yra ultragarsinis jutiklis?

Išmatuojant laik? tarp signal? ir žinant garso greit?, galima ?vertinti atstum? iki objekto nuo kurio paviršiaus atsispind?jo garso signalas.

JUNGTYS:

  1. Prijunkite šviesos diodus prie skaitmenini? kontakt? „9“ ir „10“.
  2. Prijunkite ultragarsin? jutikl? prie skaitmenini? kontakt? „12“ ir „13“.
  3. Prijunkite NS variklius prie „Build & Code 4in1“ plokšt?s pilkos jungties.

PROGRAMOS KODAS 

Galite atlikti š? projekt? naudodami „Arduino“, „Bitbloq“ arba kit? suderinam? vaizdin? programavimo programin? ?rang?, naudojan?i? blokus. Toliau pateikiamas reikiamas kodas.

„Arduino“ kodas

  1. Parsisi?skite  ir ?diekite „Arduino IDE“ program?. Ji si?loma „Windows“, „Mac OS“ ir „Linux“.
  2. Paleiskite „Arduino“ program? ir nukopijuokite ? j? toliau pateikt? kod?:
    int PinSpeedMA = 5, PinSpeedMB = 6; // DIGITAL PIN FOR THE SPEED OF THE MOTORS
    int PinTurnMA = 4, PinTurnMB = 7; // DIGITAL PIN FOR DIRECTION OF THE MOTORS
    int TrigPin = 13;  // ULTRASONIC SENSOR PINS
    int EchoPin = 12;  
    float SSound = 0.0343;  // SOUND SPEED IN cm/us
    long Lengh, Distance ;  // VARIABLES TO CALCULATE THE DISTANCE IN cm
    int PinLED1 = 9, PinLED2 = 10; // LED1 AND LED2 DIGITAL PINS
    
    void setup() {
      // put your setup code here, to run once:
      //CONFIGURATION OF THE DIGITAL PORTS
      pinMode(PinSpeedMA, OUTPUT);
      pinMode(PinSpeedMB, OUTPUT);
      pinMode(PinTurnMA, OUTPUT);
      pinMode(PinTurnMB, OUTPUT);
      pinMode(TrigPin, OUTPUT);  
      pinMode(EchoPin, INPUT);
      pinMode(PinLED1, OUTPUT);
      pinMode(PinLED2, OUTPUT); 
      // SPEED OF THE MOTORS  100 TO 255
      analogWrite(PinSpeedMA, 175);
      analogWrite(PinSpeedMB, 175);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      DistanceCM(); // CALL THE FUNCTION TO CALCULATE THE DISTANCE
      if (( Distance < 25) && ( Distance > 1)) // IF THE DISTANCE IS BETWEEN 1 AND 25CM
        {
          digitalWrite(PinLED1,HIGH);//LED1 Y LED2 = ON
          digitalWrite(PinLED2,HIGH);
          digitalWrite(PinTurnMA, HIGH);// CODE&DRIVE BACKWARD
          digitalWrite(PinTurnMB, LOW);
          delay(1000);
          digitalWrite(PinTurnMA, HIGH);// CODE&DRIVE ROTATION
          digitalWrite(PinTurnMB, HIGH);   
          delay(1000);  
        }
        else
        {
          digitalWrite(PinLED1,LOW);// LED1 Y LED2 = OFF
          digitalWrite(PinLED2,LOW);
          digitalWrite(PinTurnMA, LOW); // CODE&DRIVE FORWARD
          digitalWrite(PinTurnMB, HIGH);      
        }
    }
    
    void DistanceCM()// DISTANCE CALCULATION FUNCTION
    {
      // CALCULATE THE DISTANCE IN CM
      digitalWrite(TrigPin, LOW);        // VERIFY THAT THE TRIGGER IS DEACTIVATED
      delayMicroseconds(4);              // VERIFY THAT THE TRIGGER IS LOW
      digitalWrite(TrigPin, HIGH);       // ACTIVATE THE OUTPUT PULSE
      delayMicroseconds(14);             // WAIT 10µs. PULSE REMAINS ACTIVE DURING
      digitalWrite(TrigPin, LOW);        // STOP PULSE AND WAIT FOR ECHO
      Lengh = pulseIn(EchoPin, HIGH) ; // pulseIn MEASURES THE TIME THAT TAKES TO THE DECLARED PIN (echoPin) TO CHANGE FROM LOW TO HIGH STATUS (FROM 0 TO 1)
      Distance = SSound* Lengh / 2;  // CALCULATE DISTANCE
    

Kodas vaizdinio programavimo programinei ?rangai naudojan?iai blokus

  1. Parsisi?skite  ir ?diekite program?.
  2. Paleiskite programin? ?rang? ir nukopijuokite toliau pateikt? kod?. Naudokite š? paveiksl?l? kaip vadov?:
  3. Sukonfig?ruokite ir ?kelkite kod? vadovaudamiesi instrukcijomis pateiktomis Code & Drive“ roboto mašinos pirm?j? veiksm? vadove
  4. Kad kod? ?keltum?te teisingai, ?sitikinkite, kad „Build & Code 4in1“ plokšt?s BTL/USB jungiklis yra teisingai nustatytas ? USB pad?t?.

„Bitbloq“ kodas

  1. Parsisi?skite „Bitbloq“ ir ?diekite „Web2board“ program?l?.
  2. Paleiskite programin? ?rang? ir nukopijuokite toliau pateikt? kod?:
    • Aparatin? ?ranga

    • Programin? ?ranga

  3. Sukonfig?ruokite ir ?kelkite kod? vadovaudamiesi instrukcijomis pateiktomis Code & Drive“ roboto mašinos pirm?j? veiksm? vadove
  4. Kad kod? ?keltum?te teisingai, ?sitikinkite, kad „Build & Code 4in1“ plokšt?s BTL/USB jungiklis yra teisingai nustatytas ? USB pad?t?.

PRATIMO REZULTATAS:

„Code & Drive“ robotas mašina važiuos tiesiai ? priek?. Kai ultragarsinis jutiklis aptinka objekt?, esant? mažesniu nei 25 cm atstumu, „Code & Drive“ robotas mašina ?jungs šviesos diodus, pavažiuos 1 sekund? atgal ir dar vien? sekund? pasisuks. Tada ji patikrins, ar n?ra joki? kli??i?, išjungs šviesos diodus ir toliau jud?s tiesiai ? priek?.