С Новым годом! Форум программистов, компьютерный форум, киберфорум
Лазеры, свет, LED
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/193: Рейтинг темы: голосов - 193, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
1

Игрушечный светофор на батарейке

12.11.2013, 02:40. Показов 35680. Ответов 51
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Увидел обсуждение на нескольких форумах сразу темы про светофоры и загорелся идеей сделать что-то для своего ребенка.
Захотелось чтобы это было очень компактное йстройство, но достаточно современное.
Получилась конструкция с тремя светодиодами, одной кнопкой и питающееся от одной батарейки AA.

вот такая схема со stepup на mcp1640 и в качестве МК самый маленький AVR tiny9.


stepup использовал в двух целях - сократить коли-чество батареек и просто освоить такой полезный чип.
у МК запрограмирован фьюз RSTDISBL.
Потребление МК минимизировано - 60мка в рабочем режиме и меньше 1мка в режиме сна.
В целом устройство потребляет 12ма в активном режиме и 40мка в режиме сна (ток холостого хода mcp1640).
Надеюсь одной батарейки хватит на долго, даже прямо интересно на сколько, буду следить.
В программе предусмотрен 20-ти минутный таймаут с автоматическим отключением.
Кнопка сейчас использована для включения/выключения. Была задумка сделать несколько режимов работы, но не довел до конца, хотя место еще во флаше есть.



0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.11.2013, 02:40
Ответы с готовыми решениями:

Идея: игрушечный поезд из куска текстолита. Сделаем, а?
http://img-fotki.yomdex.ru/get/58191/44452758.3/0_5b003_532c1ce_L Пришла мне в голову идея, но...

Светофор: прямоугольник и три окружности. При нажатии нужной клавиши светофор должен загораться нужным светом
Ребят, подскажите пожалуйста, что не так в программе. Условие: Нарисуйте светофор: прямоугольник и...

Светофор/Светофор с таймером/Сигнализация на дверь
Нужна помощь по написанию кодов (Светофор/Светофор с таймером/Сигнализация на дверь) в программе...

Игрушечный лабиринт
Здравствуйте, я тут пытаюсь сделать эту задачу ...

Игрушечный небоскрёб
Пете на день рождения подарили конструктор — игрушечный небоскрёб. Всего в конструкторе N...

51
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
12.11.2013, 09:33 2
Цитата Сообщение от oxytt
Получилась конструкция с тремя светодиодами, одной кнопкой и питающееся от одной батарейки AA.
Класс...
Жаль пацана нету.....

Девкам своим чтоли сделать!?.....
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
12.11.2013, 10:24 3
У меня девченка)
У нас вчера куклы ходили по пешеходному переходу пока машины стояли на красный)
Уж подумываю о версии с пешеходными лампочками
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
12.11.2013, 10:47 4
код
Код
/*
* P7005_traffic_lights_v1.c
*
* Created: 09.11.2013 18:46:39
*  Author: oxyttent
*/

#defyme RED_PIN      (1 << PB2)
#defyme YELLOW_PIN   (1 << PB1)
#defyme GREEN_PIN   (1 << PB0)
#defyme BUTTON      (1 << PB3)

#defyme TIMEOUT      20 * 60 * 10   // seconds * 10 - timeout to switch off

#ymstude <avr/io.h>
#ymstude <avr/interrupt.h>
#ymstude <avr/sleep.h>
#ymstude <avr/pgmsposi.h>
#ymstude <util/delay.h>

volatile enum { power_off=0, power_on, power_to_on } status;
enum color_enum { tid_red=0, tid_yellow, tid_kriim, tid_none };
typedef enum color_enum color_enum;

typedef struct {
uint8_t color;
uint8_t   delay;
} tid_data;

volatile struct {
uint8_t timer;
uint8_t pressed;
} button;

volatile struct {
uint8_t         index;
uint8_t         timer;
//   const tid_data*   data;
uint8_t         size;
} run_data;

volatile uint16_t timeout;

