Создать пользовательский блок
- ykamerton
- Сержант
- Сообщения: 292
- Зарегистрирован: 03 сен 2017, 00:31
- Откуда: Воронеж ykamerton@yandex.ru
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Создать пользовательский блок
Это сможет тот, кто знаком с программированием контроллеров не только на C+ , но и на низкоуровневых языках.ykamerton писал(а): 26 июл 2019, 11:08 А кто сможет с библиотеки вырезать нужный кусок и создать блок .
(Каков вопрос - таков ответ.

А есть смысл кромсать библиотеку? В чем прикол? Не проще воспользоваться нужной функцией данной бибки?
Последний раз редактировалось Dryundel 26 июл 2019, 11:52, всего редактировалось 1 раз.
- ykamerton
- Сержант
- Сообщения: 292
- Зарегистрирован: 03 сен 2017, 00:31
- Откуда: Воронеж ykamerton@yandex.ru
Создать пользовательский блок
Поставим вопрос по другому.
Кто может в скетче IDE c используемой библиотекой вырезать нужный кусок и создать из него блок
с входом и выходом в флпрог.
Отправлено спустя 2 минуты 29 секунд:
Не поясняю не выкладываю скетч чтоб не засорять напрасно эфир, вдруг не кто не может.
Отправлено спустя 1 минуту 2 секунды:
Хотя для спецов плевое дело,
Кто может в скетче IDE c используемой библиотекой вырезать нужный кусок и создать из него блок
с входом и выходом в флпрог.
Отправлено спустя 2 минуты 29 секунд:
Не поясняю не выкладываю скетч чтоб не засорять напрасно эфир, вдруг не кто не может.
Отправлено спустя 1 минуту 2 секунды:
Хотя для спецов плевое дело,
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Создать пользовательский блок
Те же яйца, только пасхальные. Но уже теплее.ykamerton писал(а): 26 июл 2019, 11:51 Поставим вопрос по другому.
Кто может в скетче IDE c используемой библиотекой вырезать нужный кусок и создать из него блок
с входом и выходом в флпрог.
Уточните пожалуйста, это секретная библиотека от NASA ? Вы ее как то сперли и не хотите светить? А блок который Вы хотите написать должен послать Ардуину к альфа Центавры? Секретность с пометкой особо?ykamerton писал(а): 26 июл 2019, 11:55 Не поясняю не выкладываю скетч чтоб не засорять напрасно эфир, вдруг не кто не может.
Ну тогда может сразу к спецам?
Оф сайт NASA
- ykamerton
- Сержант
- Сообщения: 292
- Зарегистрирован: 03 сен 2017, 00:31
- Откуда: Воронеж ykamerton@yandex.ru
Создать пользовательский блок
Чо так грубо, я спросил сначала думал побьют.вдруг ни кто не согласен зачем сыр бор, но все равно получил по лбу...спс.
Отправлено спустя 20 минут 33 секунды:
Отправлено спустя 20 минут 33 секунды:
Тут не занимаются скетчами подобных.... не нашел услуги.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 13 раз
- Поблагодарили: 100 раз
- Контактная информация:
Создать пользовательский блок
Выложите исходники, может и поможем,и если не очень сложно. Тут многие могут. А то зачем в ступе воду толочь?
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Создать пользовательский блок
Извини, не хотел обидеть.ykamerton писал(а): 26 июл 2019, 12:33 Чо так грубо, я спросил сначала думал побьют.вдруг ни кто не согласен зачем сыр бор, но все равно получил по лбу...спс.
Зря Вы так думаете. За конструктивный спрос никто бы не возмутился. А так, теоретический вопрос без конкретики. Автоматом ругательства и стёб на язык сыплются.
Если действительно нужно - выкладывай исходники и хотелки. Есть большая вероятность что обязательно помогут.
Отправлено спустя 57 секунд:
Опоздал с ответом.

- ykamerton
- Сержант
- Сообщения: 292
- Зарегистрирован: 03 сен 2017, 00:31
- Откуда: Воронеж ykamerton@yandex.ru
Создать пользовательский блок
Вот спс.
В этом скетче нужно убрать весь мусор(свет диоды и прочие) оставить лишь один LC генератор
и сделать блок с входом на катушку и выходом на пин.
[spoiler]#include <analogComp.h>
// программа - Измеритель-толщины покрытия.
// идея отсюда: https://github.com/sae/Arduino-LCQmeter ... LC-gen.ino
/*
simplest LC-generator on arduino
can be used as lc-meter
(C)SAE762 07.feb.2015 @home
circuit diagramm D2---R(100...1000)---D6---LC---GND; D7---GND
*/
#include <EEPROM.h> // библиотека чтения-записи eeprom
#include "analogComp.h" // библиотека, скчана с гитхаба
/* проверка работы eeprom
*/
//***************** ФУНКЦИИ***********
//This function will write a 2 byte integer to the eeprom at the specified address and address + 1
// эта функия записывает двухбайтовое целое число в РППЗУ по указанному адресу
void EEPROMWriteInt(int p_address, int p_value)
{
byte lowByte = ((p_value >> 0) & 0xFF);
byte highByte = ((p_value >> 8) & 0xFF);
EEPROM.write(p_address, lowByte);
EEPROM.write(p_address + 1, highByte);
}
//This function will read a 2 byte integer from the eeprom at the specified address and address + 1
// эта функия считывает двухбайтовое целое число в РППЗУ по указанному адресу
unsigned int EEPROMReadInt(int p_address)
{
byte lowByte = EEPROM.read(p_address);
byte highByte = EEPROM.read(p_address + 1);
return ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00);
}
//********конец объявления фунций************
//обявление переменных
int ctl=2 ; // нога для накачки энергии в контур
int led=13; // нога светодиода
int rise=0; // счетчик переходов через 0
int fall=0; // такой же стетчик
int summ; //накопительный счетчик
int tchk=300; // время измерения
int zero=11625; //отладка
int delta=0; //разница между содержимым eeprom и результатом измерения
//присвоим номера пинов светодиодов
int vbat=0; //напряжение батареи
int vbatpin=6; // аналог вход 6
int mredled=3; // красный светодиод -
int mblueled=4; //синий светодиод -
int mwhiteled=5;//белый светодиод -
int greenled=8;//зеленый светодиод
int pwhiteled=9;//белый светодиод +
int pblueled=10; //синий +
int predled=11; //красный +
// присвоим границы
//++++++++++++++++++++++++++++++++
// тут придется внести ВАШИ значения!!!!
//===============================
int pgreen=25; // граница ОК в плюс
int mgreen=-10;// в минус
int pwhite=55; // граница подозрительно в +
int mwhite=-30;// подозрительно в -
int pblue=100; // крашено
int mblue=-60; // шлифовано
//int pred=130; // шпаклевка
//int mred=-60;//металл
void setup() {
// put your setup code here, to run once:
summ=0;// инициализация накопителя
Serial.begin(9600); // настроим порт УБРАТЬ ПОСЛЕ ОТЛАДКИ
pinMode(led, OUTPUT); //
pinMode(ctl, OUTPUT); // инициализация выхода накачки
//настроим выхода под светодиоды
pinMode(mredled, OUTPUT);
digitalWrite(mredled, HIGH);
pinMode(mblueled, OUTPUT);
digitalWrite(mblueled, HIGH);
pinMode(mwhiteled, OUTPUT);
digitalWrite(mwhiteled, HIGH);
pinMode(greenled, OUTPUT);
digitalWrite(greenled, HIGH);
pinMode(pwhiteled, OUTPUT);
digitalWrite(pwhiteled, HIGH);
pinMode(pblueled, OUTPUT);
digitalWrite(pblueled, HIGH);
pinMode(predled, OUTPUT);
digitalWrite(predled, HIGH);
// тут можно дорожку сделать для индикации светодиодов, если очень хочется
// инициализация компаратора и прерываний
digitalWrite(ctl, LOW);
analogComparator.setOn(AIN0, AIN1);//D6+,D7-
analogComparator.enableInterrupt(comparatorInt,CHANGE);
// проверка режима работа/установка 0
vbat = analogRead(vbatpin); // считываем значение
if (vbat>50) { // если напруга больше 0 запускаем установку 0
rise=0;
// индикация разряженной батареи, но установка 0 продолжается
if (vbat < 700) {digitalWrite(mredled, LOW);digitalWrite(predled, LOW);}
//if no pulses, make a start impulse
if (rise==0) {
pulse();
}
// первый проход
summ=0;
digitalWrite(led, LOW);
rise=0;
fall=0;
delay(tchk); // wait for a second
//Serial.println(rise); // вывод на псолед порт, убрать после отладки
summ=summ+rise;
// второй проход
rise=0;
fall=0;
delay(tchk); // wait for a second
summ=summ+rise;
//третий проход
rise=0;
fall=0;
delay(tchk); // wait for a second
summ=summ+rise-15; // -15 странный костыль видимо недосчет во время обработки прерывания
// Serial.print(summ); // убрать после отладки
//вычислим среднее
summ=summ/3; // вот это и есть измренное значение по результатам трех проходов
// это условная толщина покрытия в попугаях
// зная ее, можно с помомощью нехитрых арифметических действий, определить реальную толщину покрытия
//то есть померить калиброванную пленку разной толщины, записать результаты, а потом подобрать коэффициенты.
digitalWrite(led, HIGH);
EEPROMWriteInt(0,summ); //занесем в eeprom
digitalWrite(greenled, LOW); // зажжем зелененький
while (1); // застопорить нахрен после установки 0 !!!!!!!
}
}
// конец процедуры установки
// тут переход к процедуре измерения
//!!!!!Главный цикл!!!
void loop() {
// тут процедура измерения
rise=0;
//Serial.println(EEPROMReadInt(0)); // выводим полученное значение
//if no pulses, make a start impulse
if (rise==0) {
pulse();
}
// первый проход
summ=0;
digitalWrite(led, LOW);
rise=0;
fall=0;
delay(tchk); // wait for a second
summ=summ+rise;
// второй проход
rise=0;
fall=0;
delay(tchk); // wait for a second
summ=summ+rise;
//третий проход
rise=0;
fall=0;
delay(tchk); // wait for a second
summ=summ+rise;
// Serial.print(rise);
//вычислим среднее
summ=summ/3;
delta=summ-EEPROMReadInt(0);
Serial.print(EEPROMReadInt(0)); // из памяти
Serial.print(";");
Serial.print(delta);
Serial.println(" pulses/tchk");
digitalWrite(led, HIGH);
if (delta >= mgreen && delta <= pgreen ) {digitalWrite(greenled, LOW);}
if (delta < mblue) digitalWrite(mredled, LOW);
if (delta >= mblue && delta < mwhite ) digitalWrite(mblueled, LOW);
if (delta >= mwhite && delta < mgreen) digitalWrite(mwhiteled, LOW);
if (delta > pblue) digitalWrite (predled,LOW);
if (delta > pwhite && delta <= pblue) digitalWrite (pblueled,LOW);
if (delta > pgreen && delta <= pwhite) digitalWrite (pwhiteled,LOW);
while (1); /// тормоза. измерение окончено
delay(1000); // wait for a second
}
/**
not so clear "magic" with interrupt
we need to block int's when make a power impulse
comparator is connected directly to capacitor
*/
boolean waitforRise=false;
//this function is called when comparator change status
//as set in ACSR register
void comparatorInt() {
if (waitforRise) { //if we waiting for rise
ACSR &= ~(1<<ACIS0);//set interrupt for falling
ACSR |= (1<<ACIS1);
waitforRise=false;
rise++;
} else { //if we waiting for fall
ACSR &= ~(1<<ACIE); //disable interrupt
//impulse to support an oscillations
pulse();
ACSR |= (1<<ACIE); //enable interrupt
ACSR |= ((1<<ACIS1) | (1<<ACIS0)); //set interrupt for rising
waitforRise=true;
}
}
//send power impulse to LC
void pulse() {
pinMode(ctl, OUTPUT);
digitalWrite(ctl, HIGH);
rise++;//make something useless )
//digitalWrite(ctl, LOW);
pinMode(ctl, INPUT);
}[/spoiler]
[spoiler] [/spoiler]
https://volt-index.ru/high-tech/arduino ... duino.html
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Создать пользовательский блок
Ок. Видимо без наводящих вопросов никак.ykamerton писал(а): 26 июл 2019, 12:53 Вот спс.
В этом скетче нужно убрать весь мусор(свет диоды и прочие) оставить лишь один LC генератор
и сделать блок с входом на катушку и выходом на пин.
Итак. Имеем бытовой измеритель толщины лакокрасочного покрытия. Который сигнализирует - Норм, подозрительно, слишком толсто, слишком тонко.
Что хотим получить в итоге? Вместо индикаторов реальную толщину покрытия в цифровом формате? Или что то вообще иное?
[spoiler=Офтоп]А вот с вырезанием куска из библиотеки ваши хотелки ну уж точно никак не связаны.

