Многозадачность? ехать и мигать
- Войдите на сайт для отправки комментариев
Пнд, 27/10/2014 - 01:15
Как понял многозадачности нет, в 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;
http://arduino.ru/tutorials/BlinkWithoutDelay
Спасибо, несколько нето, или подойдет, но муторно в отладке, пока сам не знаю сколько должен мигать и через сколько шагов. Написал код. Мигание будет заложено в массиве, в отладке настроить реальное количество шагов, скорость. Вопрос как вытягивать поочередно состояния битов в байте в 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 } }решил просто массив байт, памяти пока хватает
Псевдомультизадачность
http://blog.ksduino.org/post/42862084042/pseudo-multitasking-using-timer...
сразу ответить не мог - слетает пароль на этом сайте постоянно, на других сайтах нормально.
Данный код не понятен, тем более функции отдельные. недавно оплевался почему не работает код,
в сделал фукцию void MMMM () в ней заполнение массива данными, его по выше в коде.
В loop на него вызов, не работает, т.к в нем нули, даже если вставить в тот код lcd.print(тект);
не будет печатать.
Такое встречалось в Делфи, надо было указывать в функции явные объекты и вызывать функцию указывая имена визуальных классов