нужна помощь

romasveta2
Offline
Зарегистрирован: 19.02.2015

как сделать чтоб программы работали по очереди

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Как понять, "программы работали по очереди"??

ran075
Offline
Зарегистрирован: 24.03.2015

Написать их по очереди

romasveta2
Offline
Зарегистрирован: 19.02.2015

пишу по очереди выдает ошибку

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

 

Скетч,ошибку в студию! И объясните,наконец,что за задача перед вами стоит?

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

простой диспетчер задач

enum CODE{code1,code2,code3};
CODE code;
//=========================================================================
void setup()
{
  code=code1;
}
//=========================================================================
void loop()
{
// code1 - по вашему = программа1
  if(code1)
  {
    
    
    
  }
// code2 - по вашему = программа2
  if(code2)
  {
    
    
    
  }
// code3 - по вашему = программа3
  if(code2)
  {
    
    
    
  }
// управление программами
  // if(что-то1) code=code1;
  // if(что-то2) code=code2;
  // if(что-то3) code=code3;
}
//=========================================================================

 

romasveta2
Offline
Зарегистрирован: 19.02.2015
       
  
 
int led = 12;
 
int count = 1;
 
 
 
// the setup routine runs once when you press reset:
 
void setup() {               
 
  // initialize the digital pin as an output.
 
  pinMode(led, OUTPUT);  pinMode(11, OUTPUT);   
 
}
 
 
 
void loop() {
 
  if(count < 5) {
 
    digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
 
    delay(6000);               // wait for a second
 
    digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
 
    delay(6000);               // wait for a second
 digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
 
    delay(6000);        
    count++;
 
}
 
  
 
 
}
нужно чтоб после этого всего включался пин9 через минуту
SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

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

не забывай нажать галочки в допВкладке - свернуть и нумеровать....
поправь свой #6

тибе нужно иттить в сторону millis()

romasveta2
Offline
Зарегистрирован: 19.02.2015

вроде все просто но не получается буду пробовать жду советов

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

что не получается ? разместить здесь код ?
нормально выложите код - будут советы, примеры кодов

romasveta2
Offline
Зарегистрирован: 19.02.2015
<strong></strong>
int led = 12;

int count = 1;

// the setup routine runs once when you press reset:

void setup() {               

  // initialize the digital pin as an output.

  pinMode(led, OUTPUT);  pinMode(11, OUTPUT);   

}

void loop() {

  if(count < 5) {

    digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)

    delay(6000);               // wait for a second

    digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW

    delay(6000);               // wait for a second
 digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)

    delay(6000);        
    count++;

}

  


}
romasveta2
Offline
Зарегистрирован: 19.02.2015

romasveta2 пишет:

<strong></strong>
int led = 12;

int count = 1;

// the setup routine runs once when you press reset:

void setup() {               

  // initialize the digital pin as an output.

  pinMode(led, OUTPUT);  pinMode(11, OUTPUT);   

}

