Например TDA7294

Форум РадиоКот • Просмотр темы - Нужна помощь в адаптации кода
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 17, 2024 01:36:00

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Нужна помощь в адаптации кода
СообщениеДобавлено: Пн фев 12, 2018 02:13:23 
Родился

Зарегистрирован: Сб фев 14, 2015 01:21:10
Сообщений: 19
Рейтинг сообщения: 0
Решил задаться целью и сделать так, чтобы от оборотов и скорости соответствующие стрелки приборной панели, меняли цвет. Но вот незадача, код нужный был найден, но он написан для arduino nano, но для таких целей ее использовать просто глупо. В планах для каждой стрелки сделать тоже самое только на attiny13a, но вот как подогнать код для нее. Не хватает у меня знаний пока что для адаптации кода. Помогите пожалуйста необразованному в этих делах коту :))

Скетч ардуинки прикладываю
Спойлер/*
* Abramov Konstantin
* 2016
*/


int pin = 8;
long micro_prev=0; //счетчики времени
long micro_now=0;
long razn;

long impulse; //длительность +
long silence; //длительность 0

const int RED_PIN = 9; //пины ног светодиода
const int GREEN_PIN = 10;
const int BLUE_PIN = 11;
int k;

int r; //значения для яркости диодов которые нужно устарновить
int g;
int b;
int r_current=0; //значения для яркости диодов которые установлены в настоящий момент
int g_current=0;
int b_current=0;

long obr_v_min; // оборотов в минуту
long obr_v_min_prev; // Предыдущее значение оборотов в минуту для проверки на ошибки

int error=0; //счетчик ошибок



String string;
int a=0;
volatile int state = LOW;
int first_loop=1;

void setup()
{
Serial.begin(115200);
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE );



pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);




}

void loop()
{
if(first_loop==1){ //плавно зажигаем подстветку при первом включении
int i;
for(i=0;i<255;i++){
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, i);
delay(5);
}
b_current=255;
r_current=0;
g_current=0;
delay(500);

first_loop=0;

}

}



void blink()
{

micro_now=micros(); //текущее время от запуска
razn=micro_now-micro_prev; //разница с прошлым значением
a++;

if(digitalRead(2)==LOW){ //если на пине 0, значит пишет разницу в длинну +, если нет, значит мы измерили время когда на пине ничего нет.
impulse=razn;
} else {
silence=razn;
}

if(a==2){ //если мы измерили уже два раза, то может чтонибудь делать с этими данными
Serial.println(String(impulse)+" "+String(silence)); //выводим в СОМ
obr_v_min=30000000/(impulse+silence); //считаем обороты в минуту.
a=0; //скидыаем счетчик

if((impulse>3000) && (silence>3000) && (abs(obr_v_min_prev-obr_v_min)<1000) && first_loop==0){

if(obr_v_min<800){
r=0;
g=150 ;
b=255 ;

k = go_to_color(r,g,b);
Serial.println("blue"+String(obr_v_min));
}

if(obr_v_min>=800 and obr_v_min<1300){
g=0.21*obr_v_min-18;
b=-0.51*obr_v_min+663 ;
r=0;
Serial.println("green_blue"+String(obr_v_min));
k = go_to_color(r,g,b);
}

if(obr_v_min>=1300 and obr_v_min<2500){
g=255;
b=0;
r=0;

Serial.println("green"+String(obr_v_min));
k = go_to_color(r,g,b);

}


if(obr_v_min>=2500 and obr_v_min<3000){
g=255;
b=0;
r=(-637500+255*obr_v_min)/500;

Serial.println("green_yellow"+String(obr_v_min));
k = go_to_color(r,g,b);

}



if(obr_v_min>=3000 and obr_v_min<3500){
g=(862500-245*obr_v_min)/500;
b=0;
r=255;

Serial.println("yellow"+String(obr_v_min));
k = go_to_color(r,g,b);

}



if(obr_v_min>=3500){
g=10;
b=0;
r=255;
Serial.println("red"+String(obr_v_min));
k = go_to_color(r,g,b);
}
error=0;
} else {
//если нет сигнала
if(first_loop==0){
error++;
if(error>=100){ //если больше 100 подряд идущих ошибок, то уходим в статичный цвет. При появлени данных возвращаемся в работу
k = go_to_color(0,255,255);
}
}
}

obr_v_min_prev=obr_v_min;
micro_prev=micro_now;




}
}

int go_to_color(int r, int g, int b){
a=-2;
while(r_current!=r || g_current!=g || b_current!=b) //если текущие значения не совпадают с теми котоыре нужно установить то начинаем работу
{
//Serial.println(String(r_current)+" "+String(b_current)+" "+String(g_current)+"___ "+String(r)+" "+String(b)+" "+String(g));


if(r_current>r){
r_current=r_current-1;
}
if(r_current<r){
r_current=r_current+1;
}

if(g_current>g){
g_current=g_current-1;
}
if(g_current<g){
g_current=g_current+1;
}

if(b_current>b){
b_current=b_current-1;
}
if(b_current<b){
b_current=b_current+1;
}
delay(100);

analogWrite(RED_PIN, r_current);
analogWrite(GREEN_PIN, g_current);
analogWrite(BLUE_PIN, b_current);
}




int result;

return result;
}


Заранее извиняюсь перед автором кода, не помню где взял ваш код, ногами прошу не бить 8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь в адаптации кода
СообщениеДобавлено: Пн фев 12, 2018 05:46:00 
Собутыльник Кота
Аватар пользователя

Карма: 55
Рейтинг сообщений: 415
Зарегистрирован: Чт мар 20, 2008 01:06:40
Сообщений: 2905
Откуда: Севастополь
Рейтинг сообщения: 0
Я, конечно, извиняюсь, но с каких это пор использовать ардуину для разных (подобных) свистоперделок стало "глупо" ?

_________________
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь в адаптации кода
СообщениеДобавлено: Пн фев 12, 2018 06:48:17 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
abc писал(а):
с каких это пор использовать ардуину для разных (подобных) свистоперделок стало "глупо" ?
с момента появления STM32?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Нужна помощь в адаптации кода
СообщениеДобавлено: Пн фев 12, 2018 08:09:56 
Друг Кота

Карма: 49
Рейтинг сообщений: 523
Зарегистрирован: Чт фев 20, 2014 18:57:55
Сообщений: 18443
Рейтинг сообщения: 0
Но вот незадача, код нужный был найден, но он написан для arduino nano, но для таких целей ее использовать просто глупо.

Копейки стоит, почему бы и нет.

В планах для каждой стрелки сделать тоже самое только на attiny13a, но вот как подогнать код для нее. Не хватает у меня знаний пока что для адаптации кода.

Можно попробовать её тоже "заардуинить" приблизительно таким путем https://geektimes.ru/post/254970/

_________________
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Нужна помощь в адаптации кода
СообщениеДобавлено: Пн фев 12, 2018 10:48:22 
Мудрый кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 93
Зарегистрирован: Ср сен 07, 2011 21:40:30
Сообщений: 1797
Рейтинг сообщения: 0
При цене 2,5$ за разведенную плату с цепями тактирования, стабилизатором и мостом USB-com для отладки и заливки кода - весьма бюджетное решение. Да и скетч достаточно большой, в тини 13 не влезет.
Получается, при стоимости тини 13 в 0,5$ Вы всю эту тему создали ради 2 $ ?


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Нужна помощь в адаптации кода
СообщениеДобавлено: Пн фев 12, 2018 12:27:42 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
Этот код бесполезно адаптировать под Tiny13. Надо просто писать с нуля с учётом возможностей микросхемы. Тогда что-то влезет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь в адаптации кода
СообщениеДобавлено: Пн фев 12, 2018 12:51:00 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
отсюда?
https://geektimes.ru/post/269786/
вариант
выкинуть лишнее, непонятно, например накой это:
Код:
Serial.println(String(impulse)+" "+String(silence)); //выводим в СОМ

сконвертировать в ассемблер:
https://www.youtube.com/watch?v=3ZgXSqfEZiw
найти согласного шамана и подшаманить получившееся под тини13
скорее всего действительно шаману проще с нуля


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь в адаптации кода
СообщениеДобавлено: Вт фев 13, 2018 14:48:00 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Поставить аттини45/85 и светик серии ws2812.
Тинька 85я вроде в какой-то миниатюрной ардуинке применяется...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь в адаптации кода
СообщениеДобавлено: Чт фев 15, 2018 03:03:22 
Родился

Зарегистрирован: Сб фев 14, 2015 01:21:10
Сообщений: 19
Рейтинг сообщения: 0
Поставить аттини45/85 и светик серии ws2812.
Тинька 85я вроде в какой-то миниатюрной ардуинке применяется...
:roll:

13 тинька тоже умеет ws2812 светиками управлять, в интернете полно схем и прошивок.

Добавлено after 4 minutes 18 seconds:
Всем спасибо за советы, буду использовать туже nano в связке с ws2812, только подсветка приборки будет плавно разжигаться, а стрелки менять цвет от оборотов и скорости. Позже выложу скетч, если не вылетит из усатой головы
P.S. Большущий спасибмяу!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нужна помощь в адаптации кода
СообщениеДобавлено: Чт фев 15, 2018 09:12:39 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Лучше не нану , а про-мини (там USB-COM удален - платка поменьше и более функциональна в данной задаче).
8)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y