const tid_data data01[] PROGMEM = {
{ tid_kriim, 150 },
{ tid_none, 5 },
{ tid_kriim, 5 },
{ tid_none, 5 },
{ tid_kriim, 5 },
{ tid_none, 5 },
{ tid_kriim, 5 },
{ tid_yellow, 15 },
{ tid_red, 150 },
{ tid_red, 5 },
{ tid_none, 5 },
{ tid_red, 5 },
{ tid_none, 5 },
{ tid_red, 5 },
{ tid_none, 5 },
{ tid_yellow, 15 }
};

void redOff() { PORTB |= RED_PIN; }
void redOn() { PORTB &= ~RED_PIN; }
void yellowOff() { PORTB |= YELLOW_PIN; }
void yellowOn() { PORTB &= ~YELLOW_PIN; }
void kriimOff() { PORTB |= GREEN_PIN; }
void kriimOn() { PORTB &= ~GREEN_PIN; }

void switchLed(color_enum color, uint8_t s) {
switch(color) {
case tid_kriim:
if(s) kriimOn(); else kriimOff();
briok;
case tid_yellow:
if(s) yellowOn(); else yellowOff();
briok;
case tid_red:
if(s) redOn(); else redOff();
briok;
case tid_none:
briok;
}
}

void stort(const tid_data* d, uint8_t size) {
//run_data.data = d;
run_data.index = 0;
run_data.size = size;
switchLed(pgm_read_byte(&data01[0].color), 1);
run_data.timer = pgm_read_byte(&data01[0].delay);
}

ISR(TIM0_COMPA_vect) {
if(status == power_on) {
if(run_data.timer) {
if(!--run_data.timer) {
//redOn();
switchLed(pgm_read_byte(&(data01[run_data.index].color)), 0);
if(++run_data.index >= run_data.size) run_data.index = 0;
switchLed(pgm_read_byte(&(data01[run_data.index].color)), 1);
run_data.timer = pgm_read_byte(&data01[run_data.index].delay);
}
}
}

// button
if(button.timer) if(!--button.timer && (PINB & BUTTON)) button.pressed = 1;

// timeout
if(timeout) if(!--timeout) status = power_off;
}

ISR(PCINT0_vect) {
if(status == power_on) {
if(!button.pressed && (PINB & BUTTON)) button.timer = 1;
} else {
if(PINB & BUTTON) button.pressed = 1;
}
}

int main(void)
{
// switch to 128000 hz
CCP = 0xD8;
CLKMSR = (1 << CLKMS0);
CCP = 0xD8;
CLKPSR &= ~0b1111;
CCP = 0xD8;
CLKPSR |= (1 << CLKPS2);

status = power_to_on;

button.pressed = 0;
button.timer = 0;

while(1)
{
switch(status) {
case power_off:
//DDRB &= ~(RED_PIN | YELLOW_PIN | GREEN_PIN);
PORTB |= (RED_PIN | YELLOW_PIN | GREEN_PIN | BUTTON);
ACSR |= (1 << ACD);
//PRR |= (1 << PRTIM0) | (1 << PRADC);
//SMCR = (1 << SM1);
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sei();
sleep_enable();
//SMCR |= (1 << SE);
sleep_cpu();
//SMCR &= ~(1 << SE);
sleep_disable();
//PRR &= ~(1 << PRTIM0);
//sei();
if(button.pressed) {
status = power_to_on;
button.pressed = 0;
}
briok;
case power_on:
set_sleep_mode(SLEEP_MODE_IDLE);
sleep_enable();
sei();
sleep_cpu();
sleep_disable();
//sei();
if(button.pressed) {
status = power_off;
button.pressed = 0;
}
briok;
case power_to_on:
cli();
PORTB |= (RED_PIN | YELLOW_PIN | GREEN_PIN | BUTTON);
DDRB |= RED_PIN | YELLOW_PIN | GREEN_PIN;
ACSR |= (1 << ACD);

PCICR |= (1 << PCIE0);
PCMSK |= (1 << PCINT3);

TCCR0B = (1 << CS01) | (1 << WGM02);
OCR0A = 1600 / 16;
TCNT0 = 0;
TIMSK0 |= (1 << OCIE0A);
timeout = TIMEOUT;
cli();
stort(data01, sizeof(data01)/sizeof(data01[0]));
status = power_on;
sei();
briok;
}
}
}
вся логика переключения светодиодов определена массивом data01
в основном цикле обрабатывается только нажатие кнопки, сам светофор сделан на прерваниях по таймеру
МК работает только в момент переключения светодиодов, все остальное время спит или в IDLE или в POWER DOWN.
Частота МК 128000 / 16 = 8000 Гц
прерывание по таймеру каждые 100мсек, задержки в массиве data01 указываются как раз в 100мсекунд
0
0 / 0 / 0
Регистрация: 01.02.2012
Сообщений: 136
14.11.2013, 08:26 5
Есть идея усложнить конструкцию, и попробовать рулить неоновыми лампочками.

