Конечные автоматы - для "школьников". Есть такое?

И в исходниках будет другой вид скетчей - с delay.

С прискорбием вынужден согласиться.
… И всё равно надо как то упрощать - объяснять как сливать два делаевских скетча в один псевдопараллельный, как циклы менять на ифы и т.д.

Блин, слежу за темой, и все время не отпускает мысль, что нужно к стоматологу.

При чем тут стоматолог? А при чем делаи и прочие времЕнные параметры к КА?

При том, что зуб болит? И постоянно напоминает о себе, пока Вы следите за темой? Угадал?

Нет, делаи (время) и КА? где связь?

Архат сам ушел, сообщив, что его тут тгавит компания, специально зарегистрировавшаяся на форуме для этого дела в 2016-м году. А у него, между тем, бессрочная виза в любую страну на выбор. Не помню уж каким отделом из Управления Миров выданная…

В музыке это называется стаккато.

Если субъективно, то человек искренне полагал, что все кругом в дерьме, а он один - в белом.
А объективно - максимум закона Даннинга-Крюгера.

Всегда думал, что стаккато это отрывисто, но если Вы сказали, поверю больше чем себе.

Там много оттенков, но если уменьшить их количество до двух основных, то пауза длиной в четверть ноты - это, безусловно, стаккато.
Собственно, альтернатива - легато, там паузы нет вообще.

Спасибо за разъяснения. Уж было начал подозревать о наличии у себя синдрома

Как можно упрощать то, что и так упрощено. Например Вы делаете устройство. И у него должно быть музыкальное сопровождение. На кнопку нажали, бикнуло. СМС пришло пропищало, работу закончило Марш прозвучал. И при этом если засунул музыку в программу, программа продолжала работать.

/*Music*/
const byte BuzzerPin = 10; // пин подключения зуммера
#include "pitches.h"
const int melody[] PROGMEM = {4, NOTE_C4, 8, NOTE_G3, 8, NOTE_G3, 4, NOTE_A3, 4, NOTE_G3, 4, 0, 4, NOTE_B3, 4, NOTE_C4, 0, 0};
const int melodyStart[] PROGMEM = {4, NOTE_A3, 0, 0};
const int melodyDo_1[] PROGMEM = {4, NOTE_C4, 0, 0};
const int melodyDo_2[] PROGMEM = {4, NOTE_G3, 0, 0};
const int melodyDo_3[] PROGMEM = {4, NOTE_B3, 0, 0};
const int temp = 800; // темп исполнения
//-- музыкальный движок
void (*musics)() = {};
uint32_t Mpast, time;
int* ii;
void stopMusic() {
  musics = {[]() {}};
}
void playMusic(const int *data) {
  int n = pgm_read_word(data); if (n == 0)return;
  ii =  (int *)data + 1; time = temp / n ;
  tone(BuzzerPin, pgm_read_word(ii), time / 1.3);
  musics = {[]() {
    if (millis() - Mpast >= time) {
      Mpast = millis();
      ii++;
      int n = pgm_read_word(ii);
      if (n == 0)stopMusic();
      else {
        time = temp / n; ii++;
        tone(BuzzerPin, pgm_read_word(ii),  time / 1.3);
      }
    }
  }
           };
}
//------------------------
uint32_t  T1 = 500, T2 = 400, T3 = 300;
int i = 0;
void (*events)() = {};
int state;
uint32_t past;
void go(int s) {
  state = s;
  past = millis();
  switch (s) {
    case 1:
      i = 0;
      events = {[]() {
        if (millis() - past >= T1) {
          Serial.println("Do 1");
          playMusic(melodyDo_1);//<- проиграть мелодию
          past = millis();
          i++; if (i > 3) go(2);
        }
      }
             };
      break;
    case 2:
      i = 0;
      events = {[]() {
        if (millis() - past >= T2) {
          Serial.println("Do 2");
          playMusic(melodyDo_2);//<- проиграть мелодию
          past = millis();
          i++; if (i > 3) go(3);
        }
      }
             };
      break;
    case 3:
      i = 0;
      events = {[]() {
        if (millis() - past >= T3) {
          Serial.println("Do 3");
          playMusic(melodyDo_3);//<- проиграть мелодию
          past = millis();
          i++; if (i > 3) go(0);
        }
      }
             };
      break;
    default:
      playMusic(melody);//<- проиграть мелодию
      Serial.println("End");
      events = {[]() {
      }
             };
      break;
  }
}
//------------------------------
void setup() {
  Serial.begin(9600);
  go(1);
  playMusic(melodyStart);//<- проиграть мелодию melodyStart
}
void loop() {
  events();
  musics();
}

Вот и эта причина как и почему занимаешься КА.

Ваще то нон-легато! В стаккато скважность сильно больше ))

Не нам судить.

1 лайк

Еще раз: есть две основные градации, причем все, что не легато - стаккато.
Если учитывать дополнительные градации, то стаккато - пауза примерно 50%, а нон-легато - около 10% (но это не точно). Здесь - 25%. Где-то посередине.

Их именно три. У них даже нотация разная

1 лайк

форум плавно перетёк в музыкальную школу…

“Доминанта разрешается в тонику”. Мы тоже кой-чего могЁм! Правда это единственное, что осталось в голове. :heart_eyes:


Ну да, и нужно фальшивым “дикшантом” проорать: “Ке белла кОза на юрнАта сОле!!”

Лучше он скатился бы до унифицированного ардуино музыкального движка и библиотеки PROGMEM музыкальных фрагментов. Какую захотел с свой код поставить, такую и поставил.

Наюха такая убогость в XXI веке? Ну, я бы ещё понял “библиотека для управления нормальными звуковухами”. Но пищать ногодрыгом в наше-то время …

1 лайк

Камни другие надо. Сложно на одной струне изобразить оркестр.