top of page

DIGITAL METRE PROJESİ

  • Yazarın fotoğrafı: muhammed ali balkaya
    muhammed ali balkaya
  • 15 Ara 2018
  • 1 dakikada okunur

PROJE KODU

#include <LiquidCrystal.h>
#include <EEPROM.h>

#define OFFSET 0

#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

#define TRIG_PIN 2
#define ECHO_PIN 11

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

unsigned long updTime = 0;
byte mode = 0;
int distance = 0;

byte readKeypad() {
  int adc = analogRead(A0);

  if (adc < 50) return btnRIGHT;
  if (adc < 250) return btnUP;
  if (adc < 450) return btnDOWN;
  if (adc < 650) return btnLEFT;
  if (adc < 850) return btnSELECT;

  return btnNONE;
}

void setup() {
  pinMode(10, INPUT);
  pinMode(A0, INPUT);

  pinMode(ECHO_PIN, INPUT);
  pinMode(TRIG_PIN, OUTPUT);

  digitalWrite(TRIG_PIN, LOW);

  lcd.begin(16, 2);
  lcd.print("    Distance    ");
}

void printLiveDistance() {
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  long duration = pulseIn(ECHO_PIN, HIGH);
  distance = duration * 0.017;

  lcd.setCursor(0, 1);
  lcd.print("Live  ");
  lcd.setCursor(8, 1);
  if ((distance < 2) || (distance > 400)) {
    lcd.print("Range!");
    distance = 0;
  }
  else {
    lcd.print(distance + OFFSET);
    lcd.print(" cm    ");
  }
}

void loop() {
  if (readKeypad() == btnSELECT) {
    if (mode != 1) {
      mode = 1;
      lcd.setCursor(0, 1);
      lcd.print("Hold  ");
    }
    else mode = 0;
    delay(300);
  }

  if (readKeypad() == btnUP) {
    lcd.setCursor(0, 1);
    lcd.print("Store ");
    EEPROM.update(0, distance >> 8);
    EEPROM.update(1, distance & 0xFF);
    delay(500);
    mode = 0;
  }

  if (readKeypad() == btnDOWN) {
    if (mode != 2) {
      int memDistance = (EEPROM.read(0) << 8) + EEPROM.read(1);
      if ((memDistance >= 2) && (memDistance <= 400)) {
        mode = 2;
        lcd.setCursor(0, 1);
        lcd.print("Recall");
        lcd.setCursor(8, 1);
        lcd.print(memDistance + OFFSET);
        lcd.print(" cm    ");
      }
    }
    else mode = 0;
    delay(300);
  }

  if (mode == 0) {
    printLiveDistance();
    delay(100);
  }
}
 
 
 

留言


© 2023 by Parenting Blog

Proudly created with MAB.com

  • YouTube Sosyal Simge
  • Facebook Black Round
  • Twitter Black Round

BURSA / OSMANGAZİ

Mail listemize katılın

bottom of page