This is an old revision of the document!
Proiectul prezinta un model pentru o intersectie in T, semaforizata, controlata printr-un senzor de distanta si butoane. Intersectia este formata dintr-un bulevard des circulat, o trecere de pietoni si o strada secundara cu sens unic; soferii care trebuie sa vireze la stanga ca sa intre pe strada secundara trebuie sa astepte ca semaforul pentru directia inainte sa devina rosu.
Pentru a regula aceste intervale, semafoarele pentru directia inainte sunt initial verzi, iar daca un senzor de distanta detecteaza masini care vor sa vireze stanga sau un buton este apasat de catre un pieton, dupa un timp de asteptare semafoarele se vor schimba, permitand celor care asteapta sa treaca. Dupa un timp suficient de lung, sistemul se va intoarce in starea initiala, unde va ramane fortat pentru o perioada de timp pentru a preveni blocarea permanenta a semaforului inainte.
Scopul acestui sistem este acela de a regla timpul alocat traversarii intersectiei de catre pietoni si timpul alocat masinilor care circula inainte/la stanga. Ideea de la care am pornit este urmatoarea: daca pietonii si masinile care vireaza la stanga apar mult mai rar decat masinile care merg drept inainte, atunci ar fi util un sistem inteligent care sa gestioneze cand sa permita pietonilor (si masinilor care vireaza la stanga) sa treaca.
Un astfel de sistem ar reduce timpul petrecut la stop pentru cea mai mare parte a soferilor care circula prin intersectie, fara a exclude pietonii si minoritatea soferilor care trebuie sa vireze la stanga.
Sistemul trece in mod circular prin mai multe stari care controleaza traficul intersectiei. La inceput, semafoarele pentru stanga si pietoni sunt rosii, iar semafoarele inainte sunt verzi. In momentul in care un pieton apasa pe un buton, se porneste un timer pentru pietoni. In momentul in care o masina care asteapta ca sa vireze la stanga este detectata de senzorul de distanta, se porneste un timer pentru masini. Atunci cand oricare dintre timere ajunge la 0, semaforul inainte va trece printr-o stare intermediara (culoarea galbena), apoi va deveni rosu. Dupa un delay de siguranta, semafoarele pentru pietoni si stanga vor deveni verzi.
Cand semafoarele pentru pietoni si stanga devin verzi, microprocesorul intra intr-o stare in care ignora butoanele si senzorul si porneste un timer de astepare. Cand timerul de asteptare ajunge la 0, semafoarele trec printr-o stare intermediara (pentru pietoni: clipeste rosu, pentru masini: culoarea galbena), apoi devin din nou rosii. Dupa un delay de siguranta, semafoarele pentru inainte devin verzi, iar microprocesorul incepe din nou sa astepte semnale de la senzor si butoane.
Sistemul se bazeaza pe multiple stari de functionare prin care cicleaza pe baza unui timer intern (Timer1, prescale 1024, compare mode). Fiecare configuratie de becuri aprinse si stinse are propria sa functie dedicata, functie apelata in interiorul functiei de loop a placutei. Tranzitiile intre stari au loc in cadrul unor intreruperi; la apasarea butonului si/sau detectarea unei masini de catre senzor, timer-ul intern este pornit cu o valoare de timp setata (valorile folosite sunt de 0.5, 1, 2 si 4 secunde, calculate folosind valoarea intern cycle = 16 MHz).
Dupa ce placuta trece din starea initiala (s0) la starea s1 in urma unei intreruperi cauzata de buton sau de senzor, intreruperile de buton si senzor sunt ignorate pana cand sistemul revine in starea initiala. Sistemul va trece prin stari de la 1 la 9 folosindu-se un compare timer interrupt. La fiecare completare a timer-ului, valoarea sa se reseteaza si pragul este modificat in functie de intervalul de timp care se vrea. Odata ce ultimul timer expira (in starea s9), timer-ul este dezactivat, interrupt-urile de buton si senzor sunt reactivate, iar la final se trece inapoi in starea initiala s0.
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.