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
main.cpp
- Committer:
- CiroSamu
- Date:
- 2019-04-02
- Revision:
- 7:8ad50e27d002
- Parent:
- 6:0088253be231
- Child:
- 8:5fc14e646e91
File content as of revision 7:8ad50e27d002:
#include "mbed.h"
#include "rtos.h"
#include "hcsr04.h"
#include "beep.h"
#include "TextLCD.h"
#include "Servo.h"
#define trigger1 D15
#define echo1 D14
#define trigger2 D12
#define echo2 D13
/******************************/
//bluetooth
Serial pc(USBTX, USBRX);//tx e rx
Servo servo(D9);
TextLCD lcd(D10,D11,D5,D4,D3,D2);
/******************************/
//sensori ad ultrasuoni
HCSR04 sensor1(trigger1, echo1);
HCSR04 sensor2(trigger2, echo2);
//HCSR04 sensor3(D11, D9);
/******************************/
DigitalIn mybutton(USER_BUTTON);
//Thread thread_sensori; // istanzia oggetto thread
bool occupata[3] = {false,false,false};
/******************************/
void button_thread(void const *args){
bool sos= false;
int angle=0;
//false== libero
//true== occupato
while(1){
if (mybutton==0){
int i=0;
sos = false;
do{
i++;
if(occupata[i]== false){
pc.printf("il parcheggio numero %d e libero\r\n",i);
lcd.printf("il parcheggio numero %d e libero\r\n",i);
sos=true;
while(1) {
servo.write(angle);
angle+=10;
if(angle>90){
wait(3);
while(angle != 0 ){
servo.write(angle);
angle-=10;
wait(0.25);
}
if(angle==0) break;
}
wait(0.25);
}
if(occupata[1]==false && occupata[2]==false) break; // if(occupata[1]==true && occupata[2]==true) //sos = !sos;
}/*else if(sos==false && i==2){
pc.printf("tutti i parcheggi sono occupati");
break;
}//else if(occupata[1]==true && occupata[2]==true) pc.printf("tutti i parcheggi sono occupati");
*/
}while(i<2);
// if(occupata[1]==true && occupata[2]==true) pc.printf("tutti i parcheggi sono occupati");
if(sos==false){
pc.printf("tutti i parcheggi sono occupati\r\n");
lcd.printf("tutti i parcheggi sono occupati\r\n");
}
}
}
}
//sensore semaforo 1
/******************************/
void sensori(){
// float distanza1;
// float distanza2;
sensor1.start();
wait_ms(100);
sensor2.start(); //partono i sensori
wait_ms(100);
//distanza1= sensor1.get_dist_cm() ;
//distanza2=sensor2.get_dist_cm();
//pc.printf("%.0fcm\r\n%.0fcm\r\n", distanza1,distanza2);
if(sensor1.get_dist_cm() < 10.0 && occupata[1] == false) //se uno dei sensori capta una distanza minore 10
occupata[1] = true;
else
occupata[1] = false;
if(sensor2.get_dist_cm() < 10.0 && occupata[2] == false) //se uno dei sensori capta una distanza minore a 10 e gianello è false
occupata[2] = true;
else
occupata[2] = false;
}
int main(){
// pc.printf("prova");
//while(true) {
//Thread button_th(button_thread);
//int i=0;
Thread button_th(button_thread);
while(1){
sensori();
}
}