| superpissy40 a întrebat:

Buna TPU. Am si eu o mica curiozitate: cum functioneaza semafoarele, atat pentru masini, cat si pentru pietoni, mai ales in intersectiile mari? Cum sunt culorile programate astfel incat rosul sa dureze mai mult/mai putin, la fel ca si galbenul si verdele? De unde se stie ca masinile nu se vor intersecta? Multumesc tare mult!

Răspuns Câştigător
| darrio2007 a răspuns:

Exista un timer pentru durata fiecarei culori.
Nu exista senzori de miscare, dupa cum spune Cristi. Ar fi haos.

8 răspunsuri:
suntserios
| suntserios a răspuns:

In primul rand nu lua in calcul ce zice CristiDinBucuresti. Semafoarele nu au senzori de miscare. Iti dai seama ce s-ar intampla daca ar fi asa.

Au niste unitati de control care fac treaba asta intr-o intersectie. Nu e nimic complicat si complex.

| CristiDinBucuresti a răspuns:

Semafoarele au senzori de miscare si atunci ele se schimbă din roșu in verde si invers din verde in rosu.Cauta ca este un articol interesant pe google despre functionarea semafoarelor. Ele mai sunt dotate si cu un cronometru care poate schimba culorile, iar in spatele acestor semafoare se afla si oameni care le coordoneaza de la distanta

| Catrice a răspuns:

De unde știe TPU ca nu ai voie sa pui o întrebare mai devreme de 2min?winking

| Frank51 a răspuns:

Au un script foarte simplu bazat pe timp. Când e roșu aprins este verde stins, șamd. Programul folosit la semafoare este foarte simplu, orice elev de gimnaziu la informatică poate crea un astfel de program.

| Frank51 a răspuns (pentru Frank51):

Void loop(){
digitalWrite(grnLed, LOW);
digitalWrite(yelLed, LOW);
digitalWrite(redLed, HIGH);
delay(20000);
digitalWrite(yelLed,HIGH);
delay(1800);
digitalWrite(redLed,LOW);
digitalWrite(yelLed,LOW);
digitalWrite(grnLed,HIGH);
delay(20000);
digitalWrite(grnLed,LOW);
digitalWrite(yelLed,HIGH);
delay(1800);}

Codul de mai sus este scris în arduino.

Void loop reprezinta funcția care se va repeta încontinuu.

digitalWrite(grnLed, LOW) este o metodă care ii atribuie variabilei grnLED valoarea LOW, adică bec verde stins

digitalWrite(redLed, HIGH) este aceeași metodă dar aprinde ledul roșu.

delay(20000); metoda asta pune pauza de 20 secunde apoi roșu se stinge șamd.

| darrio2007 a răspuns (pentru Frank51):

L-ai băgat si mai in ceață.

| Frank51 a răspuns (pentru darrio2007):

Cred că e fată.

Codul de mai sus e cel mai simplu script care stă la baza programării, nu trebuie nici măcar să ai habar de programare ca să înțelegi.

Funcția loop, deci tot ce este în acolade, se repetă, ajunge la final și o ia de la capăt. Înainte de primul delay roșu este aprins, după 20 de secunde se aprinde galben și stă aprins 1.8 secunde. După cele 1.8s se stinge galben și rosu, se aprinde verde. După 20 de secunde se stinge verde și se aprinde galben pentru 1.8s apoi se reia de la început.

Ca sa funcționeze într-o intersecție, 2 programe de genul rulează simultan, când într-un sens e verde în celelalte este roșu.

Poate am explicat mai bine acum, e greu să explici chestii online.

| gabicoo a răspuns:

Au un program informatic care controlează și sincronizează toate semafoarele dintr-un oraș. Asta la modul teoretic.