​Игрушечный светофор работает как настоящий, а Новогодняя звёздочка переливается лучами

​Игрушечный светофор работает как настоящий, а Новогодняя звёздочка переливается лучами

У наших детей и внуков сейчас множество машин. Малыши имитируют улицы, организовывают движение игрушечного транспорта, но чего у них нет — это полноценно работающего светофора. Игра бы получилась бы более интересной и познавательной, а движение игрушечных машин осознанным. Ещё добавить дорожные знаки и можно за игрой изучать правила уличного движения.


Задумано — сделано. Берём ненужную подставку от старенького удлинителя USB, использованную шариковую ручку, небольшой кусочек монтажного текстолита и кусок тонкого картона (неважно от чего). Подставка USB станет подставкой для светофорного столба. Отрезанный кусок одноразовой ручки - самим фонарным столбом. На куске монтажного текстолита распаяем цветные светодиоды, а из куска картона сделаем короб светофора. Гуашью покрасим в чёрный цвет и покроем бесцветным лаком, чтобы защитить от влаги, а так же для пущей эстетики, да и пальцы малышей не будут пачкаться.


Управление огнями светофора отдадим микроконтроллеру. Нам нужен простой, дешёвый и малогабаритный. Поэтому воспользуемся серией ATtiny85 (У китайцев они стоят копейки). С компьютера, через программу "Arduino" зальём в него небольшой скетч, который приведён ниже. Светодиоды подпаяем к пинам микроконтроллера согласно описания в скетче и ву-аля — наш светофор работает. Даже зелёный сигнал мигает и предупреждает, что скоро переключится на жёлтый. Питание микроконтроллера на ваше усмотрение: либо через USB, либо от маленького аккумулятора или батареи. Я не стал заморачиваться и для питания использовал 9 вольтовую батарею типа «Крона».


const int LED_RED = 0; // Порт 0, красный светодиод

const int LED_YELLOW = 1; // Порт 1, желтый светодиод

const int LED_GREEN = 2; // Порт 2, зеленый светодиод

const int TIMEOUT_RED = 20000; // Время горения красного сетодиода

const int TIMEOUT_YEL = 5000; // Время горения желтого светодиода

const int TIMEOUT_GREEN = 20000; // Время горения зеленого светодиода

const int TIMEOUT_FLASH_GREEN = 500; // Время мигания зеленого светодиода

void setup()

{

// Все порты светодиодов будут у нас установлены в режим "внешняя нагрузка", OUTPUT

pinMode(LED_RED, OUTPUT);

pinMode(LED_YELLOW, OUTPUT);

pinMode(LED_GREEN, OUTPUT);

// Устанавливаем начальное значение светодиодов

digitalWrite(LED_RED, LOW);

digitalWrite(LED_YELLOW, LOW);

digitalWrite(LED_GREEN, LOW);

}

void loop()

{

// Включаем зеленый цвет светофора

digitalWrite(LED_GREEN, HIGH); // Включаем светодиод

delay(TIMEOUT_GREEN); // Ждем

// Мигаем зеленым светодиодом 3 раза

for (int i=0; i<3; i++)

{

digitalWrite(LED_GREEN, LOW);

delay(TIMEOUT_FLASH_GREEN);

digitalWrite(LED_GREEN, HIGH);

delay(TIMEOUT_FLASH_GREEN);

}

// Теперь отключаем зеленый и включаем желтый светодиод

digitalWrite(LED_GREEN, LOW);

digitalWrite(LED_YELLOW, HIGH);

delay(TIMEOUT_YEL);

// Отключаем желтый светодиод.

digitalWrite(LED_YELLOW, LOW);

// Теперь включаем красный цвет

digitalWrite(LED_RED, HIGH);

delay(TIMEOUT_RED);

// Включаем желтый светодиод,не выключая красный

digitalWrite(LED_RED, LOW);

digitalWrite(LED_YELLOW, HIGH);

delay(TIMEOUT_YEL);

// Отключаем желтый и красный светодиоды.

digitalWrite(LED_YELLOW, LOW);

}


Наш светофор работает прямо как настоящий и детям играть станет веселее, и увлекательнее. За что они вам скажут спасибо. Ведь игрушка необычная, да и вряд ли вы найдёте её в магазине. Удачи в конструировании.

Вот такой получился светофор

Так выглядит микроконтроллер ATiny85 с разъёмом для программирования через USB компьютера

Кстати, на базе микроконтроллере FTiny85 можно модернизировать и мигающую звёздочку, о которой я писал в прошлый раз. Заменить всю пайку, состоящую из кучи деталей: микросхемы, транзисторы, резисторы, конденсаторы на всего лишь одну маленькую плату микроконтроллера, прошить скетч, который я привожу ниже, и лучи звезды будут последовательно зажигаться, пока не засветятся все пять лучей, что, наверное, более интересно, чем простое мигание. Кроме того, в любой момент можно что-то подправить в скетче и жизнь новогодней звёздочки вновь изменится. В отличии от железной логики здесь имеется полная воля полёта фантазии и возможность без пайки, простым перепрограммированием что-то изменить. Вот сам скетч:

const int LED_UP = 0; // Порт 0, верхний луч
const int LED_LFT = 1; // Порт 1, левый луч
const int LED_DWNL = 2; // Порт 2, левый нижний луч
const int LED_DWNR = 3; // Порт 3, правый нижний луч
const int LED_RGT = 4; // Порт 4, правый луч
const int TIMEOUT1 = 100; // Время горения красного сетодиода
const int TIMEOUT2 = 200; // Время горения желтого светодиода
const int TIMEOUT3 = 300; // Время горения зеленого светодиода
const int TIMEOUT4 = 4000; // Время мигания зеленого светодиода
const int razy1 = 3; // Время цикла1
const int razy2 = 6; // Время цикла2
void setup()
{

// Устанавливаем начальное значение светодиодов
pinMode(LED_UP, LOW);
pinMode(LED_LFT, LOW);
pinMode(LED_DWNL, LOW);
pinMode(LED_DWNR, LOW);
pinMode(LED_RGT, LOW);
// Все порты светодиодов будут установлены в режим "внешняя нагрузка", OUTPUT
pinMode(LED_UP, OUTPUT);
pinMode(LED_LFT, OUTPUT);
pinMode(LED_DWNL, OUTPUT);
pinMode(LED_DWNR, OUTPUT);
pinMode(LED_RGT, OUTPUT);

}
void loop()
{
// Включаем звезду
digitalWrite(LED_UP, HIGH); // Включаем верхний луч
delay(TIMEOUT1); // Ждем

digitalWrite(LED_LFT, HIGH); // Включаем левый луч
delay(TIMEOUT1); // Ждем

digitalWrite(LED_DWNL, HIGH); // Включаем верхний луч
delay(TIMEOUT1); // Ждем

digitalWrite(LED_DWNR, HIGH); // Включаем верхний луч
delay(TIMEOUT1); // Ждем

digitalWrite(LED_RGT, HIGH); // Включаем верхний луч
delay(TIMEOUT4); // Ждем

// В обратном порядке
// Выключаем звезду
digitalWrite(LED_UP, LOW); // Включаем верхний луч
delay(TIMEOUT2); // Ждем

digitalWrite(LED_RGT, LOW); // Включаем левый луч
delay(TIMEOUT2); // Ждем

digitalWrite(LED_DWNL, LOW); // Включаем верхний луч
delay(TIMEOUT2); // Ждем

digitalWrite(LED_DWNR, LOW); // Включаем верхний луч
delay(TIMEOUT2); // Ждем

digitalWrite(LED_LFT, LOW); // Включаем верхний луч
delay(TIMEOUT4); // Ждем


}

Распиновка выводов видна в тексте. Питание устройства от старой пятивольтовой зарядки мобильника. Её тока вполне хватает.

10:30
Нет комментариев. Ваш будет первым!