Многозадачность? ехать и мигать

RANDREY
Offline
Зарегистрирован: 10.06.2012

Как понял многозадачности нет, в MEGA. Хочется ехать шаговиком и мигать светодиодом, причем не постоянно. Как идея эмулировать многозадачность, делая команды попеременно, сделать массив байтовых чисел. И последовательно читать их, в целях экономии места вжать в байт 8 состояний 1-0, включено, выключено LED. 255 = 1111 1111 мигание 8 раз, в практическом смысле LED горит постоянно, но зато машинка проезжает 8 шагов. 0000 1100 моргнули. 

Вопрос так сойдет или как нибудь попроще через перерывания ?- подается +1 шаговику, а в основном потоке мигаем светодиодом сколько надо.

Если через массив выбирать значения из байта?

for a:=0 to 7 do begin

ledstatus=MASSIV[a].subbyte ???? 

end;

 

MaksMS
Offline
Зарегистрирован: 11.03.2013
RANDREY
Offline
Зарегистрирован: 10.06.2012

Спасибо, несколько нето, или подойдет, но муторно в отладке, пока сам не знаю сколько должен мигать и через сколько шагов. Написал код. Мигание будет заложено в массиве, в отладке настроить реальное количество шагов, скорость. Вопрос как вытягивать поочередно состояния битов в байте в 33 строчке? Вкользь фукцию не нашел





#include <Stepper.h>


#define STEPS 400
Stepper stepper(STEPS, 7, 22, 6, 23);  
int FlashLED[255];
byte M,loopbutes;
byte S;
boolean boolo;
byte LEDpin;




//------------------SETUP--------------------------------
void setup()
{
  LEDpin=49;
  int FlashLED[10]={0,255,127,0,0,0,0,0,0,255};
  stepper. setSpeed(20); 
  pinMode(LEDpin,OUTPUT);  // LED SIGNAL
}


void loop()

{
  
  for (int M=0; M <= 255; M++){
  S=FlashLED[M];
     for (int loopbutes=0; loopbutes <= 7; loopbutes++){
      stepper.step(11);
  // boolo= ?????  S.  subbyte[loopbutes];  
  if (boolo==true) { digitalWrite(LEDpin, HIGH); }
                  else {digitalWrite(LEDpin, LOW);}
  
                                                        } // end block loopbyte                                                      
  }
  
}

 

RANDREY
Offline
Зарегистрирован: 10.06.2012

решил просто массив байт, памяти пока хватает

inspiritus
Offline
Зарегистрирован: 17.12.2012
RANDREY
Offline
Зарегистрирован: 10.06.2012

сразу ответить не мог - слетает пароль на этом сайте постоянно, на других сайтах нормально.

Данный код не понятен, тем более функции отдельные. недавно оплевался почему не работает код,

в сделал фукцию void MMMM () в ней заполнение массива данными, его по выше в коде.

В loop на него вызов, не работает, т.к в нем нули, даже если вставить в тот код lcd.print(тект);

не будет печатать.

Такое  встречалось в Делфи, надо было указывать в функции явные объекты и вызывать функцию указывая имена визуальных классов