Ви не увійшли.
Сторінки 1
Привет!
Если я правильно понял идею, то вам нужно слушать микрофоном окружающую среду и реагировать тремя наборами светодиодов на налиличие трёх широких диапазонов частот.
Могу посоветовать конструктор. Вам нужен микрофон с усилителем, вроде такого: https://arduino.ua/prod2619-modyl-datchika-zvyka
Ваша ардуина. И три драйвера на полевиках.
В самой ардуине реализуйте какой-нибудь програмый алгоритм для определения частот.
Помните, что максимальная частота семплинга на ардуине будет порядка 10КГц.
Надеюсь немного прояснил.
Если интересно, можно пообщаться плотнее и по поводу схемы и т.д.
А в твоём материале ты не написал главного - для чего он (температурный датчик) нужен. У него есть действительно полезное предназначение, но не температуру же показывать.
Вот ты и напиши.
Лично мне он нужен именно для отслеживания температуры на борту без установки дополнительного датчика.
А насчёт чтения ADC это да, можно считать просто этот регистр и расчёт изменится таким образом:
...
while (bitRead(ADCSRA, 6)); // Проверяем ADSC. Когда измерение окончится этот бит будет равен нулю.
temp = (ADC - k1); // Расчитываем температуру.
temperature = temp / k2;
Serial.print("Onboard temperature is: ");
...
С языком Си знаком недавно и с Ардуино тоже. До этого был только ассемблер и масса различных атмеловских контроллеров.
Всем привет!
Хочу поделиться, возможно кто не знает, но на борту меги 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);
}
Сторінки 1