Решил задаться целью и сделать так, чтобы от оборотов и скорости соответствующие стрелки приборной панели, меняли цвет. Но вот незадача, код нужный был найден, но он написан для 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 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; //скидыаем счетчик
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));
В планах для каждой стрелки сделать тоже самое только на attiny13a, но вот как подогнать код для нее. Не хватает у меня знаний пока что для адаптации кода.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
При цене 2,5$ за разведенную плату с цепями тактирования, стабилизатором и мостом USB-com для отладки и заливки кода - весьма бюджетное решение. Да и скетч достаточно большой, в тини 13 не влезет. Получается, при стоимости тини 13 в 0,5$ Вы всю эту тему создали ради 2 $ ?
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Serial.println(String(impulse)+" "+String(silence)); //выводим в СОМ
сконвертировать в ассемблер: https://www.youtube.com/watch?v=3ZgXSqfEZiw найти согласного шамана и подшаманить получившееся под тини13 скорее всего действительно шаману проще с нуля
Поставить аттини45/85 и светик серии ws2812. Тинька 85я вроде в какой-то миниатюрной ардуинке применяется...
13 тинька тоже умеет ws2812 светиками управлять, в интернете полно схем и прошивок.
Добавлено after 4 minutes 18 seconds: Всем спасибо за советы, буду использовать туже nano в связке с ws2812, только подсветка приборки будет плавно разжигаться, а стрелки менять цвет от оборотов и скорости. Позже выложу скетч, если не вылетит из усатой головы P.S. Большущий спасибмяу!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения