// Program for attiny3216 to measure the distance between sensor and object // created by Jans Hendry // Universitas Gadjah Mada, Indonesia // Kamakura Node, Japan // fab academy MIT - 2022 // the directives/predecessor #include #include // create lcd as an object // format: address, num of columns, num of rows LiquidCrystal_I2C lcd(0x27, 20, 4); // variables long dur; long dist; const int echoPin = 4; // echo pin const int trigPin = 3; // trigger pin void setup() { Serial.begin(9600); // start serial // begin lcd lcd.begin(20, 4); // setting up lcd.init(); // turn on backlight <- the variable resistor has been adjusted lcd.backlight(); // clear screen lcd.clear(); // static display defDisplay(); // set pin as output pinMode(echoPin, INPUT); pinMode(trigPin, OUTPUT); delay(500); // take a breath } void loop() { // Request for distance sensor digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // get the distance dur = pulseIn(echoPin, HIGH); dist = (dur / 2) * 0.034; lcd.setCursor(12, 0); lcd.print(" "); lcd.setCursor(12, 0); lcd.print(dur); // raw value // time lcd.setCursor(12, 1); lcd.print(" "); lcd.setCursor(12, 1); lcd.print(dur / 2); // raw value // distance lcd.setCursor(12, 2); lcd.print(" "); lcd.setCursor(12, 2); lcd.print(dist); delay(1000); } void defDisplay() { lcd.clear(); // clear display // static text lcd.setCursor(0, 0); lcd.print("Read-out "); lcd.setCursor(11, 0); lcd.print(":"); lcd.setCursor(0, 1); lcd.print("Time"); lcd.setCursor(11, 1); lcd.print(":"); lcd.setCursor(17, 1); lcd.print("ms"); lcd.setCursor(0, 2); lcd.print("Distance"); lcd.setCursor(11, 2); lcd.print(":"); lcd.setCursor(17, 2); lcd.print("cm"); }