Здравствуйте, меня зовут Евгений, хочу создать устройство подачи проволоки для аргоно-дуговой сварки, из старого подающего устройства от полуавтомата. Снял со старого устройства электро мотор постоянного тока, принес его домой и начал свой путь ардуинщика.
Задумка следующая, мотор должен крутится в нескольких режимах. Их будет 3 или 4, но для старта достаточно 2-х, о них пойдет речь дальше.
Всего будет две кнопки, одна на подающем устройстве с проволокой(она будет выбирать режим работы мотора) , вторая на аргоновой горелке что б подавать проволоку когда нужно в соответствии с выбранным режимом. Еще на самом устройстве будет потенциометр, который будет давать ШИМ на мотор.
1. Режим 2-х тактный(кнопку на горелке нажал - мотор крутится с заданной скоростью, отпустил - не крутится).
2. Режим 4-х тактный (кнопку на горелке нажал отпусти - мотор крутится, нажал отпустил - не крутится, в процессе нужно иметь возможность регулировки вращения мотором).
Выбор режима хотел сделать следующим образом, кнопка на подающем устройстве, одиночное нажатие 2Т режим, двойное нажатие 4Т режим.(и тройное и четверное нажатие, следующие режимы, но пока без них...)
По отдельности режимы работают, но когда я хочу их объединить в одну программу ничего не работает, мне кажется из за опроса кнопок. когда кнопка выбора программы нажата, кнопка на горелке не работает. Как сделать так чтоб работала?
Подскажите ... или какой нибудь пример с подобной работой мотора может есть.
Задумка следующая, мотор должен крутится в нескольких режимах. Их будет 3 или 4, но для старта достаточно 2-х, о них пойдет речь дальше.
Всего будет две кнопки, одна на подающем устройстве с проволокой(она будет выбирать режим работы мотора) , вторая на аргоновой горелке что б подавать проволоку когда нужно в соответствии с выбранным режимом. Еще на самом устройстве будет потенциометр, который будет давать ШИМ на мотор.
1. Режим 2-х тактный(кнопку на горелке нажал - мотор крутится с заданной скоростью, отпустил - не крутится).
2. Режим 4-х тактный (кнопку на горелке нажал отпусти - мотор крутится, нажал отпустил - не крутится, в процессе нужно иметь возможность регулировки вращения мотором).
Выбор режима хотел сделать следующим образом, кнопка на подающем устройстве, одиночное нажатие 2Т режим, двойное нажатие 4Т режим.(и тройное и четверное нажатие, следующие режимы, но пока без них...)
По отдельности режимы работают, но когда я хочу их объединить в одну программу ничего не работает, мне кажется из за опроса кнопок. когда кнопка выбора программы нажата, кнопка на горелке не работает. Как сделать так чтоб работала?
Подскажите ... или какой нибудь пример с подобной работой мотора может есть.
C++:
#define BTN_PIN 4 //кнопка на горелке
#define BTN_PIN 3 //кнопка на подающем устройстве
#include <GyverMotor.h>
#include <GyverButton.h>
GButton butt1(3);
GButton butt2(4);
int value = 0;
GMotor motor(DRIVER2WIRE, 2, 9);
void setup() {
Serial.begin(9600);
attachInterrupt(1, isr, CHANGE);
butt1.setDebounce(90); // настройка антидребезга (по умолчанию 80 мс)
butt1.setTimeout(300); // настройка таймаута на удержание (по умолчанию 500 мс)
butt1.setTickMode(AUTO);
butt2.setDebounce(90); // настройка антидребезга (по умолчанию 80 мс)
butt2.setTimeout(300); // настройка таймаута на удержание (по умолчанию 500 мс)
butt2.setTickMode(AUTO);
// Пины D9 и D10 - 15.6 кГц 10bit
TCCR1A = 0b00000011; // 10bit
TCCR1B = 0b00001001; // x1 fast pwm
motor.setResolution(10);
motor.setMode(AUTO);
motor.setMinDuty(0);
}
void isr() {
butt1.tick();
butt2.tick();
}
void loop() {
butt1.tick();
butt2.tick();
if (butt1.hasClicks()){
Serial.println(butt1.getClicks());
switch (butt1.getClicks()){ //выбор режима
case 0:
break;
case 1: // режим 2-х тактный
if (butt2.isHold()) {
unsigned int speed = map(analogRead(0), 0, 1023, 0, 1023);
motor.setSpeed(speed);
Serial.print("Holding ");
}
if (butt2.isRelease()){
motor.setSpeed(STOP);
Serial.println("Release");
}
break;
case 2: // режим 4-х тактный
if (butt2.isSingle()){
Serial.println("Single");
unsigned int speed = map(analogRead(0), 0, 1023, 0, 1023);
motor.setSpeed(speed);
}
if (butt2.isRelease()){
Serial.println("Release");
motor.setSpeed(STOP);
break;
}
}
}
}