лаб1 — Arduino Uno simulation

An interactive Arduino Uno circuit simulation you can run free in your browser on Velxio, by sofiia-fedoriv-25.

Components

Sketch code

#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x27
#define LCD_COLUMNS 16
#define LCD_LINES   2
#define TrigPin 4 
#define EchoPin 7

LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);

unsigned long perReading = 300, perBlinking = 1000;
unsigned long lastReading = 0, lastBlink = 0;

char s = 255;
int i = 1;
bool lcdState = true;
float Lcm = 0;

void setup() {
  lcd.init();
  lcd.backlight();

  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);

  Serial.begin(9600);
}

void loop() {
  unsigned long curMillis = millis();

  if (curMillis - lastReading >= perReading) {
    lastReading = curMillis;

    digitalWrite(TrigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin, LOW);

    unsigned int t = pulseIn(EchoPin, HIGH);
    Lcm = (t / 2.0) / 29.1;

    Serial.print(Lcm);
    Serial.print("\n");

    lcd.setCursor(0, 0);
    lcd.print("Distance = ");
    lcd.print(Lcm, 1);
    lcd.print("   ");

    float y = map(Lcm, 10, 200, 16, 0);

    if (y < 0) {
      y = 0;
    }

    lcd.setCursor(0, 1);

    for (int i = 0; i < y; i++) {
      lcd.print(s);
    }

    lcd.print("                  ");
  }

  unsigned long curMillis2 = millis();

  if (Lcm < 100) {
    perBlinking = map(Lcm, 30, 100, 200, 1000);
    if (Lcm < 30) {
      perBlinking = 200;
    }
    if (curMillis2 - lastBlink >= perBlinking) {
      lastBlink = curMillis2;

      if (lcdState) {
        lcd.noBacklight();
        lcdState = false;
      } else {
        lcd.backlight();
        lcdState = true;
      }
    }
  } else {
    lcd.backlight();
    lcdState = true;
  }
}

More projects by sofiia-fedoriv-25