#1 2021-11-22 23:21:01

Alonewooolf
Учасник
Зареєстрований: 2020-05-23
Повідомлень: 11

Опять вопрос о функциях

const int sampleWindow = 50; // время выборки значений mS (50 mS = 20Hz)
unsigned int sample;

void setup()
{
   Serial.begin(9600);
}

void loop()
{
   unsigned long startMillis= millis();
   unsigned int peakToPeak = 0;   // размах колебаний

   unsigned int signalMax = 0;
   unsigned int signalMin = 1024;

   // собираем данные на протяжении 50 mS
   while (millis() - startMillis < sampleWindow)
   {
      sample = analogRead(0);
      if (sample < 1024)
      {
         if (sample > signalMax)
         {
            signalMax = sample;  // сохранение максимального значения
         }
         else if (sample < signalMin)
         {
            signalMin = sample;  // сохранение минимального значения
         }
      }
   }
   peakToPeak = signalMax - signalMin;  // max - min = размах колебаний
   
   Serial.println(peakToPeak);
}

Имеем код.  Хочется вызывать в других участках кода (peakToPeak).

Как правильно? Я думаю это все завернуть в функцию например void zvuk().

Void loop()
{
zvuk();
Serial.println(peakToPeak);
}
Оно будет рак работать в void loop() или других функциях, главная задача получать  значения (peakToPeak)????

Неактивний

#2 2021-11-23 01:13:07

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 433

Re: Опять вопрос о функциях

Можно двумя способами:

unsigned int zvuk() {
 // some code
 return signalMax - signalMin;
}
void loop() {
 unsigned int peakToPeak;
 peakToPeak = zvuk();
 Serial.println(peakToPeak);
}

или

unsigned int peakToPeak;
void zvuk() {
 // some code
 peakToPeak = signalMax - signalMin;
}
void loop() {
 zvuk();
 Serial.println(peakToPeak);
}

Первый вариант более "правильный", а второй сгенерирует более компактный и быстрый код, что для мк важнее.

Неактивний

#3 2021-11-23 11:30:37

Alonewooolf
Учасник
Зареєстрований: 2020-05-23
Повідомлень: 11

Re: Опять вопрос о функциях

Honey пише:

Можно двумя способами:

unsigned int zvuk() {
 // some code
 return signalMax - signalMin;
}
void loop() {
 unsigned int peakToPeak;
 peakToPeak = zvuk();
 Serial.println(peakToPeak);
}

или

unsigned int peakToPeak;
void zvuk() {
 // some code
 peakToPeak = signalMax - signalMin;
}
void loop() {
 zvuk();
 Serial.println(peakToPeak);
}

Первый вариант более "правильный", а второй сгенерирует более компактный и быстрый код, что для мк важнее.


Спасибо!!!! второе мне больше нравится, завтра попробую в компиляторе это все.

Неактивний

#4 2021-11-26 10:58:41

Alonewooolf
Учасник
Зареєстрований: 2020-05-23
Повідомлень: 11

Re: Опять вопрос о функциях

Возник вопрос: почему транзистор полностью не закрывается у меня, подключал в режиме ключа подавал напряжение на сток к истоку была подключена лампочка, и она просто горит на треть накала, потом на затвор подключал ардуинку, скетч просто блинк, оно работает мигает, но лампочка не полностью тухнет. Транзистор брал ирф какой-то, думал что то с транзистором, подключал кт315, тоже самое и ещё парочку транзисторов, результат один и тотже, на переходах бежит напряжение. Брал другой БП, результат тот же, подключал по классических схемах ключей. Ничего не пойму почему так???
Заранее благодарю за ответ.

Неактивний

#5 2021-11-26 16:07:42

akapulko
Гість

Re: Опять вопрос о функциях

Пишите в Нобелевский комитет! )

А по-серьезному, схема включения нужна

#6 2021-11-26 21:10:38

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 433

Re: Опять вопрос о функциях

Нагрузка подключается к стоку, а к истоку подключается GND для n-канального, VCC для p-канального.

Неактивний

#7 2021-11-27 12:17:28

Alonewooolf
Учасник
Зареєстрований: 2020-05-23
Повідомлень: 11

Re: Опять вопрос о функциях

Не пойму как сюда картинку загрузить.
И это как так нагрузку к стоку, а землю к истоку?
Я ардуино подключаю через резистор к затвору, к плюсу нагрузку с нагрузки провод идёт к стоку и выходит через исток. Между базой и истоком стоит резистор.

Неактивний

#8 2021-11-27 12:21:24

Alonewooolf
Учасник
Зареєстрований: 2020-05-23
Повідомлень: 11

Re: Опять вопрос о функциях

s1877666.jpg

Неактивний

#9 2021-11-27 18:54:54

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Опять вопрос о функциях

надо ещё резистор 100 ом между затвором и 9 пином

Неактивний

#10 2021-11-27 20:48:39

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: Опять вопрос о функциях

vvr пише:

надо ещё резистор 100 ом между затвором и 9 пином

Зачем ?

Неактивний

#11 2021-11-27 21:36:58

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Опять вопрос о функциях

В разрыв цепи затвора также рекомендуется ставить резистор номиналом 50-150 Ом, для предотвращения кратковременных выбросов тока и защиты вывода микроконтроллера.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму