понедельник, 28 декабря 2015 г.

дальномер на arduino

 С помощью ардуино можно сделать простой дальномер в домашних условиях для этого нам понадобится модуль SC-SR04, LCD Module 1602 и ARDUINO

Подключаем SC-SR04 к arduino
  • Gnd к GND
  • Vcc к 5V
  • Trig к 7 пину ардуино
  • Echo к 6 пину ардуино

16x2 LCD
  1. 0V
  2. 5V
  3. Контраст:  1ком к GND и 10ком к пину 5V
  4. RS:  to Arduino pin12
  5. R/W:  to 0V
  6. E:  to Arduino pin11
  7. DB0:  n/c
  8. DB1:  n/c
  9. DB2:  n/c
  10. DB3:  n/c
  11. DB4:  to Arduino pin 5
  12. DB5:  to Arduino pin 4
  13. DB6:  to Arduino pin 3
  14. DB7:  to Arduino pin 2
  15. Anode:  to 100Ω or 220Ω resistor; other end of resistor to 5V
  16. Cathode:  to GND



#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int pingPin = 7; //output 10us pulse to this pin
int inPin = 6; //measure return pulse width from this pin
long duration, inches, cm;
int indec, cmdec;
int inchconv = 147; // ratio between puls width and inches
int cmconv = 59; // ratio between pulse width and cm
String s1, s2;

// initialise LCD library and pins
void setup() {
  lcd.begin(16, 2);
  pinMode(pingPin, OUTPUT);
  pinMode(inPin, INPUT);
}

void loop()
{
  // Send a short LOW followed by HIGH pulse to Trigger input:
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(pingPin, LOW);

  // read the length of the return pulse on Echo output
  duration = pulseIn(inPin, HIGH);

  // convert the time into a distance (non-floating point with decimals
  inches = microsecondsToInches(duration);
  indec = (duration - inches * inchconv) * 10 / inchconv;
  cm = microsecondsToCentimeters(duration);
  cmdec = (duration - cm * cmconv) * 10 / cmconv;
  s1 = String(inches) + "." + String(indec) + "in" + "     ";
  s2 = String(cm) + "." + String(cmdec) + "cm" + "     ";
  lcd.setCursor(0, 0); // print inches on top line of LCD
  lcd.print(s1);
  lcd.setCursor(0,1); // print cm on second line of LCD
  lcd.print(s2);

  delay(100);
}

long microsecondsToInches(long microseconds)
{
  return microseconds / inchconv;
}

long microsecondsToCentimeters(long microseconds)
{
  return microseconds / cmconv;
}

Комментариев нет:

Отправить комментарий