типичный таймер

juk
Offline
Зарегистрирован: 11.01.2017

Уважаемые Знатоки,Подскажите пожалуйста. Не могу написать программу для ардуино, а именно. 1 кнопка включает цикл ,10 минут св.диод горит, 5 минут не горит и так по кругу. но нажав кнопку 2,первый цикл отключается а второй, св.диод горит 20 мин. и 10 отдыхает и также по кругу. Помогите пожалуйста лузеру))

nik182
Offline
Зарегистрирован: 04.05.2015

Так покажите что вы уже написали и что - где не получается.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

nik182 пишет:

Так покажите что вы уже написали и что - где не получается.

я запретил.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

juk пишет:

Не могу написать программу

А Вы пробовали? И на чём заткнулись? Код и описание проблемы в студию.

Если же Вы не пробовали и не хотите, а хотите, чтобы кто-то сделал за Вас, то Вам прямая дорога в раздел, где люди заказывают программы за плату. 

В это разделе помогают тем, кто делает сам. Хотя, ... есть тут у нас один любитель всем подряд готовые коды писать. Если Вам повезёт и он не пропустит эту тему ... может и напишет.

nik182
Offline
Зарегистрирован: 04.05.2015

Да ладно. Где опубликован запрет? До публикации в бумажной газете запрет не может вступить в силу. Сожалею, но не могу принять ваш запрет во внимание :-(

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

ЕвгенийП пишет:

А Вы пробовали?

я запретил.

juk
Offline
Зарегистрирован: 11.01.2017
int LedPin = 13;             
  int ButPin = 10;            
 
void setup()
{
  pinMode(LedPin, OUTPUT);    
}  
 
void loop()
{
  if(digitalRead(ButPin) == HIGH)        
    { 
      digitalWrite(LedPin, !digitalRead(LedPin));        
      delay(500);
      digitalWrite(LedPin, HIGH);  
  delay(10000);                  
  digitalWrite(LedPin, LOW);    
  delay(100);                  
                 
 
    }
}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

1. http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

2. Прокомментировать не хотите? Например, где у Вас вторая кнопка? Хоть пин на неё назначенный?

А то Вы нам тут, похоже, blink продаёте :)

juk
Offline
Зарегистрирован: 11.01.2017
 int LedPin = 13;             
  int ButPin = 10;            
  int LedPin = 12;
  int ButPin = 11;
void setup()
{
  pinMode(LedPin, OUTPUT);    
}  

void loop()
{
  if(digitalRead(ButPin) == HIGH)        
    { 
      digitalWrite(LedPin, !digitalRead(LedPin));        
      delay(500);
      digitalWrite(LedPin, HIGH);  
  delay(10000);                  
  digitalWrite(LedPin, LOW);    
  delay(100);                  
                 

    }
}

 

juk
Offline
Зарегистрирован: 11.01.2017

вот, и не знаю как дольше с кодам быть 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, для начала, Вы его запустить пытались?

juk
Offline
Зарегистрирован: 11.01.2017

канечно

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

И что? Опишите проблему. Чем Вам этот код не нравится?

Я клещами из Вас тянуть буду?

nik182
Offline
Зарегистрирован: 04.05.2015

Вы знаете, что такое блоксхема? Можете её нарисовать для вашего алгоритма? Если да, то нарисуйте, а потом каждый блок замените оператором ардуино. Если нет, то возьмите книги по програмированию и почитайте. Когда получится - добро пожаловать.

Для наводки на информацию ознакомьтесь с темами

http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no...

http://arduino.ru/tutorials/BlinkWithoutDelay

http://arduino.ru/forum/programmirovanie/etyudy-dlya-nachinayushchikh-bl...

http://arduino.ru/Reference/Else

Этого достаточно для написания вашей программы.

juk
Offline
Зарегистрирован: 11.01.2017

juk пишет:

Я писал

Не могу написать программу для ардуино, а именно. 1 кнопка включает цикл ,10 минут св.диод горит, 5 минут не горит и так по кругу. но нажав кнопку 2,первый цикл отключается а второй, св.диод горит 20 мин. и 10 отдыхает и также по кругу. Помогите пожалуйста лузеру))

имею ввиду может есть у кого скетч готовый, на что-то похожее

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы не хотите, отвечать на мой вопрос "что не так с Вашим кодом" и продолжать работу?

Ну, тогда, я Вам уже писал что делать - идите в раздел, где люди заказывают программы за плату, там Вам дадут готовый код.

Поймите, Вам могут помочь, но именно помочь самому написать. Писать же за Вас никому не интересно (разве что "за интерес", но это в другом разделе).

