Официальный сайт компании Arduino по адресу arduino.cc
Управление коллекторным мотором
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 07/02/2017 - 00:10
//управление мотором с индикацией (индикатор с общим анодом) int dataPin = 11; //Пин подключен к DS входу 74HC595 int latchPin = 8; //Пин подключен к ST_CP входу 74HC595 int clockPin = 12; //Пин подключен к SH_CP входу 74HC595 int motor = 9; // Номер Pin к которому подключен мотор int Speed_motor =0; // Переменная в которой хранится уровень motor (От 0 до 254) int buttonPlus=A0; // Номер Pin к которому подключена кнопка + int buttonMinus=A1; // Номер Pin к которому подключена кнопка - byte ind [10] = {0b00000011,0b10011111,0b00100101,0b00001101,0b10011001,0b01001001,0b01000001,0b00011111,0b00000001,0b00001001 }; //матрица для индикатора void setup() { //устанавливаем режим OUTPUT pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(motor, OUTPUT); // Порт 11 (motor) } void loop() { if (digitalRead(buttonPlus) == HIGH ) { Speed_motor += 24 ;// Увеличиваем значение переменной motor на 25 единиц. digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, ind[+1]); digitalWrite(latchPin, HIGH); delay(250); } if (digitalRead(buttonMinus) == HIGH) { Speed_motor -=24; //Уменьшаем значение переменной motor на 25 единиц. digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, ind[-1]); digitalWrite(latchPin, HIGH); delay(250); } Speed_motor = constrain(Speed_motor,0, 254); // Эта функция контролирует, что бы переменная Speed_motor не стала больше 254 и меньше 0, если значение вылазит за границу то функция 0 или 254 analogWrite(motor,Speed_motor); // Устанавливаем состояние скорости для motor delay(250); // Пауза 250 миллисекунд. }
Ребята подскажите , где ошибка в скетче ? индикатор не работает как нужно. как его засинхронизировать с выходом ШИМ ?
Сам индикатор в порядке , подключён верно , запускал тест (перебор цифр в цикле , работает ) в скетче не получается заставить работать снхронно с кнопками (
а что вообще будет нормально работать с такими делеями)))
а где борьба с дребезгом кнопки ?
строчка 39 "антидребезг" ))
да вроде работает, только индикатор ведёт себя неадекватно
Не проверял Здесь скетч https://yadi.sk/d/WctzWY7T3DFDdf
Головной файл выкладываю
qwone , спасибо ! опробовал уже , ШИМ регулируется , индикатор при однократных нажатиях переходит сразу из 1 в 9(по циклу пребирает эти два значения) и обратно , (кнопка не имеет значения ), при удержании кнопки btn_plus идикатор переходит в циклический перебор символов (на ШИМ по осцилографу не влияет ) btn_minus при возвращении в 0 останавливает цикл .
поменял в строке 15 и 19 значение с 24-х на 17 , начал считать до 9-ти , но нужно что то делать с ШИМ ...
в общем пытаюсь разобратся )
немого изменил скетч , так работает , но
после цифры 9 счёт идёт дальше и переполняет регистр ...
в общем верхнее ограничение счёта нужно допилить , нижнее отлично работает
qwon , огромное спасибо !!! немного подшаманил ваш скетч и всё заработало !))