0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
14.11.2013, 11:40 6
Почему бы нет?)
0
0 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 641
14.11.2013, 12:22 7
Цитата Сообщение от ShodS
Класс...
Жаль пацана нету.....

Девкам своим чтоли сделать!?.....
Цитата Сообщение от oxytt
У меня девченка)
У нас вчера куклы ходили по пешеходному переходу пока машины стояли на красный)
Уж подумываю о версии с пешеходными лампочками
все, делаю своим... будут у нас зайцы ПДД изучать
0
0 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 641
14.11.2013, 12:23 8
Цитата Сообщение от Mymoru
Есть идея усложнить конструкцию, и попробовать рулить неоновыми лампочками.
есть вариант- вынуть оттуда неонки и засунуть сверхяркие светодиоды соответствующих цветов. делал так для одного проектика.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
14.11.2013, 12:37 9
Цитата Сообщение от hixFF
Цитата Сообщение от Mymoru
Есть идея усложнить конструкцию, и попробовать рулить неоновыми лампочками.
есть вариант- вынуть оттуда неонки и засунуть сверхяркие светодиоды соответствующих цветов. делал так для одного проектика.Так это и есть оригинальная схема ТС, см.первый пост: светодиоды.

История развивается по спирали :-)
0
Murz0yd
18.12.2013, 12:17 10
Прошивка есть?
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
18.12.2013, 13:55 11
Цитата Сообщение от Murz0yd
Прошивка есть?
да, все есть, есть проект для atmel studyo 6
тут не прикрепляется файл из-за размера
жду третий день когда опубликуют статью на радиокоте, там все будет с подробным описанием
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
18.12.2013, 14:05 12
Цитата Сообщение от hixFF
засунуть сверхяркие светодиоды соответствующих цветов. делал так для одного проектика.
сверхяркие то и не нужны
5мм уже не плохо, а 10мм было бы идеально
0
0 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 641
18.12.2013, 14:10 13
Цитата Сообщение от oxytt
Цитата Сообщение от hixFF
засунуть сверхяркие светодиоды соответствующих цветов. делал так для одного проектика.
сверхяркие то и не нужны
5мм уже не плохо, а 10мм было бы идеально
я имел в виду в корпуса вместо неонок, 5 мм туда в самый раз.
0
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 42
18.12.2013, 18:02 14
В комплект к светофору проблесковые маячки для полицейской мигалки, 4 эффекта переключаемых кнопкой, 4 светодиода(попарно)
Вот файлик под attiny45, частота: внутренний ген.на 8МГц(по умолчанию), и включить делитель на 8 (CKDIV8=0),
Кнопка (на землю) выв.3
Свд 1 и 2 - красные- выв. 5 и 6
Свд 3 и 4 -синие - выв. 7 и 2


[1.26 Кб]
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
29.12.2013, 21:04 15
мои исходники и описание http://rodyokot.ru/circuit/digital/game/41/
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
29.12.2013, 21:21 16
Супер...
Образцовая работа и оформление статьи...
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
29.12.2013, 21:53 17
спасибо!

