Projektas #4: Automatiniai garažo vartai

Išmokite sukurti ir užprogramuoti automatiškai atsidaran?ius ir užsidaran?ius garažo vartus panaudodami „Maker Control Kit“ komplektuojam? robotikos rinkini? valdymo plokšt?s ir „Maker Kit 3“ komplektuojamo robotikos rinkinio komponentus.

J?s atidarysite vartus paspausdami mygtuk?. Tada atstumo jutiklis patikrins, ar transporto priemon? n?ra ties ?važiavimu ir uždarys vartus. Jei transporto priemon? vis dar yra ties ?važiavimu, vartai liks atidaryti.

SUD?TINGUMO LYGIS: Pradedantiesiems.

PRATIMO TRUKM?: 60 min.

MEDŽIAGOS:

  • 1x mygtukas
  • 1x ultragarsinis atstumo jutiklis
  • 1x vykdomasis variklis
  • 1x kartonin? d?ž?
  • 1x „4in1 Build & Code“ plokšt?
  • 1x USB – Mikro USB kabelis
  • 1x Kompiuteris
  • Medžiagos vartams
  • Klijai arba lipni juosta

KONSTRUKCIJOS SUK?RIMAS:

Vart? sukonstravimui naudosite kartonin? d?žut? ir vatmano lapus pastatyti sienai, kurioje bus mygtukas, ultragarsinis atstumo jutiklis ir „4in1 Build&Code“ plokšt?. Parsisi?skite greito sumontavimo vadov? ir sukonstruokite konstrukcij? atlikdami parodytus veiksmus.

Sumontavus konstrukcij?, prijunkite visus elektroninius komponentus prie „4in1 Build & Code“ plokšt?s, kaip nurodyta žemiau pateiktame skyriuje „Jungtys“.

JUNGTYS:

  1. Prijunkite mygtuk? Nr. 1 prie „4in1 Build&Code“ plokšt?s skaitmenin?s jungties Nr. 4.
  2. Prijunkite vykdom?j? varikl? prie „4in1 Build&Code“ plokšt?s skaitmenin?s jungties Nr. 9.
  3. Prijunkite ultragarsin? atstumo jutikl? prie „4in1 Build&Code“ plokšt?s skaitmenini? jung?i? Nr. 12 ir Nr. 13.

Perži?r?kite kabeli? spalvas ir „4in1 Build & Code“ plokšt?s kontakt? spalvas, kad žinotum?te kaip sujungti. Kiekvienas kabelis tur?t? b?ti prijungtas prie jo spalvos.

PROGRAMOS KODAS:

Program? sudaro šie komponentai:

  1. Dabartin?s mygtuko b?senos nuskaitymas. Jei mygtukas paspaudžiamas, vartai atsidarys, jie bus atidaryti 2 sekundes, o b?senos kintamasis pasikeis ? 1.
  2. Kai vartai yra atidaryti, bus patikrintas ultragarsinio atstumo jutiklio rodmuo. Jei rodmuo yra didesnis nei 20 cm, tai reiškia, kad joks objektas ? garaž? nevažiuoja. Pra?jus 2 sekund?ms, b?senos kintamasis bus pakeistas ? 0, o vartai užsidarys.
  3. Jei ultragarsinio jutiklio rodmuo yra mažesnis nei 20 cm, tai reiškia, kad ? garaž? ?važiuoja transporto priemon? ir vartai liks atidaryti. Kai transporto priemon? ?važiavo ? garaž? ir ultragarsinio atstumo jutiklio rodmuo yra didesnis nei 20 cm, pra?jus 2 sekund?ms b?senos kintamasis pasikeis ? 0, o vartai užsidarys.

Ši seka toliau bus kartojama tol, kol visai sistemai bus tiekiamas maitinimas.

Šiuos veiksmus galite atlikti naudodami „Arduino“ ir „Bitbloq“ programin? ?rang?, taip pat kit? suderinam? vaizdin? programavimo programin? ?rang?, naudojan?i? blokus. Žemiau pateikiamas programin?s ?rangos kodas, reikalingas kiekvienai programinei ?rangai.

