Официальный сайт компании Arduino по адресу arduino.cc
Шар судьбы на Attiny13
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чт, 19/07/2018 - 22:43
Решил затеять этот проект. Источник вдохновения здесь https://habr.com/post/241728/ .
Но в данном проекте не понравилось, что шар знает только 2 ответа, "Да" и "Нет".
Вот код автора
#define F_CPU 1200000UL // Частота МК в герцах #include <avr/io.h> #include <avr/sleep.h> // здесь описаны режимы сна #include <util/delay.h> #define led_Yes 0 // grn #define led_No 1 // red #define rand_gen 3 #define wait 5000 // тайм аут перехода в спящий режим void setup() { //pinMode(led_Yes, OUTPUT); DDRB |= (1<<led_Yes); //pinMode(led_No, OUTPUT); DDRB |= (1<<led_No); } void loop() { randomSeed(analogRead(rand_gen)); // не псевдо радном byte randomValue; randomValue = random(0,2); // диапазон генератора случайных чисел от 0 до 1 if(randomValue > 0){ //digitalWrite(led_Yes, HIGH); PORTB |= (1<<led_Yes); } else{ //digitalWrite(led_No, HIGH); PORTB |= (1<<led_No); } _delay_ms(wait); system_sleep(); } void system_sleep(){ //digitalWrite(led_No, LOW); PORTB &= ~(1<<led_No); //digitalWrite(led_Yes, LOW); PORTB &= ~(1<<led_Yes); ADCSRA &= ~(1 << ADEN); // перед сном отключим АЦП ACSR |= (1 << ACD); // и компаратор // для уменьшения энергопотребления во сне set_sleep_mode(SLEEP_MODE_PWR_DOWN); // если спать - то на полную while(1) { sleep_enable(); // разрешаем сон sleep_cpu(); // спать! } }
Так как у тиньки остались еще 2 свободные ноги, то решил добавить еще два ответа, "Скорее Да" и "Скорее нет".
Немного переделал скетч автора. Вот что получилось
Проверил, работает......Но, как мне показалось устройство тяготеет к определенным пинам. Если нажимать кнопку с небольшими паузами, то загораются разные светодиоды, и создается ощущение случайности.....НО если сделать большую паузу, то загорается в основном светодиод на пине PB3, и иногда на пине PB2. PB0 и PB1 практически не загораются. И автор говорил про свой "Шар", что у него из двух светодиодов один загорается гораздо чаще.
Решил переделывать дальше.
Решил отказаться от рандома. Решил сделать так - программа быстренько изменяет значение переменной от 0 до 3. По нажатию кнопки счет останавливается и переменная приобретает по настоящему случайное значение, и зажигается по значению переменной соответствующий светодиод.
Вот такой скетч получился
Программа работает прекрасно, по настоящему случайно.... Но приходится нажимать 2 кнопки, Reset и кнопку на PB4. Может кто-то подскажет, чтобы все работало от одной кнопки?
Не хватает ответов "Будущее не определено" и "В очередь, с*кины дети" (когда очень часто на кнопку нажимают :)
А, в принципе, генератор случайных чисел надо делать аппаратным. Например на шумящих диодах.
Для дополнительных ответов ноги закончились, но...думаю, что если использовать, имеющиеся 4 бита, то можно получать 16 случайных ответов, в том числе и "В очередь, с*ки!!!!".
Спасибо всем, кто не ответил. Похоже, разберусь сам. Нашел в интернете статейку, где добрый человек делится своим опытом. Там все написано http://we.easyelectronics.ru/AVR/avr-power-management-ili-kak-pravilno-spat.html
Закончена отладка на макете супер проекта "Шар судьбы".
Схема в двух словах: к ногам 2,5,6,7 подключены светодиоды с токоограничивающими резисторами. Reset(нога 1) подтянут к питанию резистором, и еще эта нога через конденсатор 0,1 мф соединена с ногой 3, к которой присоединена кнопка. Этот пин подтянут резистором к питанию, и при нажатии кнопки, притягивается к земле, и от этой же кнопки через конденсатор срабатывает Reset, тинька просыпается и крутит цикл, пока нажата кнопка. После того как кнопка отпущена получаем случайный номер бита порта, на котором загорится один из 4-х светодиодов, и будет гореть заданное время. Потом тинька заснет до следующего нажатия.
Проверил. Все работает как надо, зажигает, засыпает... Измерил ток во время сна, не знаю на сколько объективно, мой простенький мультиметр показал 0,02 микроампера.
Вот скетчик
Так как про сон тиньки пока имею смутные понятия, не понимаю, нужен ли в конце подпрограммы void system_sleep() бесконечный цикл в конце. Разве нельзя просто заснуть?
"Шар судьбы" будет в виде брелка-таблетки размером чуть больше батарейки 2032, при сжатии которой она засветится цветом, который определяет ответ на заданный вопрос.
"Шар судьбы" будет в виде брелка-таблетки размером чуть больше батарейки 2032, при сжатии которой она засветится цветом, который определяет ответ на заданный вопрос.
Хорошая идея! Тогда можно использовать RGB светодиод, а то и с чипом внутри и не заморачиваться с количеством портов.
Хорошая идея! Тогда можно использовать RGB светодиод, а то и с чипом внутри и не заморачиваться с количеством портов.
Иногда очень помогает. Сегодня спросил у шара....сильно сомневался....выпить мне сегодня, или нет?
Шар однозначно - ДА!
Для таких случаев предлагаю минималистичный шар судьбы: светодиод, резистор, батарейка.
Для таких случаев предлагаю минималистичный шар судьбы: светодиод, резистор, батарейка.
Мне показалось, что ты из масквы. Спросил у Шара. Он сказал конкретное НЕТ.
Если он ошибся, сразу выброшу на помойку.
Не врет. Все видит, змеиный глаз.
Но только не надо 256 или 256000 цветов.
Ну 256 цветов не каждый глаз разберет, да и ответы там уже будут таблицей юникода :)
А вот семь цветов + белый вполне распознаваемо, особено если возле светодиода нарисовано с расшифровкой. Но это просто идея развития.
С удачным проектом!
Спаял плату своего "Шара судьбы". Кому интересно, можно посмотреть здесь https://youtu.be/KXt2XuiED8g
Шикарный проект!
:) Спасибо...
Супер проект "Шар судьбы" продолжается. Сегодня напечатал полушарие. Так как модель для печати довольно сложная, пришлось немного поработать наждачкой. А когда вплавлял ушко, немного паяльником поваредил ободок....но это изнутри, незначительно, снаружи не будет видно. В полушарии как в своем доме удобно разместились батарейка и плата....Все работает.
А откуда он светит?
А откуда он светит?
Вон оно как... Полусфера даст нажимать кнопку или там толкатель длинный будет?
Вон оно как... Полусфера даст нажимать кнопку или там толкатель длинный будет?
КРУТО)
КРУТО)
Сегодня завершил свой супер проект!!! Все получилось https://youtu.be/nhHyAi4Ica0
А не замахнуться ли нам.......на шар с дисплеем?
Шикарно.
один из лучших проектов на форуме, кмк :)
Спасибо