Еще раз про delay() и millis().

Leprechaun
Offline
Зарегистрирован: 25.10.2015

Здравствуйте.
Необходимо избавится от delay(20);
Сделал так:

unsigned long currentTime;

void modx1() {
for(int i = 0; i < (0,100); i = i + 1) {
leds[i] = CRGB::Green;
FastLED.show();
    //  delay(20);
int OldTime=millis();
while((millis()-OldTime)<=20)
Serial.println(OldTime);
    }
}

Беда в том что как только «OldTime» принимает отрицательное значение система перестает работать.
Если будет свободная минутка, подскажите пожалуйста, где я ошибаюсь.
Спасибо

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

время не может принимать отрицательные значения:

unsigned long OldTime=millis();

-----------

08 int OldTime=millis();
09 while((millis()-OldTime)<=20)
10 Serial.println(OldTime);
11     }

мои поздравления! - ты переизобрёл делей.

Leprechaun
Offline
Зарегистрирован: 25.10.2015

del

Leprechaun
Offline
Зарегистрирован: 25.10.2015

Принимаю поздравления. Тронут. Скупая мужская слеза скатилась по не бритой щеке. И всё же?

Если предложите свой вариант буду признателен.

Или Вы так? Потролить?

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

Leprechaun перечитайте коммент  #1  внимательно -там содержится правильный совет.

Leprechaun
Offline
Зарегистрирован: 25.10.2015

dimax, Приветствую. Можно как для тупых?) Задача"i+1" Через промежуток "X". Как мне это реализовать? Спасибо.

P.S.

unsigned long currentTime;

опечатка

 

 

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

Leprechaun пишет:

Принимаю поздравления. Тронут. Скупая мужская слеза скатилась по не бритой щеке. И всё же?

Если предложите свой вариант буду признателен.

класс титановый велосипед для delay без delay().

Leprechaun пишет:

Или Вы так? Потролить?

будешь выёбываться и тупить - пойдёшь нахуй.

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

Leprechaun, перестаньте тупить

unsigned long OldTime=millis();

читайте эту строчку до полного просветления в голове.

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

unsigned long не может быть отрицательным в принципе.

0 - 20 == 4294967275

Leprechaun
Offline
Зарегистрирован: 25.10.2015
#include<FastLED.h>
#define LED_DT 12                                             // Serial data pin for WS2801, WS2811, WS2812B or APA102                                           // Serial clock pin for WS2801 or APA102.
#define COLOR_ORDER GRB                                       // It's GRB for WS2812B
#define LED_TYPE WS2812B                                      // What kind of strip are you using?
#define NUM_LEDS 100                                           // Number of LED's.
unsigned long OldTime;
CRGBArray <NUM_LEDS> leds;
uint8_t max_bright = 255;  
#define SERIAL_BAUDRATE 57600 
void setup() {
  Serial.begin(SERIAL_BAUDRATE);                              // SETUP HARDWARE SERIAL (USB)
  LEDS.setBrightness(max_bright);                             // Set the generic maximum brightness value.
  LEDS.addLeds<LED_TYPE, LED_DT, COLOR_ORDER >(leds, NUM_LEDS); // WS2812B definition
  set_max_power_in_volts_and_milliamps(5, 500);               //5V, 500mA
  Serial.println("---SETUP COMPLETE---");


  
} // setup()



void loop() 
{
modx0();modx1();

}

 void modx0() {
for(int i = 0; i < (0,100); i = i + 1) {
leds[i] = CRGB::Green;
FastLED.show();
    //  delay(20);
int OldTime=millis();
while((millis()-OldTime)<=20)
Serial.println(OldTime);
    }
}

 void modx1() {
for(int i = 0; i < (0,100); i = i + 1) {
leds[i] = CRGB::Blue;
FastLED.show();
    //  delay(20);
int OldTime=millis();
while((millis()-OldTime)<=20)
Serial.println(OldTime);
    }
}

Так понятно?

Leprechaun
Offline
Зарегистрирован: 25.10.2015

Если OldTime=32757. Перестает действовать"задержка". Клапауций 823, выпендриваться на форуме у тебя единственная возможность почувствовать свою значимость?

Я создал топик для того что бы получить помощь более опытных людей. Вообще ни разу не для развеивания чужих комплексов. Есть желание помочь? Ок. Нет? Читай свой собственный пост выше.

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

