Ардуино в сверлилку
- Войдите на сайт для отправки комментариев
С Новым Годом всех!
Прошу помощи в уважаемом сообществе о возможной схемной реализации следующей затеи. Нашел на металоприемке убитый сверлильный станок. Станок древний, немецкий (Хан и Колб) попал к нам скорее всего по репатриации в 45-м. Полностью восстановил, но поскольку мотор теперь стоит от стиралки и частота вращения регулируется потенциометром возникла потребность в тахометре. Сама индикация предполагается на ИН-12. Формирователь входных импульсов здесь все понятно. Начало скетча тоже понятно, есть библиотеки частотомеров. Собственно измерять нужно каждые две секунды, с последующим обновлением предыдущих измерений. Непонятно как дальше лучше схемно реализовать: 1. Создавать сразу скетч для динамической индикации, выводить на сдвиговый регистр и дальше классически 155ид1 и через ключи на ИН-12. 2. Используя библиотеку iarduino_4LED вывести на tremo-модуль и перекодировать для ИН-12. 3. Или как?
Станок на выставку достижений стим-панка пойдёт что ли?
Станок на выставку достижений стим-панка пойдёт что ли?
Та не, просто ИН12 как за баней.
Станок на выставку достижений стим-панка пойдёт что ли?
была у нас гильотина 40 годов, немецкая, на длине реза 2500 работала от папиросной бумаги 0.05 до стали 6мм интересно как со сверлилкой дело обстоит?
Ну так, чугун добротный, не китайский (весит больше 100 при габаритах обычной настольной сверлилки). Сверлит хорошо, ничего никуда не уезжает. Правда вылет пиноли не очень большой 80 мм. Ну а так обычная сверлилка, уровня хорошей советской.
Щас нас модераторы за флуд забанят.
Одно радует что не на такой станок надо Ардуину прикручивать. А то синей изоленты не напасешься. https://www.youtube.com/watch?v=eNl1B8iUSd4
Все, тахометр сделал, работает просто великолепно. Но учитывая, что станок не все время сверлит, решил расширить функционал и добавить часы на те же индикаторы. То есть когда не сверлит показывает время, включился мотор - перешел в режим тахометра. Написал скетч для часов, тоже работает. Сейчас проблема для меня как их объединить. Попробовал через прерывание (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); // конец передачи
}
В общем случае "объединить" два скетча - невозможно.
Чтобы скетчи допускали "объединение", они все должны удовлетворять определенным условиям.
Удовлетворяют ли Ваши скетчи этим условиям, - по понятным причинам не смотрел.
Спасибо, все получилось создал volotile переменную запустил условие через прерывание и все пошло. Вообще, впервые встречаюсь с таким форумом сначала флуд, затем какие-то мутные комментарии?. На кера вообще эта "песочница" нужна?
А накера форуму ваши скетчи объединять?