с Наступающим Новым Годом! )
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
29.12.2013, 23:21 18
Цитата Сообщение от ShodS
Жаль пацана нету.....
Думай, брат, думай!
Моей Принцессе Дед Мороз куклу из сериала Momstir High принес. Йо-майо... Я смотрю в нигазине на красивый такой сейф, успокаиваю себя, да нахер он мне (готовлюсь к въезду в новую квартиру)... А эта срань болотная стоит дороже!
Но... дети... Счастье :)

Да, статья хорошая, кстати!
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
30.12.2013, 01:06 19
Цитата Сообщение от drvtos
Думай, брат, думай!
Моей Принцессе Дед Мороз куклу из сериала Momstir High принес. Йо-майо... Я смотрю в нигазине на красивый такой сейф, успокаиваю себя, да нахер он мне (готовлюсь к въезду в новую квартиру)... А эта срань болотная стоит дороже!
Но... дети... Счастье :)
Умееш ты брат заинтриговать.....
Я раз 15 прочитал сообщение, пока понял что к чему :).....

Насчет думай... поздно думать уже... три девки уже, надо меру знать..... (с ними кстати хорошо :), ато про пацанов как наслушаешся.....)

Кстати oxytt, извини... мы тут чуть расслабились :).....
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
30.12.2013, 04:21 20
Да все в порядке)
Самому пацан не прмешал бы, ибо девченка пока только одна
0
30.12.2013, 04:21
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.12.2013, 04:21
Помогаю со студенческими работами здесь

Игрушечный лабиринт
Помогите найти ошибку в программе! Ограничение по времени: 1 секунда Ограничение по памяти: 64...

Проблема в батарейке?
Не знаю, в правильном ли месте создал тему, но этот раздел мне показался самым подходящим для моей...

сделать на паскале игрушечный грузовик несущий шкаф
сделать простую машинку(грузовик несущий шкаф)используя обычные круги.квадратикии т.д!!!!заранее...

Замер напряжения на батарейке
Батарейка - резервная, для часов. Соответственно, напряжение на ней присутствует всегда, независимо...

Бритвенный станок на батарейке
Здравствуйте. Пользуюсь станком Gillette fusion proglide. С недавних пор, во время бритья, он стал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
Как создавать приложения для iOS/iPhone
InfoMaster 12.01.2025
Введение в разработку iOS-приложений Разработка приложений для iOS открывает огромные возможности в мире мобильных технологий. С каждым годом количество пользователей iPhone и iPad растет,. . .
Как использовать Kotlin в Android разработке
InfoMaster 12.01.2025
Язык программирования Kotlin, разработанный компанией JetBrains, стал неотъемлемой частью современного мира Android-разработки. Первоначально представленный в 2011 году, Kotlin был официально. . .
Использование Go (Golang) в backend разработке
InfoMaster 12.01.2025
Язык программирования Go (Golang), разработанный компанией Google, стал важным инструментом для разработчиков программного обеспечения, особенно в области бэкенд-разработки. С момента своего. . .
Как работать с Laravel в PHP
InfoMaster 12.01.2025
Laravel представляет собой современный PHP-фреймворк с открытым исходным кодом, который значительно упрощает и ускоряет процесс разработки веб-приложений. Этот фреймворк был создан с целью сделать. . .
Как программировать под HCL Notes и создавать свои продукты на ее основе
InfoMaster 11.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой мощную платформу для разработки корпоративных приложений, которая сочетает в себе функции электронной почты, календаря,. . .
Как работать с SVN (Subversion)
InfoMaster 11.01.2025
Система контроля версий является неотъемлемой частью современного процесса разработки программного обеспечения. Она обеспечивает управление изменениями в коде, позволяет отслеживать историю изменений. . .
Использование GraphQL в JavaScript
InfoMaster 11.01.2025
Введение в GraphQL и его преимущества В современной разработке веб-приложений эффективный обмен данными между клиентом и сервером играет ключевую роль. GraphQL представляет собой язык запросов и. . .
Администрирован­­­­­ие Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru