#1 Re: Програмування Arduino » Помощь в схеме + кодинг Arduino » 2019-07-21 12:21:34

Привет!
Если я правильно понял идею, то вам нужно слушать микрофоном окружающую среду и реагировать тремя наборами светодиодов на налиличие трёх широких диапазонов частот.
Могу посоветовать конструктор. Вам нужен микрофон с усилителем, вроде такого: https://arduino.ua/prod2619-modyl-datchika-zvyka
Ваша ардуина. И три драйвера на полевиках.
В самой ардуине реализуйте какой-нибудь програмый алгоритм для определения частот.
Помните, что максимальная частота семплинга на ардуине будет порядка 10КГц.
Надеюсь немного прояснил.
Если интересно, можно пообщаться плотнее и по поводу схемы и т.д.

#2 Re: Програмування Arduino » Температурный сенсор на борту Mega328 » 2019-07-20 10:57:43

Kaka пише:

А в твоём материале ты не написал главного - для чего он (температурный датчик) нужен. У него есть действительно полезное предназначение, но не температуру же показывать.

Вот ты и напиши.
Лично мне он нужен именно для отслеживания температуры на борту без установки дополнительного датчика.

А насчёт чтения ADC это да, можно считать просто этот регистр и расчёт изменится таким образом:

...
while (bitRead(ADCSRA, 6)); // Проверяем ADSC. Когда измерение окончится этот бит будет равен нулю.
 
temp = (ADC - k1); // Расчитываем температуру.
temperature = temp / k2;

Serial.print("Onboard temperature is: ");
...

С языком Си знаком недавно и с Ардуино тоже. До этого был только ассемблер и масса различных атмеловских контроллеров.

#3 Програмування Arduino » Температурный сенсор на борту Mega328 » 2019-07-19 21:50:29

Dimak
відповідей: 4

Всем привет!
Хочу поделиться, возможно кто не знает, но на борту меги 328 (Arduino Nano, Arduino Mini, Arduino Uno) есть встроенный температурный датчик.
Что-то я не нашёл упоминаний о нём на просторах ардуининга, поэтому решил описать этот кейс, возможно кому-то пригодится.
Если кому-то нужно будет что-то уточнить, то подробное описание есть в даташите, читайте. Хотя, можете напушить в топик, постараюсь ответить.

---------------------------------------------------------------------------------------------------------------------------------------------------------
/*
Onboard Mega328 temperature sensor read
Учитывая то, что сенсор не прецессионный его нужно вывести на уровень двумя коэфициентами. Дискретность измерений приблизительно 1mV/1C
Опорное значение рекомендуемое по даташиту это шестнадцатибитное значение 314, что соответствует температуре 25С.
*/

unsigned int _ADCL, _ADCH;
byte k1 = 55; // коэфициент 1
byte k2 = 12; // коэфициент 2
float temp, temperature;

void setup() {
Serial.begin(9600);
Serial.println("Begin...");
ADMUX = 0b11001000; // Устанавливаем регистр ADMUX в режим измерения от внутреннего опорного 1.1В источника и указываем канал температурного датчика

}

void loop() {

ADCSRA = ADCSRA|0b01000000;  // Запускаем измерительный цикл установив бит ADSC в единицу.
while (bitRead(ADCSRA, 6)); // Проверяем ADSC. Когда измерение окончится этот бит будет равен нулю.

_ADCL = ADCL; // обязательно в такой последовательности считываем регистры ADCL и ADCH.
_ADCH = ADCH;
 
temp = (((_ADCH<<8)|_ADCL) - k1); // Расчитываем температуру.
temperature = temp / k2;
Serial.print("Onboard temperature is: ");
Serial.print(temperature); // И отображаем её в порт.
Serial.println("C");

delay(1000);
}

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