This shows you the differences between two versions of the page.
pm:prj2022:cstan:10 [2022/04/22 18:56] vlad.anghelescu created |
pm:prj2022:cstan:10 [2022/05/27 23:07] (current) vlad.anghelescu [Jurnal] |
||
---|---|---|---|
Line 3: | Line 3: | ||
<note tip> | <note tip> | ||
- | Anghelescu Vlad-Gabriel | + | Anghelescu Vlad-Gabriel 1222A |
</note> | </note> | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
<note tip> | <note tip> | ||
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | Proiectul este reprezentat de un sistem automat de parcare.La fiecare intrare sau iesire a unei masini din parcare, sistemul afiseaza cu ajutorul unui LCD i2C cate locuri sunt libere in parcare, respectiv daca parcarea este plina.Programul stie de la bun inceput cate locuri de parcare exista in total, iar la iesirea unei masini adauga un loc liber, iar la intrarea unei masini scade un loc de parcare.In momentul in care parcarea este plina si nu mai exista locuri libere, LCD-ul afiseaza mesajul "Parking Full" si nu mai ridica bariera pentru a oferi acces in parcare. |
- | + | Modul de functionare: | |
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | In momentul intrarii sau iesirii din parcare, masina trece prin 2 senzori, bariera fiind ridicata automat la trecerea prin primul senzor. In functie de senzorul prin care trece prima data masina, programul isi da seama daca masina intra sau iese din parcare si aduna sau scade un loc pentru a tine cont de cate locurile sunt libere. |
</note> | </note> | ||
- | ===== Hardware Design ===== | + | ===== Hardware Design and Components List ===== |
<note tip> | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | + | Lista de componente: |
- | * listă de piese | + | |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | -Arduino UNO |
- | * diagrame de semnal | + | -2x IR Proximity Sensor |
- | * rezultatele simulării | + | -16x2 LCD I2C |
+ | -Servo | ||
+ | -Jumpers | ||
</note> | </note> | ||
Line 27: | Line 30: | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | Codul folosit pentru realizarea proiectului: |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | // Arduino Car Parking System |
- | * (etapa 3) surse şi funcţii implementate | + | #include <Wire.h> |
+ | #include<LiquidCrystal_I2C.h> | ||
+ | LiquidCrystal_I2C lcd(0x27,16,2); | ||
+ | #include <Servo.h> | ||
+ | |||
+ | Servo myservo1; | ||
+ | |||
+ | int IR1 = 2; | ||
+ | int IR2 = 4; | ||
+ | |||
+ | int Slot = 4; | ||
+ | |||
+ | int flag1 = 0; | ||
+ | int flag2 = 0; | ||
+ | |||
+ | void setup() { | ||
+ | lcd.init(); | ||
+ | lcd.begin(16,2); | ||
+ | lcd.backlight(); | ||
+ | pinMode(IR1, INPUT); | ||
+ | pinMode(IR2, INPUT); | ||
+ | |||
+ | lcd.setCursor (0,0); | ||
+ | lcd.print(" ARDUINO "); | ||
+ | lcd.setCursor (0,1); | ||
+ | lcd.print(" PARKING SYSTEM "); | ||
+ | delay (2000); | ||
+ | lcd.clear(); | ||
+ | | ||
+ | myservo1.attach(3); | ||
+ | myservo1.write(100); | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | void loop(){ | ||
+ | |||
+ | if(digitalRead (IR1) == LOW && flag1==0){ | ||
+ | if(Slot>0){flag1=1; | ||
+ | if(flag2==0){myservo1.write(0); Slot = Slot-1;} | ||
+ | }else{ | ||
+ | lcd.setCursor (0,0); | ||
+ | lcd.print(" SORRY :( "); | ||
+ | lcd.setCursor (0,1); | ||
+ | lcd.print(" Parking Full "); | ||
+ | delay (3000); | ||
+ | lcd.clear(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if(digitalRead (IR2) == LOW && flag2==0){flag2=1; | ||
+ | if(flag1==0){myservo1.write(0); Slot = Slot+1;} | ||
+ | } | ||
+ | |||
+ | if(flag1==1 && flag2==1){ | ||
+ | delay (1000); | ||
+ | myservo1.write(100); | ||
+ | flag1=0, flag2=0; | ||
+ | } | ||
+ | |||
+ | lcd.setCursor (0,0); | ||
+ | lcd.print(" WELCOME! "); | ||
+ | lcd.setCursor (0,1); | ||
+ | lcd.print("Slot Left: "); | ||
+ | lcd.print(Slot); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | // Arduino 16x2 LCD I2C Scanner | ||
+ | #include <Wire.h> | ||
+ | void setup() | ||
+ | { | ||
+ | Wire.begin(); | ||
+ | Serial.begin(9600); | ||
+ | Serial.println("\nI2C Scanner"); | ||
+ | } | ||
+ | void loop() | ||
+ | { | ||
+ | byte error, address; | ||
+ | int Devices; | ||
+ | Serial.println("Scanning..."); | ||
+ | Devices = 0; | ||
+ | for(address = 1; address < 127; address++ ) | ||
+ | { | ||
+ | |||
+ | Wire.beginTransmission(address); | ||
+ | error = Wire.endTransmission(); | ||
+ | if (error == 0) | ||
+ | { | ||
+ | Serial.print("I2C device found at address 0x"); | ||
+ | if (address<16) | ||
+ | Serial.print("0"); | ||
+ | Serial.print(address,HEX); | ||
+ | Serial.println(" !"); | ||
+ | Devices++; | ||
+ | } | ||
+ | else if (error==4) | ||
+ | { | ||
+ | Serial.print("Unknown error at address 0x"); | ||
+ | if (address<16) | ||
+ | Serial.print("0"); | ||
+ | Serial.println(address,HEX); | ||
+ | } | ||
+ | } | ||
+ | if (Devices == 0) | ||
+ | Serial.println("No I2C devices found\n"); | ||
+ | else | ||
+ | Serial.println("done\n"); | ||
+ | delay(5000); | ||
+ | } | ||
+ | |||
+ | Librariile folosite: | ||
+ | |||
+ | -Wire.h | ||
+ | -LiquidCrystal_I2C.h | ||
+ | -Servo.h | ||
</note> | </note> | ||
Line 37: | Line 156: | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Proiectul functioneaza perfect si face exact ce scrie in descrierea generala. |
</note> | </note> | ||
Line 45: | Line 164: | ||
<note warning> | <note warning> | ||
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | ||
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | ||
</note> | </note> | ||
Line 53: | Line 170: | ||
<note tip> | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | Pasi pentru obtinerea proiectului. |
+ | 1.Prima data a fost realizat si pus la punct codul. | ||
+ | 2. Realizarea machetei | ||
</note> | </note> | ||