-
- Лейтенант
- Сообщения: 391
- Зарегистрирован: 09 апр 2016, 12:17
- Откуда: Кременчуг
- Имя: Сергей
Создать пользовательский блок
[ref]ykamerton[/ref], не путайте входы/выходы контроллера (ардуино) и входы/выходы блока. В данном случае блок предположительно будет иметь только один выход, на который выдаётся переменная, обозначающая толщину покрытия в условных попугаях. Но физически будет задействовано три пина Ардуино, которые при этом не являются ни входами, ни выходами блока.
- ykamerton
- Сержант
- Сообщения: 292
- Зарегистрирован: 03 сен 2017, 00:31
- Откуда: Воронеж ykamerton@yandex.ru
Создать пользовательский блок
Вот сделал Чел, только открыть не могу.
[spoiler] [/spoiler]
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- nikmotorin60
- Рядовой
- Сообщения: 36
- Зарегистрирован: 29 апр 2016, 09:54
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Создать пользовательский блок
Ну так может у Чела спросить в чем дело?
У меня тоже не открылся.
А что за компаратор? Для чего? Поделитесь идеей.
- ykamerton
- Сержант
- Сообщения: 292
- Зарегистрирован: 03 сен 2017, 00:31
- Откуда: Воронеж ykamerton@yandex.ru
Создать пользовательский блок
LC генератор , заглючил у него Flprog переписал блок еще не проверял, описание в блоке.
как и грил два входа на катушку и выход частоты.
Отправлено спустя 1 минуту 10 секунд:
блок с той же библией.
как и грил два входа на катушку и выход частоты.
Отправлено спустя 1 минуту 10 секунд:
блок с той же библией.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- ykamerton
- Сержант
- Сообщения: 292
- Зарегистрирован: 03 сен 2017, 00:31
- Откуда: Воронеж ykamerton@yandex.ru
Создать пользовательский блок
Ничего у меня не запускается, импульс проходит и все. нет ни какой генерации фуфло это все....
Отправлено спустя 40 секунд:
Нужно самому кумекать.
Отправлено спустя 40 секунд:
Нужно самому кумекать.
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Создать пользовательский блок
Поделитесь затеей. Что в итоге должно получиться? Возможно есть готовое решение.ykamerton писал(а): 27 июл 2019, 13:47 Ничего у меня не запускается, импульс проходит и все. нет ни какой генерации фуфло это все....
Отправлено спустя 40 секунд:
Нужно самому кумекать.
- ykamerton
- Сержант
- Сообщения: 292
- Зарегистрирован: 03 сен 2017, 00:31
- Откуда: Воронеж ykamerton@yandex.ru
Создать пользовательский блок
Мне нужен LC генератор всего лишь, подключить к пинам катушку чтоб она загенерила своей частотой
а эту частоту уже пустить на обработку. - типа простой металдетектор.
[spoiler] [/spoiler]
а эту частоту уже пустить на обработку. - типа простой металдетектор.
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Создать пользовательский блок
Как вариант: берем сигнал с LC контура пропускаем через триггер Шмитта и сажаем его на пин с прерыванием. Скоростным счетчиком измеряем импульсы, получаем частоту.
- ykamerton
- Сержант
- Сообщения: 292
- Зарегистрирован: 03 сен 2017, 00:31
- Откуда: Воронеж ykamerton@yandex.ru
Создать пользовательский блок
Собираю на отдельной микре генератор, пускаю на вход скоростного - это понятноDryundel писал(а): 27 июл 2019, 17:05 Как вариант: берем сигнал с LC контура пропускаем через триггер Шмитта и сажаем его на пин с прерыванием. Скоростным счетчиком измеряем импульсы, получаем частоту.
но как сделать внутренний генератор не цеплять отдельно микросхему.
Вот это мне и нужно. Не ужеле никто не делал на 328 меге, есть включают генераторы на тиньке13 даже.
не могу понять куда они цепляют эту катушку с кондерами.
- Dryundel
- Полковник
- Сообщения: 2435
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 3 раза
- Поблагодарили: 31 раз
Создать пользовательский блок
Так Вам генератор нужен, а не измеритель LC контура?ykamerton писал(а): 27 июл 2019, 18:32 но как сделать внутренний генератор не цеплять отдельно микросхему.
Вот это мне и нужно.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость