В данном сктече мне нужно сделать так что бы между выключением и включением была еще одна пауза, но которая была бы в 2 раза меньше "pauseLED", т.е. как бы привязаться к этой переменной и разделить ее на 2. Каким образом это можно выполнить?
Столкнулся с тем, что тини обрабатывает ИК код от пульта не так, как Arduino.
Приветствю!
Частота верно указана в настройках и зашита? Я отлаживал код на атмеге328 и для тини13 просто убирал серийный порт и использовал идентичное подключение по портам PB2, etc. На атмеге мой же код работает? Даёт стабильный результат? Я алгоритм, кажется, не менял, только упростил оригинальный код и довёл до состояния стабильной работоспособности на тини. Вы пробовали другой пульт или сенсор? Не знаю актуален ли еще ваш вопрос... Хм.. как вариант попробовать прошивку из статьи, она то 100% рабочая, только надо найти в ней константы кодов кнопок и как то заменить..
burbuzin1 пишет:
если q==5, мигаем 5 раз, если q==2, мигаем 2 раза итд.
Интересный способ, но вы уверены что код четырёхзначный? Я бы мог предложить извратиться и передать код по битам типа:
//нужен пин клоков и пин сигнала//псевдокод:
for (unsigned char i = 0; i < 16; i++) {
clock pin HIGH
if (bitRead(irCode, i) == true) {
data pin HIGH
} else {
data pin LOW
}
delay 1sec
clock pin LOW
delay 1sec
}
//что то сделать что бы разделить начало и конец передачи
и потом записать на бумажку код, который будет иметь вид
1010110101 и сунуть его в стандартный калькулятор в режиме программирования. хотя это тоже забавный вел. или сделать приёмник на атмеге.
UPD: по поводу велосипеда... уух, а ведь лонг то 32бита или 4байта. это будет долго, нужен приёмник
1. Частота указана и зашита верно. После опредения кода пульта, полученный код работает с любой частотой установленной на тини.
2. Я также отлаживал код на Atmega328, в итоге код пульта получаемый в атмеге отличается от кода получаемого в тинию. Подключение идентичное. В подключении проблемы нет, т.к. моя проверка оказалась жизнеспособная. На атмеге результат стабильный, коды для всех кнопок уникальные.
3. Другой пульт не пробовал. Пробовал менять приёмник. Результат тотже.
4. Код из статьи не работает в моём случае, т.к. коды кнопок пульта определяются по разному в атмеге и в тини. И коды кнопок пульта получаются не оригинальными, если я использую свой велосипед. Т.е. полученное мной значение irCode подходит еще для 2-3 кнопок.
5. Код четырёх значный в моём случае. Количество знаков в коде я определяю циклом:
\\начальное значение счетчика
q=0
while{
\\делим на 10 пока делится
irCode >=10){ \\
irCode = irCode / 10}
}
\\результат q это количество итераций цикла, а значит и количество разрядов в IrCode
Пробовал использовать другой код для определения кода пульта, там получалось 9 значное число. И ситуация повторялась, код получался не уникальным и срабатывание происходит еще на 2-3 кнопках.
6. Ваш велосипед я не понял, попробуйте по другому объяснить.
не силен в программировании, но мне надо сделать следущее:
у нас есть кнопка которая подключена к PB1. по ее нажатию проверялось наличие 3.3вольта на PB4. и Если оно отсутсвует посылалась логическая "1" на pb0, если нет то логическая "1" на PB2. Если не сложно помогите с кодом
Мне нужно чтобы микроконтроллер заводил вачдог на 1 / 2 / 4 / 8 сек, засыпал, причём очень крепко, даже АЦП чтобы не работал и потом по вачдогу от ресета просыпался, исполнял что нужно и когда нужно засыпал опять на некоторое время.
А можно сделать так, чтобы тинька просыпалась по нажатию кнопки, моргала один раз диодом и снова засыпала?
Мне нужно чтобы микроконтроллер заводил вачдог на 1 / 2 / 4 / 8 сек, засыпал, причём очень крепко, даже АЦП чтобы не работал и потом по вачдогу от ресета просыпался, исполнял что нужно и когда нужно засыпал опять на некоторое время.
А можно сделать так, чтобы тинька просыпалась по нажатию кнопки, моргала один раз диодом и снова засыпала?
Нет, нужно чтобы что-то делала а когда нужно засыпала.
Вот мои старые наработки, данный код пишет в энергонезависимую память числа 333 666 999, демонстрируя то, что можно записать число типа int, то есть максимум 65534:
#include <avr/eeprom.h> // не забываем подключить
#define redLed 0 // красный светодиод подключен к PB0
#define yellowLed 1 // жёлтый подключен к PB1
#define greenLed 2 // зелёный - PB2
int level1 = 0;
int level2 = 0;
int level3 = 0;
void setup() {
EEPROMWriteInt(0,333); // записываем наши числа
EEPROMWriteInt(2,666); // максимум можно 65534
EEPROMWriteInt(4,999); // чего более чем достаточно
pinMode(redLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(greenLed, OUTPUT);
level1 = EEPROMReadInt(0); // 0 и 1 ячейки
delay(50); // небольшая задержка не помешает
level2 = EEPROMReadInt(2); // 2 и 3 ячейки
delay(50);
level3 = EEPROMReadInt(4); // 4 и 5 ячейки
delay(50);
}
void loop() {
int Value = analogRead(2); // считываем напряжение на PB4
// PB4 это ADC2
if (Value > level1) {
digitalWrite(redLed, HIGH);
}
else {
digitalWrite(redLed, LOW);
}
if (Value > level2) {
digitalWrite(yellowLed, HIGH);
}
else {
digitalWrite(yellowLed, LOW);
}
if (Value > level3) {
digitalWrite(greenLed, HIGH);
}
else {
digitalWrite(greenLed, LOW);
}
}
//Функции (с) Кэп
void EEPROM_write(int uiAddress, char ucData)
{
while(EECR & (1<<EEWE)); /*Ждать завершения предыдущей записи*/
EEAR = uiAddress; /*Проинициализировать регистры*/
EEDR = ucData;
EECR |= (1<<EEMWE); /*Установить флаг EEMWE*/
EECR |= (1<<EEWE); /*Начать запись в EEPROM*/
}
char EEPROM_read(int uiAddress)
{
while(EECR & (1<<EEWE)); /*Ждать завершения предыдущей записи*/
EEAR = uiAddress; /* Проинициализировать регистр адреса*/
EECR |= (1<<EERE); /*Выполнить чтение*/
return EEDR;
}
void EEPROMWriteInt(int p_address, int p_value) // принимает 2 параметра, адресс и число 0...65534
{ // забирает 2 ячейки, так что использовать ячейки 0, 2, 4, 6...
byte lowByte = ((p_value >> 0) & 0xFF);
byte highByte = ((p_value >> 8) & 0xFF);
EEPROM_write(p_address, lowByte);
EEPROM_write(p_address + 1, highByte);
}
int EEPROMReadInt(int p_address) //Считывает число в диапазоне 0...65534
{ // использует 2 ячейки, так что считывает ячейки 0, 2, 4, 6...
byte lowByte = EEPROM_read(p_address);
byte highByte = EEPROM_read(p_address + 1);
return ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00);
}
Вроде как закоментировано всё, думаю ни у кого не возникнет вопросов что как работает.
Только это в случае глубокого сна(разбудить можно нажав кнопку ресет или отрубив и подав питание).
как контроллеру ресет сделать? замкнуть 1 и 8 ноги (т.е. подать + на 1 ногу)?
Под ногами 1 и 8 Вы имеете ввиду Reset и Vcc?
Если да, то так ничего не произойдёт, потому что порт ресет итак "подтянут" к плюсу питания, нужно к GND(4-я нога) "подтянуть", вот тогда плата уйдёт в ступор, а если отжать кнопку то перезагрузиться и всё код начнётся исполняться по новой.
Вылезает и прижимается замечательно. Мне часто флешки приходиться заливать, вот и купил. Ваша конструкция не нова и очень хорошая, но не так удобна. Приходится постараться , при прижиме такого мелкого корпуса. Дам совет, не мой, с просторов инета, сделаете маску, микруха сама будет падать в нужное место.
Вот такое дело. На ардуино леонардо собрал схемку из примера "Knock" https://www.arduino.cc/en/tutorial/knock Подобрал параметр threshold из скетча (например 300). На ардуино все работает.
Пробую перенести сие на Тиньку13, не прокатывает. Датчик к 2 ноге цепляю (в скетче А3 программирую). Может параметр опять нужно подбирать, нет никаких соответствий? А то, менять-прошивать- проверять-опятьменять-прошивать-проверять очень утомительно получается.
Уважаемый HWman , в крайнем core прошиваю через ардуино тиньку мигать диодом 1 секунду, но он явно мигает меньшей длительностью импульса. Это можно как-то победить?
А что там у Вас с фьюзами в этом файлике? Посмотрите что там у Вас, в любом калькулятора фьюзов посмотрите, каким настройкам это соответствует. Можно поиграть с делителем на 8.
А что там у Вас с фьюзами в этом файлике? Посмотрите что там у Вас, в любом калькулятора фьюзов посмотрите, каким настройкам это соответствует. Можно поиграть с делителем на 8.
а где этот делитель искать? или просто его учитывать в программе?
Смотрите в файлике какие у Вас прописаны фьюзы, находите любой онлайн калькулятор фьюзов, например вот: http://radioshemi.ucoz.ru/FUSI/calc.html?part=ATtiny13 их масса, вводите туда свои фьюзы (интересуют LOW) и смотрите какие выбраны настройки. Интересует делитель: Внутренний делитель на 8; [CKDIV8=0]. По умолчанию он установлен. Меняете его, просто сняв галку, хекс число фюзов меняется, прописываете его в файлике и заливаете скетч вновь. С фьюзами аккуратненее!!! Можно залочить чип!!!
Уважаемый HWman , в крайнем core прошиваю через ардуино тиньку мигать диодом 1 секунду, но он явно мигает меньшей длительностью импульса. Это можно как-то победить?
Это проблема ядра, честно говоря не знаю как подправить.
Добрые люди помогите пожалуйста! Я новичек в програмировании, осилил прошивку тиньки с помощью ардуино базовыми примерами (мигалка), да немного модифицировал ее для мигания двумя мощными светодиодами для могалки коптера.
Требуется прошить тиньку 13 что бы получилось что-то вроде сервотестера. Управление оборотами переменным резистором. Дайте код, пожалуйста.
Благодарю! Жаль что сегодня не проверю! А есть такое но для протеуса? Т.е. более низкий уровень.
И как прописать в текущем сктече вместо delay?
Этот скетч пока на atmega 8, но мне нужен базовый принцип понять что бы перенести потом на тиньку 13.
Огромное спасибо!
Помогите еще разок пожалуйста!
В данном сктече мне нужно сделать так что бы между выключением и включением была еще одна пауза, но которая была бы в 2 раза меньше "pauseLED", т.е. как бы привязаться к этой переменной и разделить ее на 2. Каким образом это можно выполнить?
green4ik, нужно передать в функцию pauseLed делитель.
А вообще не привыкайте делать паузы через delay(), вредно для развития.
Благодорю! На многих форумах пишут что delay() это не очень хорошо! Будем учиться!
Столкнулся с тем, что тини обрабатывает ИК код от пульта не так, как Arduino.
Приветствю!
Частота верно указана в настройках и зашита? Я отлаживал код на атмеге328 и для тини13 просто убирал серийный порт и использовал идентичное подключение по портам PB2, etc. На атмеге мой же код работает? Даёт стабильный результат? Я алгоритм, кажется, не менял, только упростил оригинальный код и довёл до состояния стабильной работоспособности на тини. Вы пробовали другой пульт или сенсор? Не знаю актуален ли еще ваш вопрос... Хм.. как вариант попробовать прошивку из статьи, она то 100% рабочая, только надо найти в ней константы кодов кнопок и как то заменить..
если q==5, мигаем 5 раз, если q==2, мигаем 2 раза итд.
Интересный способ, но вы уверены что код четырёхзначный? Я бы мог предложить извратиться и передать код по битам типа:
Добрый день,
1. Частота указана и зашита верно. После опредения кода пульта, полученный код работает с любой частотой установленной на тини.
2. Я также отлаживал код на Atmega328, в итоге код пульта получаемый в атмеге отличается от кода получаемого в тинию. Подключение идентичное. В подключении проблемы нет, т.к. моя проверка оказалась жизнеспособная. На атмеге результат стабильный, коды для всех кнопок уникальные.
3. Другой пульт не пробовал. Пробовал менять приёмник. Результат тотже.
4. Код из статьи не работает в моём случае, т.к. коды кнопок пульта определяются по разному в атмеге и в тини. И коды кнопок пульта получаются не оригинальными, если я использую свой велосипед. Т.е. полученное мной значение irCode подходит еще для 2-3 кнопок.
5. Код четырёх значный в моём случае. Количество знаков в коде я определяю циклом:
Пробовал использовать другой код для определения кода пульта, там получалось 9 значное число. И ситуация повторялась, код получался не уникальным и срабатывание происходит еще на 2-3 кнопках.
6. Ваш велосипед я не понял, попробуйте по другому объяснить.
Добрый день,
не силен в программировании, но мне надо сделать следущее:
у нас есть кнопка которая подключена к PB1. по ее нажатию проверялось наличие 3.3вольта на PB4. и Если оно отсутсвует посылалась логическая "1" на pb0, если нет то логическая "1" на PB2. Если не сложно помогите с кодом
Выражение мне понравилось: если отсутствует наличие...... А проще сказать?
Дорисуйте табличку истинности.......
PB1 PB0 PB2
0 ? ?
1 ? ?
PB1 PB4 PB0 PB2 PB1 вход кнопки
0 0 0 0 PB4 вход на который падается 3.3в
1 1 1 0 PB0,PB2 выходы
1 0 0 1
У двух входов 4 комбинации
PB1/PB4 PB0/PB2
00 00
01 ??
10 01
11 10
PB1/PB4 PB0/PB2
00 00
01 00
10 01
11 10
Мне нужно чтобы микроконтроллер заводил вачдог на 1 / 2 / 4 / 8 сек, засыпал, причём очень крепко, даже АЦП чтобы не работал и потом по вачдогу от ресета просыпался, исполнял что нужно и когда нужно засыпал опять на некоторое время.
А можно сделать так, чтобы тинька просыпалась по нажатию кнопки, моргала один раз диодом и снова засыпала?
Мне нужно чтобы микроконтроллер заводил вачдог на 1 / 2 / 4 / 8 сек, засыпал, причём очень крепко, даже АЦП чтобы не работал и потом по вачдогу от ресета просыпался, исполнял что нужно и когда нужно засыпал опять на некоторое время.
А можно сделать так, чтобы тинька просыпалась по нажатию кнопки, моргала один раз диодом и снова засыпала?
Нет, нужно чтобы что-то делала а когда нужно засыпала.
Вот мои старые наработки, данный код пишет в энергонезависимую память числа 333 666 999, демонстрируя то, что можно записать число типа int, то есть максимум 65534:
Вроде как закоментировано всё, думаю ни у кого не возникнет вопросов что как работает.
Вот файлы протеуса.
Работает как-то так:
https://www.youtube.com/watch?v=QDPuQ1zpKtM
Пользуйтесь.
Данная тема разрослась уже на 12 страниц, предгалаю закрепить её в разделе.
Пример сна.
А если используются только кнопки и светодиоды, то можно АЦП и компоратор усыпить для уменьшения энергопотребления?
А если используются только кнопки и светодиоды, то можно АЦП и компоратор усыпить для уменьшения энергопотребления?
Только это в случае глубокого сна(разбудить можно нажав кнопку ресет или отрубив и подав питание).
Только это в случае глубокого сна(разбудить можно нажав кнопку ресет или отрубив и подав питание).
как контроллеру ресет сделать? замкнуть 1 и 8 ноги (т.е. подать + на 1 ногу)?
прошивка ATtiny24 сильно отличается? В смысле есть ATtiny24, надо ее прошить.
прошивка ATtiny24 сильно отличается? В смысле есть ATtiny24, надо ее прошить.
Эм... С даташитом Вы уже ознакомились? Собсно ISP присутсвует.
Всем привет. ATtiny13A поддерживает функцию tone и noTone?
А то скетч простой, жалко ардуину использовать.
прошивка ATtiny24 сильно отличается? В смысле есть ATtiny24, надо ее прошить.
Вот, сюда загляньте:
http://homes-smart.ru/index.php/oborudovanie/arduino/dobavlyaem-podderzh...
Привет, вот тут есть то, что Вам нужно:
http://habrahabr.ru/post/234763/
Только это в случае глубокого сна(разбудить можно нажав кнопку ресет или отрубив и подав питание).
как контроллеру ресет сделать? замкнуть 1 и 8 ноги (т.е. подать + на 1 ногу)?
Под ногами 1 и 8 Вы имеете ввиду Reset и Vcc?
Если да, то так ничего не произойдёт, потому что порт ресет итак "подтянут" к плюсу питания, нужно к GND(4-я нога) "подтянуть", вот тогда плата уйдёт в ступор, а если отжать кнопку то перезагрузиться и всё код начнётся исполняться по новой.
Привет, вот тут есть то, что Вам нужно:
http://habrahabr.ru/post/234763/
Огромное спасибо! То что нужно.
Я не робот я только учусь
В копилку:
В копилку:
Я купил вот такой адаптер:
http://m.aliexpress.com/item/32356712268.html
Влезает ? У меня есть такой,правда купленный лет 20 назад,пришлось сильно ноги подогнуть,чтобы туда тиню засунуть..
Делал не только для себя,люди попросили сразу SPI разьем сделать для удобства программирования.
Вылезает и прижимается замечательно. Мне часто флешки приходиться заливать, вот и купил. Ваша конструкция не нова и очень хорошая, но не так удобна. Приходится постараться , при прижиме такого мелкого корпуса. Дам совет, не мой, с просторов инета, сделаете маску, микруха сама будет падать в нужное место.
я таким пользуюсь
купил за 36руб в радиомагазине. Тиньку прижимаю также прищепкой.
прошить можно в панельке,это больше для прототипа)
Про маску согласен.Маску лень было делать..
Вот такое дело. На ардуино леонардо собрал схемку из примера "Knock" https://www.arduino.cc/en/tutorial/knock Подобрал параметр threshold из скетча (например 300). На ардуино все работает.
Пробую перенести сие на Тиньку13, не прокатывает. Датчик к 2 ноге цепляю (в скетче А3 программирую). Может параметр опять нужно подбирать, нет никаких соответствий? А то, менять-прошивать- проверять-опятьменять-прошивать-проверять очень утомительно получается.
Набрел на просторах на еще один и второй реаниматор на платформе Дуни.
В принципе обе одинаковые схемы, различаются только умножителем напряжения, ну и скетчи в связи с этим немного различаются.
Уважаемый HWman , в крайнем core прошиваю через ардуино тиньку мигать диодом 1 секунду, но он явно мигает меньшей длительностью импульса. Это можно как-то победить?
А что там у Вас с фьюзами в этом файлике? Посмотрите что там у Вас, в любом калькулятора фьюзов посмотрите, каким настройкам это соответствует. Можно поиграть с делителем на 8.
а где этот делитель искать? или просто его учитывать в программе?
Смотрите в файлике какие у Вас прописаны фьюзы, находите любой онлайн калькулятор фьюзов, например вот: http://radioshemi.ucoz.ru/FUSI/calc.html?part=ATtiny13 их масса, вводите туда свои фьюзы (интересуют LOW) и смотрите какие выбраны настройки. Интересует делитель: Внутренний делитель на 8; [CKDIV8=0]. По умолчанию он установлен. Меняете его, просто сняв галку, хекс число фюзов меняется, прописываете его в файлике и заливаете скетч вновь. С фьюзами аккуратненее!!! Можно залочить чип!!!
Спасибо. Только пока это для меня сложновато.
На 600кгц лучше работает, да и чувствительнось к Knock-у лучше, остановлюсь на этом.
Пожалуйста.
Поделитесь тем что получилось.
Уважаемый HWman , в крайнем core прошиваю через ардуино тиньку мигать диодом 1 секунду, но он явно мигает меньшей длительностью импульса. Это можно как-то победить?
Это проблема ядра, честно говоря не знаю как подправить.
На 600кгц лучше работает, да и чувствительнось к Knock-у лучше, остановлюсь на этом.
Только смотрите, если не будет прошиваться то Вам сюда:
http://geektimes.ru/post/255396/
Тут бываю редко, если что пишыте мне на ВК.
На 600кгц лучше работает, да и чувствительнось к Knock-у лучше, остановлюсь на этом.
Только смотрите, если не будет прошиваться то Вам сюда:
http://geektimes.ru/post/255396/
Прошилось без вопросов и не один раз (мучился с подбором значения) Спасибо!
переведите плиз для Тиньки13 код:
слышал про sei(); интересует прерывание именно по FALLING
Добрые люди помогите пожалуйста! Я новичек в програмировании, осилил прошивку тиньки с помощью ардуино базовыми примерами (мигалка), да немного модифицировал ее для мигания двумя мощными светодиодами для могалки коптера.
Требуется прошить тиньку 13 что бы получилось что-то вроде сервотестера. Управление оборотами переменным резистором. Дайте код, пожалуйста.