Как подружить random и millis?

Тема в разделе "Arduino & Shields", создана пользователем Tanatos, 20 янв 2019.

  1. Поскольку тс пропал, значить все работает. Хотя появилось ещё несколько вариантов. На свитчь кейс и простой проверке интервалов.

    Меня эта приблуда заинтересовала. Хочу сделать что то подобное. На Али продают готовые, но народ пишет быстро ломаются.

    Набор деталек видится таким.
    • Солнечная панелька ма на 15-20
    • Аккумулятор ли-ион
    • Attiny85
    • Вибромотор от зубной щетки
    С аттини пока не работал, но Дуню использовать для такой поделки, некошерно. Интересный момент Digispark стоит дешевле чем голая аттини. Думаю подключать напрямую к аккумулятору, понизить частоту до 1 МГц, и периодически отправлять спать, чтоб меньше потребляла. И шимом рандомном менять частоту вращения, чтоб кротам было разнообразие от частоты вибрации.
    Как думаете такой набор деталек подойдёт?
     
  2. qwone

    qwone Гик

    Код (C++):
    // Антикрот периодически включает реле с вибродвигателем, шум которого отпугивает кротов, землероек
    // Периодичность случайна, чтоб вредители не могли привыкнуть

    const byte relayPin = 29;
    enum state_t {sOFF, sON} state;
    unsigned long past, time;
    void stand(state_t s) {
      state = s;
      past = millis();
      time = random(3000, 6000); // генерируем длительность шума или паузы от 5 до 10 сек
      switch (state) {
        case sOFF:
          digitalWrite(relayPin, LOW);
          break;
        case sON:
          digitalWrite(relayPin, HIGH);
          break;
      }
    }
    //-----------------------------------------
    void setup() {
      pinMode(relayPin, OUTPUT); // реле
      stand(sOFF);
    }
    void loop() {
      switch (state) {
        case sOFF:
          if (millis() - past >= time)stand(sON);
          break;
        case sON:
          if (millis() - past >= time)stand(sOFF);
          break;
      }
    }
     
    Сусемьбек нравится это.
  3. Вах! Красаучег!
    Если руки дойдут, планирую проще сделать. Булькнуть мотором. Уйти в сон на рандомное время, проснутся, снова рандомно булькнуть. И так весь день. Так же считывать напряжение с солнечной панельки. Как солнце зайдет. Периоды сны увеличить а время работы двигателя уменьшить. Чтоб до утра дотянул. Теоретически должно получиться.