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

Тема в разделе "Arduino & Shields", создана пользователем HACEKOMOE_TAPAKAH, 17 фев 2018.

  1. День добрый!
    В общем сделал я на ардуино уно генератор псевдослучайных чисел.
    Вот он:
    long randNumber;

    void setup(){
    Serial.begin(9600);
    randomSeed(analogRead(0));
    }

    void loop(){
    randNumber = random(300);
    Serial.println(randNumber);

    delay(50);
    }

    Но нужно добавить в код, чтобы мне выдало 1000000 чисел и также время, за которое мне выдаст 1000000 чисел.
    Помогите плиз, очень надо
     
  2. ostrov

    ostrov Гуру

  3. ostrov

    ostrov Гуру

    А по вопросу, изучите операторы for() и millis().
     
  4. CYITEP_BAC9I

    CYITEP_BAC9I Гик

    Код (C++):
    unsigned long Counter=0;
    unsigned long start_time =0;
    unsigned long finish_time=0;
    unsigned long Result=0; //не знаю сколько там будет поэтому лонг но по моему должно инт хватить
    long randNumber;
    int i; //исправить на long i;
    void setup(){
    Serial.begin(9600);
    randomSeed(analogRead(0));
    }

    void loop(){


    delay(50);
    for ( i=0; i <= 1000000; i++) //инициализация i вынесена в глобальные переменные
    {
      randNumber = random(300);
      Serial.println(randNumber);//желательно тоже закомментировать
      //  delay(50);  //не советую ставить иначе считать будет до нового года
    if(i==0) // если это первый проход и соответсвенно первое случайное значение
      //засекаем это время поскольку в следующем цикле i будет != 0 можно и без  static  обойтись
    {
    start_time = millis();
    }

    else if(i==1000000) // если это миллионное значение то снова засекам время беря его из millis();
    {
      finish_time = millis();

      Result=finish_time-start_time;
      Serial.println("Result");
      Serial.println(Result);

      delay(5000); //останавливаем программу чтобы успеть записать время
    }

    }
    }
    один из возможных вариантов. не проверял в работе. если есть ошибки попробуйте сами исправить, так как кот я считаю расово верный.
    Нашелся бы добрый человек написать мне прогресс бары для меню.(мечты)
     
    Последнее редактирование: 17 фев 2018
  5. Спасииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииисииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииисииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииииибо
     
  6. CYITEP_BAC9I

    CYITEP_BAC9I Гик

    пожалуйста.
     
  7. ostrov

    ostrov Гуру

    Дич какая то. К примеру, как в int запихнули миллион? И вообще нахрена в сериал миллион случайных чисел?
     
  8. CYITEP_BAC9I

    CYITEP_BAC9I Гик

    маленький сюрпрайз.
    кстати для меня тоже. обсолютно одинаково для компилятора что с int что с long/ может ли ардуиновкий компилятор счить int по правилам С++ -2 147 483 648 / 2 147 483 647??? это уже мне интересно
    Код (C++):
    long i;
    long немного правильней
    по второй части ответа не в курсе)
     
    Последнее редактирование: 17 фев 2018
  9. ostrov

    ostrov Гуру

    Не должен int корректно считать до миллиона, вывалится за пределы, пойдет по второму кругу. Особенно знаковый.
     
    CYITEP_BAC9I нравится это.
  10. DIYMan

    DIYMan Guest

    Генератора случайных чисел на ардуино не получится, смотреть исходники random. От запуска к запуску будет повторяющаяся последовательность, если отталкиваться от одинакового числа, полученного первым вызовом randomSeed. Так что правильней будет это называть - генератор псевдослучайных чисел.
     
  11. CYITEP_BAC9I

    CYITEP_BAC9I Гик

    угу не пожалел время проверил. сбрасывается. не ниже long нужно
     
  12. DIYMan

    DIYMan Guest

    Ну как бы даже проверять не надо: http://www.cplusplus.com/reference/climits/
     
  13. CYITEP_BAC9I

    CYITEP_BAC9I Гик

    невнимательность(((. вот так всегда, что нибудь элементарное накосячишь, а потом несколько час материшся почему код не работает как надо
     
  14. Я и написал, что это генератор ПСЕВДОслучайных чисел.
     
    DIYMan нравится это.