Освой программирование играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Напишем пример с сигналом 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);
}