Ардуино в сверлилку

romanes
Offline
Зарегистрирован: 25.12.2020

С Новым Годом всех!

Прошу помощи  в уважаемом сообществе о возможной схемной реализации следующей затеи. Нашел на  металоприемке убитый сверлильный станок. Станок древний, немецкий (Хан и Колб) попал к нам скорее всего по репатриации в 45-м. Полностью восстановил, но поскольку мотор теперь стоит от стиралки и частота вращения регулируется потенциометром возникла потребность в тахометре. Сама индикация предполагается на ИН-12. Формирователь входных импульсов здесь все понятно. Начало скетча тоже понятно, есть библиотеки частотомеров. Собственно измерять нужно каждые две секунды, с последующим обновлением предыдущих измерений. Непонятно как дальше лучше схемно реализовать: 1. Создавать сразу скетч для динамической индикации, выводить на сдвиговый регистр и дальше классически 155ид1 и через ключи на ИН-12. 2. Используя библиотеку iarduino_4LED вывести на tremo-модуль и  перекодировать  для ИН-12. 3. Или как?  

sadman41
Offline
Зарегистрирован: 19.10.2016

Станок на выставку достижений стим-панка пойдёт что ли?

romanes
Offline
Зарегистрирован: 25.12.2020

sadman41 пишет:

Станок на выставку достижений стим-панка пойдёт что ли?

Та не, просто ИН12 как за баней.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:

Станок на выставку достижений стим-панка пойдёт что ли?

была у нас гильотина 40 годов, немецкая, на длине реза 2500 работала от папиросной бумаги 0.05 до стали 6мм интересно как со сверлилкой дело обстоит?

romanes
Offline
Зарегистрирован: 25.12.2020

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

Щас нас модераторы за флуд забанят.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Одно радует что не на такой станок надо Ардуину прикручивать. А то синей изоленты не напасешься. https://www.youtube.com/watch?v=eNl1B8iUSd4

romanes
Offline
Зарегистрирован: 25.12.2020

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

 

#include <FreqCount.h>

#include <SPI.h>

#include <Wire.h>    //библиотека для связи по протоколу I2C

#include <DS3231.h>   // библиотека для работы с модулем часов реального времени 

const int pinSelect = 8; // пин защелки для регистра сдвига

DS3231 RTC;         //объявляем объект RTC класса DS3231

int buttonInt = 0;

int h;              //переменная для хранения часов

int m;              //переменная для хранения минут

int thousands;    

int hundreds;

int tens;

int unit;

bool h24;

bool PM;

 

void setup() {

 

 FreqCount.begin(2000);

 Wire.begin();

  SPI.begin(); // инициализация интерфейса SPI

  pinMode(7, OUTPUT);

  pinMode(pinSelect, OUTPUT); //

  digitalWrite(pinSelect, LOW); // выбор ведомого устройств (регистра)

  SPI.transfer(0); // очищаем содержимое регистра

SPI.transfer(0);

SPI.transfer(0);

SPI.transfer(0);

  digitalWrite(pinSelect, HIGH); // конец передачи

 

 attachInterrupt(buttonInt, screenon, LOW);

 

 

}

 

void screenon()

{

  if (FreqCount.available()) {

    unsigned long count = FreqCount.read();

    byte thousands = count/1000%10; //выделяем количество тысяч

    byte hundreds = count/100%10;  // выделяем количество сотен

    byte tens = count/10%10;        // выделяем количество десятков

    int unit = count%10; //выделяем количество единиц

   // int leds = round(unit);

   digitalWrite(pinSelect, LOW); // выбор регистра сдвига

       SPI.transfer(unit); // передаём значение в сдвиговый регистр

   SPI.transfer(tens); // передаём значение в сдвиговый регистр

    SPI.transfer(hundreds); // передаём значение в сдвиговый регистр

     SPI.transfer(thousands); // передаём значение в сдвиговый регистр  

    digitalWrite(pinSelect, HIGH); // конец передачи

  }

}

void loop ()

{

 

  digitalWrite(7, HIGH);   // зажигаем светодиод

  delay(1000);              // ждем секунду

  digitalWrite(7, LOW);    // выключаем светодиод

  delay(1000);              // ждем секунду

 

    int h= RTC.getHour(h24, PM);  //считываем значение часов

    int m = RTC.getMinute();      //считываем значение минут

    int number = h*100+m;         //преобразуем часы и минуты в единое четырехзначное число

    int thousands = number/1000%10; //выделяем количество тысяч

    int hundreds = number/100%10;  // выделяем количество сотен

    int tens = number/10%10;        // выделяем количество десятков

    int unit = number%10;           //выделяем количество единиц

    int t= unit;

    int u= tens;

    int v= hundreds;

    int w= thousands;

     digitalWrite(pinSelect, LOW); // выбор регистра сдвига

       SPI.transfer(t); // передаём значение в сдвиговый регистр

   SPI.transfer(u); // передаём значение в сдвиговый регистр

    SPI.transfer(v); // передаём значение в сдвиговый регистр

     SPI.transfer(w); // передаём значение в сдвиговый регистр  

    digitalWrite(pinSelect, HIGH); // конец передачи

}

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

В общем случае "объединить" два скетча - невозможно.

Чтобы скетчи допускали "объединение", они все должны удовлетворять определенным условиям.

Удовлетворяют ли Ваши скетчи этим условиям, - по понятным причинам не смотрел.

romanes
Offline
Зарегистрирован: 25.12.2020

Спасибо, все получилось создал volotile переменную запустил условие через прерывание и все пошло.  Вообще, впервые встречаюсь с таким форумом сначала флуд, затем какие-то мутные комментарии?. На кера вообще эта "песочница" нужна?

sadman41
Offline
Зарегистрирован: 19.10.2016

А накера форуму ваши скетчи объединять?