„Arduino“ kodas

  1. Parsisi?skite „Arduino“ programin? ?rang? ir atlikite ?diegimo proces?.
  2. Paleiskite program? ir nukopijuokite toliau pateikt? kod?:
    #include <Servo.h>
    Servo motor1; // motor1 = Name of the servomotor 
    int TrigPin = 13;  // Connection ports of the ultrasonic sensor
    int EchoPin = 12;  
    float SSound = 0.0343;  // SPEED OF SOUND IN cm/µs
    long Lengh, Distance ;  // VARIABLES TO CALCULATE THE DISTANCE IN cm
    int VButton = 0, PButton = 4; // VARIABLE OF BUTTON READING; Digital port 4 connected button
    int State = 0; // Status variable 
    void setup() {
      // put your setup code here, to run once:
      motor1.attach (9); // Servomotor connected to digital port 9
      pinMode(TrigPin, OUTPUT); // Configuration ports of the ultrasonic sensor
      pinMode(EchoPin, INPUT);
      pinMode (PButton, INPUT); // Configuration port button as input
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      VButton = digitalRead (PButton); // Read the status of the button
      if ((VButton == 1) && (State == 0)) // if button = pushed and State = 0
      {
        motor1.write(15); // Servomotor = Open door
        delay (2000); // Wait 2 seconds
        State = 1; // State = 1;
      }
      DistanceCM(); // Activate function to measure the distance of the ultrasonic distance sensor
      if ((Distance > 20) && (State == 1)) // If the distance is greater than 20 cm and State = 1
      {
        delay (2000); // Wait 2 seconds
        motor1.write(105); // Servomotor = Close door
        State = 0; // State = 0
      }
    }
    
    void DistanceCM()// FUNCTION TO CALCULATE DISTANCE
    {
      // DISTANCE CALCULATION IN CM
      digitalWrite(TrigPin, LOW);        // We check that the trigger is deactivated
      delayMicroseconds(4);              // To make sure that the trigger is LOW
      digitalWrite(TrigPin, HIGH);       // We activate the output pulse
      delayMicroseconds(14);             // We wait 10 µs. The pulse is still active this time
      digitalWrite(TrigPin, LOW);        // We cut the pulse and wait for ECHO
      Lengh = pulseIn(EchoPin, HIGH) ; //pulseIn measures the time that elapses from when the declared pin (echoPin) changes from low status to high (from 0 to 1)
      Distance = SSound* Lengh / 2;  // CALCULATION OF THE DISTANCE
    }
    
  3. Sukonfig?ruokite ir ?kelkite kod? pagal instrukcijas, kurios yra pateiktos dokumente „4in1 Build&Code“ plokšt?s pirmieji žingsniai.

Kodas skirtas suderinamai vaizdinei programavimo programinei ?rangai, naudojan?iai blokus

  1. Parsisi?skite programin? ?rang? ir atlikite ?diegimo proces?.
  2. Paleiskite program? ir paleid? nukopijuokite ? j? toliau pateikt? kod?:
  3. Sukonfig?ruokite ir ?kelkite kod? pagal instrukcijas, kurios yra pateiktos dokumente „4in1 Build&Code“ plokšt?s pirmieji žingsniai.

„BitBloq“ kodas

  1. Parsisi?skite „BitBloq“ programin? ?rang?.
  2. Paleiskite „BitBloq“ program? ir paleid? nukopijuokite ? j? toliau pateikt? kod?:
    • Aparatin? ?ranga

    • Programin? ?ranga

  3. Sukonfig?ruokite ir ?kelkite kod? pagal instrukcijas, kurios yra pateiktos dokumente „4in1 Build&Code“ plokšt?s pirmieji žingsniai.

PRATIMO REZULTATAS:

Paspaudus mygtuk?, garažo vartai atsidarys. Po dviej? sekundži? ultragarsinis jutiklis patikrins, ar priešais vartus neb?ra automobilio. Jei rodmuo yra didesnis nei 20 cm, vartai užsidarys, o jei mažesnis nei 20 cm, vartai bus atidaryti tol, kol transporto priemon? pravažiuos. J?s suk?r?te savo automatinius garažo vartus!