Помогите плиз решить задачку
- Войдите на сайт для отправки комментариев
Втр, 28/02/2017 - 20:40
Здравствуйте.
Задача в следующем: есть моргающий с определенной частотой светодиод и есть 2 кнопки... к примеру кнопка2 часть цикла находиться в нажатом состоянии и подает на 7 вход высокий уровень, а вот кнопка1 на входе 8 находится в низком уровне, мне нужно, что бы при разовом нажатии на кнопку1 светодиод погас (на 13том выходе появился 0 ) до момента пока на кнопке2 не появится низкий уровень и цикл повторялся поновой...
В силу того что на данный момент я полный нуб в вопросе программирования arduino прошу помощи у опытных. Буду очень благодарен.
Пока остановился на этом этапе -
int knopka = 8;
int knopka2 = 7;
int led = 13;
void setup() {
// put your setup code here, to run once:
pinMode(knopka, INPUT);
pinMode(knopka2, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (digitalRead(knopka) == HIGH)
{
digitalWrite(led, LOW);
}
else {
digitalWrite(led, HIGH);
delay(200);
digitalWrite(led, LOW);
delay(200);
}
}
Мой вариант такой Полный скетч здесь https://yadi.sk/d/Kzqip-WK3Eoc7h
Главный файл такой
/* class_module_Led.ino #1 светодиод ->13 #2 кнопка 1 -> 2 вкл светодиод #3 кнопка 2 -> 3 светодиод мигает #4 кнопка 3 -> 4 выкл светодиод */ // #1 светодиод #include "Cl_module_led.h" const byte led1_pin = 13; Cl_module_led Led1(led1_pin); // создать // #2 кнопка #include "Cl_module_do_btn.h" const byte btn1_pin = 2; Cl_module_do_btn Btm1(btn1_pin); // создать void Do_Btm1() { Led1.ON(); } // #3 кнопка const byte btn2_pin = 3; Cl_module_do_btn Btm2(btn2_pin); // создать void Do_Btm2() { Led1.OFF(); } // #4 кнопка const byte btn3_pin = 4; Cl_module_do_btn Btm3(btn3_pin); // создать void Do_Btm3() { Led1.blink(); } void setup() { //#1 светодиод Led1.T_blink = 500; // частота мигания Led1.logic = 1;// зажигать светодиод если на выводе 0 Led1.setup(); //#2 кнопка 1 Btm1.setup(); //#3 кнопка 2 Btm2.setup(); //#4 кнопка 3 Btm3.setup(); } void loop() { // #1 светодиод Led1.loop(); // #2 кнопка 1 Btm1.loop(& Do_Btm1); // #3 кнопка 2 Btm2.loop(& Do_Btm2); // #4 кнопка 3 Btm3.loop(& Do_Btm3); }Диод это я так прилепил для наглядности, что бы было проще разобраться для себя, а вообще там используется делеймикросеконд и задержки в 400 микросекунд. Таким образом я сформировал прямоугольный импульс для управления драйвером шаговика.... Но вот со скетчем, что-то никак...
Все тоже самое. Замени в классе Cl_module_led millis micros() и дальше выставляй.
Спасибо, попробую разобраться в той куче строк...
Все работает, заменил в Cl_module_led millis на micros и в class_module_Led в строке
ввожу 800 микросекунд, я так понимаю это полный период и соответствует частоте в 1.25 килогерца?
800 это скорее полупериод . А частота 1000000/(800+800)=625Гц
Спасибо!