Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include
- LiquidCrystal lcd(12,11,7,6,5,4);
- //pin a cui collegare il fotorilevatori
- int primoautovelox = 8;
- int secondoautovelox =9;
- int sensoregiro = 10;
- //variabili di appoggio per la memorizzazione dei tempi di passaggio dei fotorilevatori
- unsigned long tempoprimopassaggio;
- unsigned long temposecondopassaggio;
- unsigned long tempogiro;
- int giri; //variabile che memorizza il numero di giri
- //variabili che memorizzano il passaggio dai fotorilevatori
- boolean count = false;
- boolean count2 = false;
- boolean count3 = false;
- //variabili per la memorizzazione dei tempi
- unsigned long tempoprimoautovelox;
- unsigned long temposecondoautovelox;
- unsigned long temposensoriautovelox;
- double velocitagiro;
- double velocitaautovelox;
- double spazio = 50;
- double spaziototale = 183;
- void setup ()
- {
- lcd.begin(20,4);
- lcd.setCursor(0,0);
- lcd.print("I.I.S. C. Rosatelli");
- lcd.setCursor(4,1);
- lcd.print("Progetto di:");
- lcd.setCursor(0,2);
- lcd.print("Pista Polistil");
- lcd.setCursor(5,3);
- lcd.print("innovativa");
- giri = -1;
- pinMode(8,INPUT);
- pinMode(9,INPUT);
- pinMode(10,INPUT);
- delay(2000);
- lcd.clear();
- }
- void loop () {
- //sensore giro
- if (digitalRead(sensoregiro) == LOW && count == false)
- {
- giri = giri + 1;
- tempoprimopassaggio = millis(); //memorizzo valore tempo al passaggio della macchina su sensore giro
- count = true;
- while(digitalRead(sensoregiro) == LOW) {}//attendi che si passata la macchina
- if (temposecondopassaggio != 0)
- {
- tempogiro = tempoprimopassaggio - temposecondopassaggio;
- lcd.setCursor(0,0);
- lcd.print(" ");
- lcd.setCursor(0,0);
- lcd.print("T. Giro:");
- lcd.print(tempogiro);
- lcd.print("ms");
- Serial.print("T ");
- Serial.println(tempogiro);
- velocitagiro = (spaziototale / tempogiro) * 1000; // il numero 1000 serve ad aggiustare le unità di misura
- lcd.setCursor(0,1);
- lcd.print(" ");
- lcd.setCursor(0,1);
- lcd.print("V. Giro:");
- lcd.print(velocitagiro);
- lcd.print("cm/s");
- Serial.print("V ");
- Serial.println(velocitagiro);
- lcd.setCursor(0,2);
- lcd.print(" ");
- lcd.setCursor(0,2);
- lcd.print("Giri:");
- lcd.print(giri);
- Serial.print("G ");
- Serial.println(giri);
- }
- temposecondopassaggio = tempoprimopassaggio;
- count = false;
- }
- // sensori autovelox
- if (digitalRead(primoautovelox) == LOW && count2 == false)
- {
- tempoprimoautovelox = millis(); //passaggio al primo sensore autovelox e rilevo il tempo
- count2 = true; //memorizzo che è passato dal primo sensore
- }
- if (digitalRead(secondoautovelox) == LOW && count2 == true)
- {
- temposecondoautovelox = millis();//passaggio al secondo sensore autovelox e rilevo il tempo
- temposensoriautovelox = (temposecondoautovelox - tempoprimoautovelox); //calcolo il tempo intercorso tra i due sensori
- count2 = false; //memorizzo che è passato dal secondo sensore e posso fare il calcolo della velocità tratto rettilineo
- velocitaautovelox = (spazio / temposensoriautovelox) * 1000; //il valore 1000 serve a sistemare le unità di misura in modo che velocità in cm/s
- lcd.setCursor(0,3);
- lcd.print(" ");
- lcd.setCursor(0,3);
- lcd.print("V.velox:");
- lcd.print(velocitaautovelox);
- lcd.print("cm/s");
- Serial.print("A ");
- Serial.println(velocitaautovelox);
- }
- }
Add Comment
Please, Sign In to add comment