0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
|
|
1 | |
Игрушечный светофор на батарейке12.11.2013, 02:40. Показов 35680. Ответов 51
Метки нет (Все метки)
Увидел обсуждение на нескольких форумах сразу темы про светофоры и загорелся идеей сделать что-то для своего ребенка.
Захотелось чтобы это было очень компактное йстройство, но достаточно современное. Получилась конструкция с тремя светодиодами, одной кнопкой и питающееся от одной батарейки AA. вот такая схема со stepup на mcp1640 и в качестве МК самый маленький AVR tiny9. stepup использовал в двух целях - сократить коли-чество батареек и просто освоить такой полезный чип. у МК запрограмирован фьюз RSTDISBL. Потребление МК минимизировано - 60мка в рабочем режиме и меньше 1мка в режиме сна. В целом устройство потребляет 12ма в активном режиме и 40мка в режиме сна (ток холостого хода mcp1640). Надеюсь одной батарейки хватит на долго, даже прямо интересно на сколько, буду следить. В программе предусмотрен 20-ти минутный таймаут с автоматическим отключением. Кнопка сейчас использована для включения/выключения. Была задумка сделать несколько режимов работы, но не довел до конца, хотя место еще во флаше есть.
0
|
12.11.2013, 02:40 | |
Ответы с готовыми решениями:
51
Идея: игрушечный поезд из куска текстолита. Сделаем, а? Светофор: прямоугольник и три окружности. При нажатии нужной клавиши светофор должен загораться нужным светом Светофор/Светофор с таймером/Сигнализация на дверь Игрушечный лабиринт Игрушечный небоскрёб |
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
|
|
12.11.2013, 09:33 | 2 |
Сообщение от oxytt
Жаль пацана нету..... Девкам своим чтоли сделать!?.....
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; } } } в основном цикле обрабатывается только нажатие кнопки, сам светофор сделан на прерваниях по таймеру МК работает только в момент переключения светодиодов, все остальное время спит или в 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
История развивается по спирали :-)
0
|
Murz0yd
|
|
18.12.2013, 12:17 | 10 |
Прошивка есть?
|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
|
|
18.12.2013, 13:55 | 11 |
Сообщение от Murz0yd
тут не прикрепляется файл из-за размера жду третий день когда опубликуют статью на радиокоте, там все будет с подробным описанием
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
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
Я раз 15 прочитал сообщение, пока понял что к чему :)..... Насчет думай... поздно думать уже... три девки уже, надо меру знать..... (с ними кстати хорошо :), ато про пацанов как наслушаешся.....) Кстати oxytt, извини... мы тут чуть расслабились :).....
0
|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
|
|
30.12.2013, 04:21 | 20 |
Да все в порядке)
Самому пацан не прмешал бы, ибо девченка пока только одна
0
|
30.12.2013, 04:21 | |
30.12.2013, 04:21 | |
Помогаю со студенческими работами здесь
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 может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
|