Освой программирование играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Сигнал SOS

Напишем пример с сигналом SOS. Напомню, что знак в азбуке Морзе выглядит как ...---.... В Википедии даётся информация о длительности точек, тире, паузах между знаками или словами. Вот и повторим, у нас всё по взрослому. Единицей времени для точки возьмём 150 миллисекунд, от этой величины и будем плясать (интересно девки пляшут).


/*
   SOS

   Если этот код работает, его написал Александр Климов,
   а если нет, то не знаю, кто его писал.

   За единицу времени принимается длительность одной точки.
   Длительность тире равна трём точкам.
   Пауза между элементами одного знака — одна точка,
   между знаками в слове — 3 точки,
   между словами — 7 точек. (Википедия)
*/

int ledPin = 10;

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // 3 dots ...
  for (int i = 0; i < 3; i++) {
    digitalWrite(ledPin, HIGH);
    delay(150);
    digitalWrite(ledPin, LOW);
    delay(150);
  }

  delay(450);

  // 3 dashes ---
  for (int i = 0; i < 3; i++) {
    digitalWrite(ledPin, HIGH);
    delay(450);
    digitalWrite(ledPin, LOW);
    delay(150);
  }

  delay(450);

  // 3 dots ...
  for (int i = 0; i < 3; i++) {
    digitalWrite(ledPin, HIGH);
    delay(150);
    digitalWrite(ledPin, LOW);
    delay(150);
  }

  // Pause and repeat again
  delay(1050);
}
Реклама