Привет всем умникам=) У меня небольшая проблема. Собираю схему аппарата для магнитотерапии, компоненты уже все купил. И хочу чтобы импульсы длиной 15 мс и с паузой в 2 секунды подавались с ардуино дальше на плату, где стоит диод который формирует треугольный импульс из того, что пришло с генератора. Но вот беда. Скетча генератора не нашел, а сам его писать пока не умею( купил ардуино 4 дня назад). Есть ли здесь люди которые могут помочь написать скетч и объяснить мне дураку, как он работает?
Да и еще должен работать на нескольких частотах 10, 17, 30, 50, 100 Гц. Причем управляется с кнопки без фиксации. Для меня пока вообще не выполнимая задача.
Как работает пример blink разобрались? Возьмите его за основу и переделывайте под свои нужды. Все то же самое, только значения задержек сменить нужно будет.
Да, спасибо) разобрался, вот только не понимаю, как дописать скетч на то, чтобы он при нажатии кнопок переключал 5 режимов работы(т.е. менял частоту).
Нажатие кнопки умеете обрабатывать? Нужно завести массив с временами задержки и переменную для хранения текущей позиции в массиве. По нажатию кнопки циклически менять значение этой переменной.
Не умею.только что заставил мигать диод с помощью прерывания отдельно от основной программы, где также стоит диод, но теперь уже с кнопкой с фиксацией. Текст программы: "пока используется только кнопка Push = 12. #include <TimerOne.h> // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; int Push = 12; int Push2 = 8; int Push3 = 7; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); pinMode(Push, INPUT); pinMode(Push2, INPUT); pinMode(Push3, INPUT); Timer1.initialize(); // 1 секунда по умолчанию - то, что надо Timer1.pwm(10, ); // полсекунды светимся (512 / 1024), на полсекунды гасим pinMode(10, OUTPUT); Timer1.attachInterrupt(Timer1_action); } void Timer1_action() { // LED секунду горит, секунду - нет digitalWrite(10, !digitalRead(10)); } // the loop routine runs over and over again forever: void loop() { if (digitalRead(Push) == HIGH) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } }
Библиотека для обработки нажатия кнопок живет тут: http://playground.arduino.cc/code/bounce Вот так по нажатию кнопки можно перебирать значения задержек: Код (Text): #include <Bounce.h> #define DELAY_COUNT 5 int delayValues[DELAY_COUNT] = { 100, 200, 300, 400, 500 }; int delayIndex = 0; #define BUTTON 12 #define LED 13 // Instantiate a Bounce object with a 5 millisecond debounce time Bounce bouncer = Bounce(BUTTON, 5); void setup() { pinMode(BUTTON,INPUT); } void loop() { // обновить состояние кнопки bouncer.update( ); // если кнопка нажата if(bouncer.read() == HIGH) { // прибавили номер задержки delayIndex++; // если номер задержки превышает длину // массива задержек - сбросить его в 0 if(delayIndex == DELAY_COUNT) delayIndex = 0; } // текущая задержка, выбираемая нажатиями кнопки int delayValue = delayValues[delayIndex]; }