Правельный штангенциркуль.(usb шнурок)

В последнее время начал часто пользоваться трехмерным моделированием.
И конечно без штангеля никак.Все время пользовался обычным ,не электронным калибром , и он вполне устраивал.Обычно работа состоит так.
Измеряется нужный размер штангелем,а потом вводится в программу.
Иногда при вводе происходят ошибки . Например вместо 11мм,вписываю 16мм,или наоборот.Иногда пропускаешь или несколько раз вводишь цифру.И какой … если эту ошибку обнаруживаешь уже в готовой детале .😦
Короче решил приобрести цифровой 😎.
на попробовать купил дешевый с али.
Когда получил,он вполне устроил,и обнаружил,что у него есть какой то коннектор.
Поиск ничего не дал,и тут я набрел на интересный ролик.

по ссылке под видео набрел на sites.google.com/…/arduino-reads-digital-caliper

Короче решил пилить.😄

Правда вместо транзисторов использовал lm358 и один переменик на 4.7к.(если нужна схема могу нарисовать).
Все зароботало,но я решил пойти дальше :rolleyes:.
А точнее arduino micro может сосдавать эмулятор клавиатуры,вот я ее использовал.


#include "Keyboard.h"
int i;

int sign;
int inPin = 10;                   // кнопка на входе 10
int val = 0;                     // переменная для хранения значения

long value;

float result;
float result1;
int clockpin = 5;

int datapin = 6;

unsigned long tempmicros;





void setup() {

  Serial.begin(9600);

  pinMode(clockpin, INPUT);
  pinMode(inPin, INPUT);         //  устанавливает режим работы - вход для 7го вход/выхода (pin)

  pinMode(datapin, INPUT);
  Keyboard.begin();
}



void loop () {
  digitalWrite(10, LOW);
  val = digitalRead(inPin);
  while (digitalRead(clockpin) == HIGH) {} //if clock is LOW wait until it turns to HIGH

  tempmicros = micros();

  while (digitalRead(clockpin) == LOW) {} //wait for the end of the H0.0
  if ((micros() - tempmicros) > 500) { //if the HIGH pulse was longer than 500 micros we are at the start of a new bit sequence

    sign = 1;

    value = 0;

    for (i = 0; i < 23; i++) {

      while (digitalRead(clockpin) == HIGH) { } //wait until clock returns to HIGH- the first bit is not needed

      while (digitalRead(clockpin) == LOW) {} //wait until clock returns to LOW

      if (digitalRead(datapin) == LOW) {

        if (i < 20) {

          value |= 1 << i;

        }

          sign = -1;

        }

      }

    }

    result = (value * sign) / 100.0;

    Serial.println(result,1 ); //print result with 2 decimals

if(val==1){
  Keyboard.write(0x8);
  delay(10);
  Keyboard.write(0x8);
  delay(10);
  Keyboard.write(0x8);
  delay(10);
  Keyboard.write(0x8);
  delay(10);
  Keyboard.write(0x8);
  delay(10);
  Keyboard.write(0x8);
  delay(10);

   Keyboard.print(result*-1,1);

   }
result1=result;
    delay(250);

  }

На 10 вход повесил кнопку через 5в.
Как работает.
При нажатии на кнопку срабатывают 5 раз BkSp (стереть) а потом вводится значения.
Вот пример

А вот как вводится значения в солиде.

Все делал на коленке:D,сори.

Поигравшись,решил приобрести ,что то посерьезней,но не дорого.
Самое то Митутоё,но 200 долларов многовато,да и много фальшивых в нете,можно попасть.Решил приобрести китайский SHAHE

Как раз и разъем у него есть.B)


Операционный усилитель lm358 .

  • 4236
Comments
Andrew1978

😃 ЗдОрово! Спасибо. Схемка конечно не помешает…

HATUUL

Спасибо.
Нарисовал,думаю понятно.
Прошу обратить внимание.Пластиковые штангели (из-за мягкости материала)измеряют до десятых мм.
Если кто решит подключить к металлическому ,с точностью до сотых мм, нужно поменять строку.

Keyboard.print(result*-1,1);

на

Keyboard.print(result*-1,2);

П.с. Измерять можно, только в мм.

Andrew1978

Ошибка 403 - Владелец запретил доступ к этому файлу. Попросите владельца открыть доступ к файлу и снова поделиться ссылкой на него.

Фото к сожалению не доступны.

Спасибо - картинка появилась!

HATUUL

Владимир , очень извеняюсь за ошибки.Уже больше двух лет ни писал на русском,еще в придачу у меня дислексия.Очень извеняюсь.Я всеми силами пытаюсь исправить,но видно этого не достаточно.Если не трудно,можете указать на ошибки .Спасибо!

Андрей.
Сейчас попробую по другому.