This shows you the differences between two versions of the page.
|
pm:prj2023:alexau:linefollower [2023/05/07 13:28] alexandra.anton2803 |
pm:prj2023:alexau:linefollower [2023/05/28 23:56] (current) alexandra.anton2803 |
||
|---|---|---|---|
| Line 18: | Line 18: | ||
| {{:pm:prj2023:alexau:hard.png?600|}} | {{:pm:prj2023:alexau:hard.png?600|}} | ||
| + | |||
| + | {{:pm:prj2023:alexau:aa3.jpeg?200|}} {{:pm:prj2023:alexau:aa2.jpeg?200|}} | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| + | Mediu de dezvoltare folosit: Arduino IDE | ||
| - | <note tip> | + | <code> |
| - | Descrierea codului aplicaţiei (firmware): | + | int SensorLeft = 1; |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | int SensorRight = 0; |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | int enR = 11; |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | int in1R = 10; |
| - | * (etapa 3) surse şi funcţii implementate | + | int in2R = 9; |
| - | </note> | + | int in3L = 7; |
| + | int in4L = 6; | ||
| + | int enL = 5; | ||
| + | int speed = 255; | ||
| - | ===== Rezultate Obţinute ===== | + | void setup() { |
| + | pinMode(SensorLeft, INPUT); | ||
| + | pinMode(SensorRight, INPUT); | ||
| + | pinMode(enR, OUTPUT); | ||
| + | pinMode(enL, OUTPUT); | ||
| + | pinMode(in1R, OUTPUT); | ||
| + | pinMode(in2R, OUTPUT); | ||
| + | pinMode(in3L, OUTPUT); | ||
| + | pinMode(in4L, OUTPUT); | ||
| + | |||
| + | Serial.begin(9600); | ||
| - | <note tip> | ||
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
| - | </note> | ||
| - | ===== Concluzii ===== | + | } |
| - | ===== Download ===== | + | void loop() { |
| + | int readSensorRight = analogRead(SensorRight) < 300 ? 1 : 0; | ||
| + | int readSensorLeft = analogRead(SensorLeft) < 300 ? 1 : 0; | ||
| - | <note warning> | + | if(readSensorRight == 0 && readSensorLeft == 0) {forward();} |
| - | 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ă ;-). | + | if(readSensorRight == 1 && readSensorLeft == 0) {right();} |
| + | if(readSensorRight == 0 && readSensorLeft == 1) {left();} | ||
| + | if(readSensorRight == 1 && readSensorLeft == 1) {stop();} | ||
| + | } | ||
| - | 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**. | + | void forward() { |
| - | </note> | + | digitalWrite(in1R, LOW); |
| + | digitalWrite(in2R, HIGH); | ||
| + | analogWrite(enR, speed); | ||
| + | digitalWrite(in3L, LOW); | ||
| + | digitalWrite(in4L, HIGH); | ||
| + | analogWrite(enL, speed); | ||
| + | } | ||
| - | ===== Jurnal ===== | + | void right() { |
| + | digitalWrite(in1R, LOW); | ||
| + | digitalWrite(in2R, HIGH); | ||
| + | analogWrite(enR, speed); | ||
| + | digitalWrite(in3L, LOW); | ||
| + | digitalWrite(in4L, LOW); | ||
| + | analogWrite(enL, LOW); | ||
| + | } | ||
| - | <note tip> | + | void left() { |
| - | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | digitalWrite(in1R, LOW); |
| - | </note> | + | digitalWrite(in2R, LOW); |
| + | analogWrite(enR, LOW); | ||
| + | digitalWrite(in3L, LOW); | ||
| + | digitalWrite(in4L, HIGH); | ||
| + | analogWrite(enL, speed); | ||
| + | } | ||
| + | |||
| + | void stop() { | ||
| + | digitalWrite(in1R, LOW); | ||
| + | digitalWrite(in2R, LOW); | ||
| + | analogWrite(enR, LOW); | ||
| + | digitalWrite(in3L, LOW); | ||
| + | digitalWrite(in4L, LOW); | ||
| + | analogWrite(enL, LOW); | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | ===== Rezultate Obţinute ===== | ||
| + | Masina urmeaza linia conform cerintelor, facand virajele necesare. | ||
| + | |||
| + | ===== Concluzii ===== | ||
| + | A fost mai greu decat pare :). Mi-a luat cateva ore bune sa-mi dau seama ce gresesc deoarece mi se tot reseta placuta la cateva secunde. Pana la urma l-am luat de la zero pentru a treia oara si doamne ajuta a mers :). In concluzie, a fost greu, dar am invatat mai bine conceptele necesare deoarece le-am pus in practica, fixand informatia. | ||
| + | |||
| + | |||
| + | ===== Jurnal ===== | ||
| - | ===== Bibliografie/Resurse ===== | + | *Primele zile in care am facut schema si documentatia in care am crezut ca o sa mearga usor acest proiect. |
| + | *O zi in care am montat robotul si am fost chiar optimista ca a mers repede. | ||
| + | *O zi in care am scris codul si nu mergea, dupa care doua zile pline de chin pana a mers :)))) | ||
| - | <note> | ||
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
| - | </note> | ||
| <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||