juk
Offline
Зарегистрирован: 11.01.2017

ясно, Вобщем. Я сам электрик по оброзованию.(подходит ко мне бабушка и просит заменить лампочку, я ей иди ка ты от учись на Эл. как я, и у тебя обязательно все получится. когда человек не понимаеть суть вопроса, то разобратся ему самому будет очень долго. мне нужен был примет, на пять кнопок я напишу сам. ссылки выше просто обьясняют существования кнопки,платы ардуино и т.д. Ладно все равно всем спасибо за помощь. значит не мое

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Понимаете, здесь не бюро добрых услуг. Здесь тематический форум, где общаются люди с общими интересами. Если Вам эта тема интересна - Вы учитесь. Если неинтересна, проходите мимо. Если же неинтресна, учиться не хотите, но сделать надо - платите деньги.

Когда человек хочет научиться, ему здесь помогают, и я уже начал это делать по отношению к Вам. Но Вам лень ответить на простой вопрос - "как ведёт себя привелённый Вами код и чем он Вас не устраивает". ну, лень, так лень - дело Ваше.

А просто так взять и написать за Вас код ... знаете сколько тут таких как Вы каждый день? У нас тут нет штатных писателей кодов, которые бы целый день этим занимались. Вот Вы, электрик - всем подряд бабушкам лампочки задарма меняете? И как? Остаётся время хотя бы пообедать (я уж не говорю про "заработать на обед")?

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

juk пишет:

Я сам электрик по оброзованию.(подходит ко мне бабушка и просит заменить лампочку

ты бесплатный электрик или бабушка? - определись.

gena
Offline
Зарегистрирован: 04.11.2012

  Наверное я тоже лузер, потому что мне бесплатно не хотят оказывать услуги. Вот сволочи!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
/* to_juk.ino
  #1 2 мигалки ->13
  #2 кнопка ->2
  #3 кнопка ->3
  Принцип кода:1 включаем - ничего не мигает
               2 нажимает кнопку 1 => мигает 0.3 s горит 0.3 s не горит
               3 нажимает кнопку 2 => мигает 1s    горит   1 s не горит
*/
//#1 светодиод
#include "Cl_Blink.h"
#define LED_PIN 13
Cl_Blink Blink1(LED_PIN, 0, 300, 300); // (пин,логика,время Led ON,время Led ON) /создать мигающий светодиод на пине 13
Cl_Blink Blink2(LED_PIN, 0,1000,1000); // (пин,логика,время Led ON,время Led ON) /создать мигающий светодиод на пине 13
void func1() {
  Blink2.OFF();
  Blink1.ON();
}
void func2() {
  Blink1.OFF();
  Blink2.ON();
}
//#2 кнопка 1
#include "Cl_press_btn.h"
#define BTN1_PIN 2
Cl_press_btn Btn1(BTN1_PIN); // создать кнопку на пине 2
//#3 кнопка 1
#define BTN2_PIN 3
Cl_press_btn Btn2(BTN2_PIN); // создать кнопку на пине 3

void setup() {
  //#1 светодиод
  Blink1.setup();
  Blink2.setup();
  //#2 кнопка
  Btn1.setup();
  //#3 кнопка
  Btn2.setup();
}
void loop() {
  //#1 светодиод
  Blink1.loop();
  Blink2.loop();
  //#2 кнопка
  Btn1.loop(& func1);
  //#3 кнопка
  Btn2.loop(& func2);
}
/*Cl_Blink.cpp
*/
#include "Arduino.h"
#include "Cl_Blink.h"
Cl_Blink::Cl_Blink(byte _pin, bool _logic, uint32_t _time_ON, uint32_t  _time_OFF) {
  led_pin = _pin;
  logic = _logic;
  time_ON =  _time_ON;
  time_OFF =  _time_OFF;
}
void Cl_Blink::setup(void) {
  pinMode(led_pin, OUTPUT)     ;// подключить cветодиод
  digitalWrite(led_pin, led = 0) ; // выключить светодиод
  blink = 0 ; // выключить мигание
}
void Cl_Blink::loop(void ) {
  if (blink && led && millis() - past > time_ON) {
    past = millis();
    digitalWrite(led_pin, led = 0);
  }
  if (blink && ! led && millis() - past > time_OFF) {
    past = millis();
    digitalWrite(led_pin, led = 1);
  }
}
void Cl_Blink::ON(void ) {
  blink = 1;
  past = millis();
  digitalWrite(led_pin, led = 1);
}
void Cl_Blink::OFF(void ) {
  blink = 0;
  digitalWrite(led_pin, led = 0);
}
/*Cl_Blink.h
*/
#ifndef Cl_Blink_h
#define Cl_Blink_h

#include "Arduino.h"
class Cl_Blink {
  public:
    Cl_Blink(byte _pin, bool _logic, uint32_t _time_ON, uint32_t  _time_OFF); // конструктор
    void setup(void); // поставить в setup()
    void loop(void) ; // поставить в loop()
    void ON(void)   ; // включить мигание
    void OFF(void)  ; // выключить мигание
  private:
    bool logic     ; //  при 0 светодиод горит при 1 //  при 1 светодиод горит при 0
    byte led_pin   ; // нога светодиода
    bool led       ; // состояние светодиода
    bool blink = 0 ; // 1 мигание / 0 нет
    uint32_t time_ON, time_OFF  ; // время  Led ON, время  Led OFF
    uint32_t past = 0 ;
};
#endif //Cl_Blink_h
/*Cl_press_btn.cpp
*/
#include "Arduino.h"
#include "Cl_press_btn.h"
Cl_press_btn::Cl_press_btn(byte _pin) {
  btn_pin = _pin;
}
void Cl_press_btn::setup() {
  pinMode(btn_pin, INPUT_PULLUP);// подключить кнопку 1 с подтяжкой
  btn = digitalRead(btn_pin) ; // прочитать реальное значение на выводе
}
void Cl_press_btn::loop(void (* _func_1)()) {
  if (! bounce_btn && btn != digitalRead(btn_pin)) { // если прошел фронт изм на выводн
    bounce_btn = 1;                                 // выставить флаг
    past = millis();                         // сделать временую засветку
  }
  else if ( bounce_btn && millis() - past >= 5 ) { // если прошло антидребезговое время
    bounce_btn = 0;      // то снять флаг
    btn_old = btn ;
    btn = digitalRead(btn_pin) ; // прочитать реальное значение на выводе
    if (btn_old && ! btn) _func_1()  ;
  }
}
/*Cl_press_btn.h
*/
#ifndef Cl_press_btn_h
#define Cl_press_btn_h

#include "Arduino.h"
class Cl_press_btn {
  public:
    Cl_press_btn(byte _pin);
    void setup();
    void loop(void (* _func_1)());
  private:
    byte btn_pin ;
    bool btn, btn_old;
    bool bounce_btn = 0; // антидребезговый флаг
    uint32_t past = 0 ;
};
#endif //Cl_press_btn_h

 

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

qwone пишет:

/* to_juk.ino
  #1 2 мигалки ->13
  #2 кнопка ->2
  #3 кнопка ->3
  Принцип кода:1 включаем - ничего не мигает
               2 нажимает кнопку 1 => мигает 0.3 s горит 0.3 s не горит
               3 нажимает кнопку 2 => мигает 1s    горит   1 s не горит
*/
//#1 светодиод
#include "Cl_Blink.h"
#define LED_PIN 13
Cl_Blink Blink1(LED_PIN, 0, 300, 300); // (пин,логика,время Led ON,время Led ON) /создать мигающий светодиод на пине 13
Cl_Blink Blink2(LED_PIN, 0,1000,1000); // (пин,логика,время Led ON,время Led ON) /создать мигающий светодиод на пине 13
void func1() {
  Blink2.OFF();
  Blink1.ON();
}
void func2() {
  Blink1.OFF();
  Blink2.ON();
}
//#2 кнопка 1
#include "Cl_press_btn.h"
#define BTN1_PIN 2
Cl_press_btn Btn1(BTN1_PIN); // создать кнопку на пине 2
//#3 кнопка 1
#define BTN2_PIN 3
Cl_press_btn Btn2(BTN2_PIN); // создать кнопку на пине 3

void setup() {
  //#1 светодиод
  Blink1.setup();
  Blink2.setup();
  //#2 кнопка
  Btn1.setup();
  //#3 кнопка
  Btn2.setup();
}
void loop() {
  //#1 светодиод
  Blink1.loop();
  Blink2.loop();
  //#2 кнопка
  Btn1.loop(& func1);
  //#3 кнопка
  Btn2.loop(& func2);
}
/*Cl_Blink.cpp
*/
#include "Arduino.h"
#include "Cl_Blink.h"
Cl_Blink::Cl_Blink(byte _pin, bool _logic, uint32_t _time_ON, uint32_t  _time_OFF) {
  led_pin = _pin;
  logic = _logic;
  time_ON =  _time_ON;
  time_OFF =  _time_OFF;
}
void Cl_Blink::setup(void) {
  pinMode(led_pin, OUTPUT)     ;// подключить cветодиод
  digitalWrite(led_pin, led = 0) ; // выключить светодиод
  blink = 0 ; // выключить мигание
}
void Cl_Blink::loop(void ) {
  if (blink && led && millis() - past > time_ON) {
    past = millis();
    digitalWrite(led_pin, led = 0);
  }
  if (blink && ! led && millis() - past > time_OFF) {
    past = millis();
    digitalWrite(led_pin, led = 1);
  }
}
void Cl_Blink::ON(void ) {
  blink = 1;
  past = millis();
  digitalWrite(led_pin, led = 1);
}
void Cl_Blink::OFF(void ) {
  blink = 0;
  digitalWrite(led_pin, led = 0);
}
/*Cl_Blink.h
*/
#ifndef Cl_Blink_h
#define Cl_Blink_h

#include "Arduino.h"
class Cl_Blink {
  public:
    Cl_Blink(byte _pin, bool _logic, uint32_t _time_ON, uint32_t  _time_OFF); // конструктор
    void setup(void); // поставить в setup()
    void loop(void) ; // поставить в loop()
    void ON(void)   ; // включить мигание
    void OFF(void)  ; // выключить мигание
  private:
    bool logic     ; //  при 0 светодиод горит при 1 //  при 1 светодиод горит при 0
    byte led_pin   ; // нога светодиода
    bool led       ; // состояние светодиода
    bool blink = 0 ; // 1 мигание / 0 нет
    uint32_t time_ON, time_OFF  ; // время  Led ON, время  Led OFF
    uint32_t past = 0 ;
};
#endif //Cl_Blink_h
/*Cl_press_btn.cpp
*/
#include "Arduino.h"
#include "Cl_press_btn.h"
Cl_press_btn::Cl_press_btn(byte _pin) {
  btn_pin = _pin;
}
void Cl_press_btn::setup() {
  pinMode(btn_pin, INPUT_PULLUP);// подключить кнопку 1 с подтяжкой
  btn = digitalRead(btn_pin) ; // прочитать реальное значение на выводе
}
void Cl_press_btn::loop(void (* _func_1)()) {
  if (! bounce_btn && btn != digitalRead(btn_pin)) { // если прошел фронт изм на выводн
    bounce_btn = 1;                                 // выставить флаг
    past = millis();                         // сделать временую засветку
  }
  else if ( bounce_btn && millis() - past >= 5 ) { // если прошло антидребезговое время
    bounce_btn = 0;      // то снять флаг
    btn_old = btn ;
    btn = digitalRead(btn_pin) ; // прочитать реальное значение на выводе
    if (btn_old && ! btn) _func_1()  ;
  }
}
/*Cl_press_btn.h
*/
#ifndef Cl_press_btn_h
#define Cl_press_btn_h

#include "Arduino.h"
class Cl_press_btn {
  public:
    Cl_press_btn(byte _pin);
    void setup();
    void loop(void (* _func_1)());
  private:
    byte btn_pin ;
    bool btn, btn_old;
    bool bounce_btn = 0; // антидребезговый флаг
    uint32_t past = 0 ;
};
#endif //Cl_press_btn_h

 

ты хоть фотку у бабушки попроси, прежде чем лампочки в слепую менять.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

qwone пишет:

/* to_juk.ino
  #1 2 мигалки ->13
  #2 кнопка ->2
  #3 кнопка ->3
  Принцип кода:1 включаем - ничего не мигает
               2 нажимает кнопку 1 => мигает 0.3 s горит 0.3 s не горит
               3 нажимает кнопку 2 => мигает 1s    горит   1 s не горит
*/
//#1 светодиод
#include "Cl_Blink.h"
#define LED_PIN 13
Cl_Blink Blink1(LED_PIN, 0, 300, 300); // (пин,логика,время Led ON,время Led ON) /создать мигающий светодиод на пине 13
Cl_Blink Blink2(LED_PIN, 0,1000,1000); // (пин,логика,время Led ON,время Led ON) /создать мигающий светодиод на пине 13
void func1() {
  Blink2.OFF();
  Blink1.ON();
}
void func2() {
  Blink1.OFF();
  Blink2.ON();
}
//#2 кнопка 1
#include "Cl_press_btn.h"
#define BTN1_PIN 2
Cl_press_btn Btn1(BTN1_PIN); // создать кнопку на пине 2
//#3 кнопка 1
#define BTN2_PIN 3
Cl_press_btn Btn2(BTN2_PIN); // создать кнопку на пине 3

void setup() {
  //#1 светодиод
  Blink1.setup();
  Blink2.setup();
  //#2 кнопка
  Btn1.setup();
  //#3 кнопка
  Btn2.setup();
}
void loop() {
  //#1 светодиод
  Blink1.loop();
  Blink2.loop();
  //#2 кнопка
  Btn1.loop(& func1);
  //#3 кнопка
  Btn2.loop(& func2);
}
/*Cl_Blink.cpp
*/
#include "Arduino.h"
#include "Cl_Blink.h"
Cl_Blink::Cl_Blink(byte _pin, bool _logic, uint32_t _time_ON, uint32_t  _time_OFF) {
  led_pin = _pin;
  logic = _logic;
  time_ON =  _time_ON;
  time_OFF =  _time_OFF;
}
void Cl_Blink::setup(void) {
  pinMode(led_pin, OUTPUT)     ;// подключить cветодиод
  digitalWrite(led_pin, led = 0) ; // выключить светодиод
  blink = 0 ; // выключить мигание
}
void Cl_Blink::loop(void ) {
  if (blink && led && millis() - past > time_ON) {
    past = millis();
    digitalWrite(led_pin, led = 0);
  }
  if (blink && ! led && millis() - past > time_OFF) {
    past = millis();
    digitalWrite(led_pin, led = 1);
  }
}
void Cl_Blink::ON(void ) {
  blink = 1;
  past = millis();
  digitalWrite(led_pin, led = 1);
}
void Cl_Blink::OFF(void ) {
  blink = 0;
  digitalWrite(led_pin, led = 0);
}
/*Cl_Blink.h
*/
#ifndef Cl_Blink_h
#define Cl_Blink_h

#include "Arduino.h"
class Cl_Blink {
  public:
    Cl_Blink(byte _pin, bool _logic, uint32_t _time_ON, uint32_t  _time_OFF); // конструктор
    void setup(void); // поставить в setup()
    void loop(void) ; // поставить в loop()
    void ON(void)   ; // включить мигание
    void OFF(void)  ; // выключить мигание
  private:
    bool logic     ; //  при 0 светодиод горит при 1 //  при 1 светодиод горит при 0
    byte led_pin   ; // нога светодиода
    bool led       ; // состояние светодиода
    bool blink = 0 ; // 1 мигание / 0 нет
    uint32_t time_ON, time_OFF  ; // время  Led ON, время  Led OFF
    uint32_t past = 0 ;
};
#endif //Cl_Blink_h
/*Cl_press_btn.cpp
*/
#include "Arduino.h"
#include "Cl_press_btn.h"
Cl_press_btn::Cl_press_btn(byte _pin) {
  btn_pin = _pin;
}
void Cl_press_btn::setup() {
  pinMode(btn_pin, INPUT_PULLUP);// подключить кнопку 1 с подтяжкой
  btn = digitalRead(btn_pin) ; // прочитать реальное значение на выводе
}
void Cl_press_btn::loop(void (* _func_1)()) {
  if (! bounce_btn && btn != digitalRead(btn_pin)) { // если прошел фронт изм на выводн
    bounce_btn = 1;                                 // выставить флаг
    past = millis();                         // сделать временую засветку
  }
  else if ( bounce_btn && millis() - past >= 5 ) { // если прошло антидребезговое время
    bounce_btn = 0;      // то снять флаг
    btn_old = btn ;
    btn = digitalRead(btn_pin) ; // прочитать реальное значение на выводе
    if (btn_old && ! btn) _func_1()  ;
  }
}
/*Cl_press_btn.h
*/
#ifndef Cl_press_btn_h
#define Cl_press_btn_h

#include "Arduino.h"
class Cl_press_btn {
  public:
    Cl_press_btn(byte _pin);
    void setup();
    void loop(void (* _func_1)());
  private:
    byte btn_pin ;
    bool btn, btn_old;
    bool bounce_btn = 0; // антидребезговый флаг
    uint32_t past = 0 ;
};
#endif //Cl_press_btn_h

 

Обратите внимание на последнюю фразу моего поста.

Как же ему не попёрло, что разобиделся как гимназистка и ушёл Вас не дождавшись.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

ЕвгенийП пишет:

Как же ему не попёрло, что разобиделся как гимназистка и ушёл Вас не дождавшись.

Я не для него делал. Я просто его условие задачи взял для отработки решения подобных задач. Не было его, взял бы другую . Тем более вот пришел и за пару часов нарисовал решение.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

qwone пишет:

Я не для него делал. Я просто его условие задачи взял для отработки решения подобных задач. Не было его, взял бы другую . Тем более вот пришел и за пару часов нарисовал решение.

маладец - человечище, соль земли, не было бы таких как ты, человечество состояло бы исключительно из самостоятельных и самодостаточных личностей, а не из того гавна, что сейчас.

спасибо, в общем...