This is an old revision of the document!
Proiectul reprezintă un dispozitiv care poate măsura cu acuratețe înălțimea persoanei care stă sub acesta. Mi s-a părut interesantă folosirea senzorilor într-un mod care ține de mai mult decât doar mișcare, iar astfel obținem o unealtă folositoare pentru colectarea de date, fie într-un scop mai larg (măsurarea mediei de înălțime a unui sample group) fie unul mai simplu (observarea creșterii unui copil și asigurarea că aceasta are loc în parametri normali). Aceste date vor putea, după, să fie accesate și organizate printr-o aplicație .
Inițial, senzorul laser va înregistra înălțimea la care se află față de sol. Printr-un calcul de forma hsol - hobiect vom obține înălțimea dorită (h reprezintă distanța de la senzor la sol, respectiv obiect). La plasarea unui obiect/individ sub senzor, led-ul și buzzer-ul se vor activa, indicând detecția acestuia, iar display-ul va afișa înălțimea. Prin apăsarea unui buton, se vor trimite datele obținute prin Bluetooth pe aplicație, unde vor putea fi accesate în mod convenabil. Microcontroller-ul este center piece-ul ce leagă toate acestea.
Deoarece am folosit un microcontroller Arduino am lucrat în Arduino IDE și am descărcat bibilioteci pentru display-ul LCD și pentru senzor.
Adafruit_VL53L0X lox = Adafruit_VL53L0X(); LiquidCrystal_I2C lcd(0x27,16,2); VL53L0X_RangingMeasurementData_t sup_measure; void setup() { Serial.begin(115200); // wait until serial port opens for native USB devices while (! Serial) { delay(1); } pinMode(13, OUTPUT); digitalWrite(13,HIGH); Serial.println("Adafruit VL53L0X test"); if (!lox.begin()) { Serial.println(F("Failed to boot VL53L0X")); while(1); } // masuratoare initiala lox.rangingTest(&sup_measure, false); // pass in 'true' to get debug data printout! if (sup_measure.RangeStatus != 4) { // phase failures have incorrect data Serial.print("Distance (mm): "); Serial.println(sup_measure.RangeMilliMeter); } else { Serial.println(" out of range "); } lcd.begin(16,2); lcd.backlight(); lcd.setCursor(0,0); lcd.print("dist sup: "); lcd.setCursor(11,0); lcd.print(sup_measure.RangeMilliMeter/10); delay(5000); } void loop() { VL53L0X_RangingMeasurementData_t measure; Serial.print("Reading a measurement... "); lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout! if (measure.RangeStatus != 4) { // phase failures have incorrect data Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter); } else { Serial.println(" out of range "); } lcd.clear(); lcd.setCursor(0,0); lcd.print("height: "); lcd.setCursor(8,0); if (sup_measure.RangeMilliMeter - measure.RangeMilliMeter > 0) lcd.print((sup_measure.RangeMilliMeter - measure.RangeMilliMeter)/10); else lcd.print("nimic sub"); delay(1000); }
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.