Leprechaun пишет:

Так понятно?

ок. мало того, что тупой - так ещё и упёртый.

раз:

34 int OldTime=millis();

миллис имеет тип данных unsigned long - об этом я тебе сказал здесь #1

если тебе желается привести unsigned long в int, то делай это осознанно и если это точно необходимо, но не нужно затем вычитать отрицательные числа из unsigned long и убивляться глюкам.

Leprechaun
Offline
Зарегистрирован: 25.10.2015

Leprechaun
Offline
Зарегистрирован: 25.10.2015

Клапауций 823 пишет:

раз:

34 int OldTime=millis();

миллис имеет тип данных unsigned long - об этом я тебе сказал здесь #1

если тебе желается привести unsigned long в int, то делай это осознанно и если это точно необходимо, но не нужно затем вычитать отрицательные числа из unsigned long и убивляться глюкам.

Во) Спасибо. теперь понял. Работает. Давай мирится? ))

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

Leprechaun пишет:

Во) Спасибо. теперь понял. Работает. Давай мирится? ))

я с тобой и не ссорился.

Leprechaun
Offline
Зарегистрирован: 25.10.2015

Ок)) Хорошего дня.

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

Leprechaun пишет:

Ок)) Хорошего дня.

ну, ок. и, что ты дальше будешь делать с твоим, уже рабочим, но делаем?

может прочитаешь следующий мой пост #5 прежде, чем радоваться?

Leprechaun
Offline
Зарегистрирован: 25.10.2015

Обязательно прочту.

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

Еще бы найти уников которые в  bool millis() засунули бы. А потом бы возмущались, почему не работает. А ведь догаться что в int millis() не влазит тяжело. Пока помещается работает, а если вылез все . Конец работе.

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Работа Демо версии int millis () закончилась, пожалуйста преобретите полную версию unsigned long millis ().

Logik
Offline
Зарегистрирован: 05.08.2014

Mr.Privet пишет:
Работа Демо версии int millis () закончилась, пожалуйста преобретите полную версию unsigned long millis ().

Слет лохов-оптимистов в теме?

Ну грузим бля мегаскетч с  int millis ().


int m;

void setup()
{
  Serial.begin(9600);
  m=millis();
}

void loop()
{
 int t=millis();

 if((t-m)>10000)
{
  
   Serial.print(m);Serial.print(" ");
   Serial.print(t);Serial.print(" ");
   Serial.print(t-m);Serial.print(" ");
   Serial.println(millis());
  m=t;
}
}

Выводит.

0 10001 10001 10001
10001 20002 10001 20002
20002 30003 10001 30003
30003 -25532 10001 40004
-25532 -15530 10002 50006
-15530 -5529 10001 60007
-5529 4472 10001 70008
4472 14473 10001 80009
14473 24474 10001 90010
 
 
Теперь дружно рвем волосы с криками "я не то имел в виду".
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Клапауций 823 пишет:

может прочитаешь следующий мой пост #5 прежде, чем радоваться?

Тут не следующий нужно читать, тут еще тот самый №1 надо перечитывать - особенно последнюю строку.

 

2ТС: От delay Вы так и не избавились, Вы просто переписали ее по-другому.

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

qwone пишет:

Еще бы найти уников которые в  bool millis() засунули бы. А потом бы возмущались, почему не работает. А ведь догаться что в int millis() не влазит тяжело. Пока помещается работает, а если вылез все . Конец работе.

я нашёл такого - это я #1 и у меня работает.

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

andriano пишет:

Тут не следующий нужно читать, тут еще тот самый №1 надо перечитывать - особенно последнюю строку.

2ТС: От delay Вы так и не избавились, Вы просто переписали ее по-другому.

слёт коматозников, блин:

ТС, читает то, что я ему сказал, а рептилоид читает внимательно ВСЕ строки моих постов

Клапауций 823 пишет:

ну, ок. и, что ты дальше будешь делать с твоим, уже рабочим, но делаем?

может прочитаешь следующий мой пост #5 прежде, чем радоваться?

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

Logik пишет:

Ну грузим бля мегаскетч с  int millis ().

афигеть!

теперь всё тоже самое с char сотвори - народ должен проникнуться до всей глубины конца дна и срочно переписать статью millis()