Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Servo mbed-rtos beep hcsr04 TextLCD
Diff: main.cpp
- Revision:
- 1:13556d8b4a34
- Parent:
- 0:650a24681467
- Child:
- 2:33e2a092cab6
diff -r 650a24681467 -r 13556d8b4a34 main.cpp
--- a/main.cpp Fri Apr 28 19:35:48 2017 +0000
+++ b/main.cpp Tue Mar 26 11:09:02 2019 +0000
@@ -7,149 +7,63 @@
Serial blue(D10,D2);//tx e rx
/******************************/
//sensori ad ultrasuoni
-HCSR04 sensor1(D15, D14);
+HCSR04 sensor1(D15, D14); //istanza oggetti "sensori"
HCSR04 sensor2(D12, D13);
HCSR04 sensor3(D11, D9);
/******************************/
//dichiarazioni led
//Led per le macchine
-DigitalOut rossoC(PA_0);
+DigitalOut rossoC(PA_0); //istanza oggetti "led"
DigitalOut gialloC(D5);
DigitalOut verdeC(D3);
/******************************/
//led per i pedoni
-DigitalOut rossoP(D6);
+DigitalOut rossoP(D6); //istanza oggetti "led specifici per i pedoni"
DigitalOut gialloP(D7);
DigitalOut verdeP(D8);
/******************************/
//buzzer
-Beep buzzer(D4);
+Beep buzzer(D4); //istanza oggetti "buzzer"
/******************************/
/******************************/
-//dichiarazione funzioni
-void giallo();
-void semafori();
-/******************************/
-//variabili
-int i=0;
-char riceviBlue = '0';
-bool gianello= false;
-bool visto = false;
+
+Thread thread_sensori; // istanzia oggetto thread
+
+bool occupata = false;
/******************************/
//sensore semaforo 1
/******************************/
void sensori(){
- while(!visto && !gianello){
sensor1.start();
wait_ms(100);
- sensor2.start();
+ sensor2.start(); //partono i sensori
wait_ms(100);
- if(sensor1.get_dist_cm()<10||sensor2.get_dist_cm()<10){
- wait(4);
- sensor1.start();
- wait_ms(100);
- sensor2.start();
- wait_ms(100);
- if(sensor1.get_dist_cm()<10||sensor2.get_dist_cm()<10&&!gianello){
- visto = true;
- blue.putc('A');
- wait_ms(100);
- semafori();
- visto=false;
+ if(sensor1.get_dist_cm() < 5 && occupata[0] = false){ //se uno dei sensori capta una distanza minore 10
+ occupata[0] = true;
+ else
+ occupata[0] = false;
+ if(sensor2.get_dist_cm() < 5 && occupata[1] = false){ //se uno dei sensori capta una distanza minore a 10 e gianello è false
+ occupata[1] = true;
+ else
+ occupata[1] = false;
}
- }
- }
-}
-/******************************/
-//controllo borini
-/******************************/
-void borini (void const *args){
- while(true){
- if(blue.readable()){
- riceviBlue = blue.getc();
- }
- if(riceviBlue == 'B')
- {
- gianello=true;
- riceviBlue='0';
- semafori();
- riceviBlue='0';
- gianello=false;
- visto=false;
- }
- }
-}
-/******************************/
+
int main(){
- //inizializzazione
- /******************************/
- rossoP=1;
- verdeP=0;
- gialloP=0;
- gialloC=0;
- rossoC=0;
- verdeC=1;
- blue.baud(38400);
- /******************************/
-Thread th1(borini);
- while(1){
- if(!gianello){
- sensori();
- }
- }
+ int i;
+ while(true) {
+ //if (mybutton) {
+ for (int i = 0; i < 2; i++)
+ pc.printf("%d", occupata[i]);
+
+
+
+
+
+
}
-void giallo(){
- int n;
- int cont =0;
- do{
- n=0;
- verdeP=0;
- gialloP=1;
- //bippata del buzzer
- /******************************/
- for(i=0;i<10;i++){
- buzzer.beep(1500,50);
- wait_ms(200);
- buzzer.nobeep();
- buzzer.beep(2000,50);
- wait_ms(200);
- buzzer.nobeep();
- }
- /******************************/
- sensor3.start();
- wait_ms(100);
- if(sensor3.get_dist_cm()<48){
- cont++;
- if(cont<=2)
- blue.putc('L');
- n=1;
- }
- wait_ms(100);
- }while(n==1&&cont<=2);
- blue.putc('0');
- wait_ms(200);
-}
-void semafori(){
- //giallo per le macchine, rosso per i pedoni
- verdeC=0;
- gialloC=1;
- rossoC=0;
- wait(4);
- //rosso per le macchine, verde per i pedoni
- buzzer.beep(1200,50);
- gialloC=0;
- rossoC=1;
- rossoP=0;
- verdeP=1;
- wait(10);
- buzzer.nobeep();
- //giallo per i pedoni e rosso per le macchine
- giallo();
- //rosso ai pedoni e verde alle automobili
- gialloP=0;
- rossoP=1;
- rossoC=0;
- verdeC=1;
- wait_ms(5000);
+
+
+void thread_sensori() {
+
}
\ No newline at end of file