void loop() {

  if(count < 5) {

    digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)

    delay(6000);               // wait for a second

    digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW

    delay(6000);               // wait for a second
 digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)

    delay(6000);        
    count++;

}
по завершению этой программы нужно включить пин 9 через минуту
  


}

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
#define led 12
byte count=1;              // это для чего ?
void setup()
{
  pinMode(led,OUTPUT);
  pinMode(11,OUTPUT);      // за что отвечает пин 11 ?
}
//=================================================================
void loop()
{
  if(count<5)
  {
    digitalWrite(led,HIGH);    // вкл СД
    delay(6000);               // ждать 6 сек
    digitalWrite(led,LOW);     // выкл СД
    delay(6000);               // ждать 6 сек
    digitalWrite(led,HIGH);    // вкл СД
    delay(6000);               // ждать 6 сек
    count++;                   // 
}
//=================================================================
// через 4 прохода лупа - всё перестанет работать - что вы хотите от кода ?

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

1 - пин 9 у вас нигде не прописан

romasveta2
Offline
Зарегистрирован: 19.02.2015
01
#define led 12
02
byte count=1;              // это для чего ? 
03
void setup()
04
{
05
  pinMode(led,OUTPUT);
06
  pinMode(11,OUTPUT);      // за что отвечает пин 11 ? ВКЛЮЧАЕТСЯ 11 ПИН НА ПОСТОЯННО 
07
}
08
//=================================================================
09
void loop()
10
{
11
  if(count<5)
12
  {
13
    digitalWrite(led,HIGH);    // вкл СД
14
    delay(6000);               // ждать 6 сек
15
    digitalWrite(led,LOW);     // выкл СД
16
    delay(6000);               // ждать 6 сек
17
    digitalWrite(led,HIGH);    // вкл СД
18
    delay(6000);               // ждать 6 сек
19
    count++;                   //
20
}
21
//=================================================================
22
// через 4 прохода лупа - всё перестанет работать - что вы хотите от кода ?
ДА ЧЕРЕЗ ЧЕТЫРЕ ПРОХОДА ВСЕ ПЕРЕСТАНЕТ РАБОТАТЬ А 11 ПИН БУДЕТ ВКЛЮЧЕН И НУЖНО ЧТОБ 9 ПИН ВКЛЮЧИЛСЯ ЧЕРЕЗ МИНУТУ

 

romasveta2
Offline
Зарегистрирован: 19.02.2015

ВМЕСТО СВЕТОДИОДОВ У МЕНЯ РЭЛЕ СВЕТОДИОДЫ ТАК ДЛЯ ПРИМЕРА

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

#define led 12
#define relay 9
#define who 11               // чё это2 ?
byte count=1;                // это для чего ?
unsigned long oldMillis;
//=================================================================
void setup()
{
  pinMode(led,OUTPUT);
  digitalWrite(led,LOW);     // выкл СД
  pinMode(relay,OUTPUT);
  digitalWrite(relay,LOW);   // выкл реле
  pinMode(who,OUTPUT);
  digitalWrite(who,LOW);     // выкл чё это2
}
//=================================================================
void loop()
{
  if(count<5)
  {
    digitalWrite(led,HIGH);    // вкл СД
    delay(6000);               // ждать 6 сек
    digitalWrite(led,LOW);     // выкл СД
    delay(6000);               // ждать 6 сек
    digitalWrite(led,HIGH);    // вкл СД
    delay(6000);               // ждать 6 сек
    digitalWrite(led,LOW);     // выкл СД
    delay(6000);               // ждать 6 сек
    digitalWrite(who,HIGH);    // вкл чё это2
    count++;                   // 
    oldMillis=millis();
  }

  if((millis()-oldMillis)>1000)     // не выполнять пока не пройдёт секунда
  {
    digitalWrite(relay,HIGH);       // вкл реле
  }
}
//=================================================================
SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

#define led 12
#define relay 9
#define who 11               // чё это2 ?
unsigned long oldMillis;
//=================================================================
void setup()
{
  pinMode(led,OUTPUT);
  digitalWrite(led,LOW);     // выкл СД
  pinMode(relay,OUTPUT);
  digitalWrite(relay,LOW);   // выкл реле
  pinMode(who,OUTPUT);
  digitalWrite(who,LOW);     // выкл чё это2
}
//=================================================================
void loop()
{
  for(byte i=0;i<10;i++}
  {
    digitalWrite(led,HIGH);    // вкл СД
    delay(6000);               // ждать 6 сек
    digitalWrite(led,LOW);     // выкл СД
    delay(6000);               // ждать 6 сек
  }
  digitalWrite(who,HIGH);
  oldMillis=millis();

  if((millis()-oldMillis)>1000)     // не выполнять пока не пройдёт секунда
  {
    digitalWrite(relay,HIGH);       // вкл реле
  }
}
//=================================================================
romasveta2
Offline
Зарегистрирован: 19.02.2015

СПАСИБО ОГРОМНОЕ РАЗОБРАЛСЯ ЕСЛИ НЕ СЛОЖНО А КАК СЮДА ЕЩЕ ПРЕКРЕПИТЬ СЧЕТЧИК ВРЕМЕНИ ДЛЯ ДМСПЛЭЯ 16 -2 ЧЕРЕЗ SDA  SCL

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Мой вариант на 16-битном таймере:

void setup(){
TCCR1A=0; TIMSK1=(1<<TOIE1); //разрешить прерываение
ICR1=46874; //прерывание каждые 6 секунд
TCCR1B=(1<<WGM13)|(1<<CS12)|(1<<CS10); //mode 8; div 1024
pinMode (13, OUTPUT); //пин лед
pinMode (9, OUTPUT); //пин чего-то
digitalWrite (13,HIGH);// включить лед после старта
}

void loop() {   }


ISR (TIMER1_OVF_vect) { 
static int cicle=1; //счётчик входов
switch(cicle){
    case 1: //сюда влетает через 6 секунд после старта таймера
     digitalWrite (13,LOW); //отключить лед
     break;
     case 10: //сюда влетает через 60 секунд после старта таймера
    digitalWrite (9,HIGH); //включить реле
     TCCR1B=(1<<WGM13); //отключить таймер насовсем
     break;
     }
      if (cicle <10) cicle++;
  }

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

romasveta2 пишет:

СПАСИБО ОГРОМНОЕ РАЗОБРАЛСЯ ЕСЛИ НЕ СЛОЖНО А КАК СЮДА ЕЩЕ ПРЕКРЕПИТЬ СЧЕТЧИК ВРЕМЕНИ ДЛЯ ДМСПЛЭЯ 16 -2 ЧЕРЕЗ SDA  SCL

задачЮ пропишите !

romasveta2
Offline
Зарегистрирован: 19.02.2015

при включение всего выше перечисленного включается дисплей и на нем идет время работы устройства

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
#define led 12
#define relay 9
#define who 11               // чё это2 ?
unsigned long oldMillis;
//=================================================================
void setup()
{
  pinMode(led,OUTPUT);
  digitalWrite(led,LOW);     // выкл СД
  pinMode(relay,OUTPUT);
  digitalWrite(relay,LOW);   // выкл реле
  pinMode(who,OUTPUT);
  digitalWrite(who,LOW);     // выкл чё это2
}
//=================================================================
void loop()
{
  for(byte i=0;i<10;i++}
  {
    digitalWrite(led,HIGH);    // вкл СД
    delay(6000);               // ждать 6 сек
    digitalWrite(led,LOW);     // выкл СД
    delay(6000);               // ждать 6 сек
  }
  digitalWrite(who,HIGH);
  oldMillis=millis();

  if((millis()-oldMillis)>1000)     // не выполнять пока не пройдёт секунда
  {
    digitalWrite(relay,HIGH);       // вкл реле
  }
  
  // вывод на дисплей millis() - время от начала работы кода в миллисекундах
}
//=================================================================