РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

Форум на ЭЛВО


РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ



  • Страница 1 из 2
  • 1
  • 2
  • »
Архив - только для чтения
Запуск программы по звуковому сигналу
Сообщение # 1        
looksfilm
аватар
  Постов: 328   ОК 
Как реализовать включение программы мк автоматически когда, микрофон слышит музыку.

Использовать условия скажем.

Если ток на ножке привысил больше >200 то прогрмама начинает работать

Если ток на ножке привысил больше >300 то идет 2 программа

Если ток на ножке привысил больше >400 то идет 3 программа итд.

Но не вариан, они все будут рывками переключаться, нужно запустить только 1 цикл.

Как можно реализовать?

Добавлено (13.11.2014, 22:26)
---------------------------------------------
Короче не кто не знает?

Сообщение # 2        
Витинари
аватар
  Постов: 1503   Друзья 
Рой в сторону АЦП. Надо будет собрать нечто на основе амперметра и периодически (раз в четверть секунды, например) замерять ток на входе. В зависимости от полученного значения и будет (через условные операторы) запускаться подпрограмма. Вот и все!
Сообщение # 3        
looksfilm
аватар
  Постов: 328   ОК 
Мож кто то знает?

Суть в чем нужно скажем на порт A 0 и A 1 Повесить микрофон, и когда ток скажем превысит на входе мк 200Мв запускается програма в контройлере.
Сообщение # 4        
Витинари
аватар
  Постов: 1503   Друзья 
Цитата looksfilm ()
Суть в чем нужно скажем на порт A 0 и A 1 Повесить микрофон, и когда ток скажем превысит на входе мк 200Мв запускается програма в контройлере.

Какой контроллер? По-прежнему тинька?
Я уже советовал выше использовать АЦП. Фактически, тебе нужно собрать вольтметр, каждые секунду-полсекунды проверять показания, и по ним запускать подпрограммы.
Сообщение # 5        
looksfilm
аватар
  Постов: 328   ОК 
Цитата NovemberDreamer ()
Какой контроллер? По-прежнему тинька? Я уже советовал выше использовать АЦП. Фактически, тебе нужно собрать вольтметр, каждые секунду-полсекунды проверять показания, и по ним запускать подпрограммы.


Пример можно хоть какой то.
Сообщение # 6        
Витинари
аватар
  Постов: 1503   Друзья 
Вот кусок кода для измерения напряжения (в оригинале была AtMega8). Я в АВР не спец, так что это только "информация к размышлению" smile Зеленым выделил свой код.
Замер идет на ножке ADC0.
Цитата
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

volatile unsigned int display = 0;
volatile unsigned long value;
volatile unsigned int adc_counter;
// Прерывание по окончанию преобразования АЦП
ISR (ADC_vect)
{
value = value + (ADC*11/4); // Суммируем старое и новое значения АЦП, преобразуем
adc_counter++; // Увеличиваем счетчик измерений
}
// Главная функция
int main (void)
{
// Настройка АЦП
ADCSRA |= (1 << ADEN) // Разрешение АЦП
|(1 << ADSC) // Запуск преобразования
|(1 << ADFR) // Непрерывный режим работы АЦП
|(1 << ADPS2)|(1 << ADPS1) // Предделитель на 64 (частота АЦП 125kHz)
|(1 << ADIE); // Разрешение прерывания от АЦП
ADMUX |= (1 << REFS1)|(1 << REFS0); // Внутренний ИОН 2,56V, вход ADC0

sei(); // Глобально разрешаем прерывания
// Главный цикл
while(1)
{
if(adc_counter > 300) // Если количество измерений больше 300
{
display = value/adc_counter; // Вычисляем среднее значение АЦП
adc_counter = 0; // Обнуляем счетчик измерений
value = 0; // Обнуляем буфер АЦП
}
_delay_ms(50);
// запуск подпрограммы
if(display >= 60) // значение вычислено примерно. Должно бы соответствовать 0,2 В.
{
// выполняется подпрограмма
}

}
}


Сообщение # 7        
looksfilm
аватар
  Постов: 328   ОК 
У меги и тини код разный.

например вот мега

#include <avr/io.h>
#include <util/delay.h>

Вот тини

#include <tiny13a.h>
#include <delay.h>

Добавлено (29.11.2014, 10:22)
---------------------------------------------
Короче разобрался есть такие ноги у мк ADC 1 ADC 2 ADC 3

Вот на них идет сигнал, потом програмно замеряешь его и запускаешь нужный цикл.

Добавлено (29.11.2014, 10:25)
---------------------------------------------
Как смоделировать аудио в Proteus "пишет неправельная амплитуда"

Сообщение # 8        
Egour
аватар
  Постов: 916   Друзья 
Цитата looksfilm ()
У меги и тини код разный

Я не особо разбираюсь в МК Atmel, но что-то мне подсказывает - код разный не у тини и мега, а различается код написанный в разных средах разработки.

Цитата looksfilm ()
когда ток скажем превысит на входе мк 200Мв

Напряжение, а не ток. Не Мв, а мВ smile

Цитата looksfilm ()
Как смоделировать аудио в Proteus "пишет неправельная амплитуда"

Если что, дробные значения нужно вводить через точку, а не через запятую. Запятых Протеус не понимает.
Сообщение # 9        
looksfilm
аватар
  Постов: 328   ОК 
Чем можно скомпилировать из BASCOM-AWR в hex ???

Добавлено (29.11.2014, 12:53)
---------------------------------------------
Все разобрался!

Добавлено (29.11.2014, 12:54)
---------------------------------------------
Вот че вышло)

$regfile = "attiny13.dat"
$crystal = 9600000
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output

Start Adc
Do
If Getadc(2) >= 500 Then
Portb.0 = 1
Waitms 200
Portb.0 = 0
Portb.1 = 1
Waitms 200
Portb.0 = 0
Portb.1 = 0
Else
Portb.0 = 0
Portb.1 = 0
End If

If Getadc(2) >= 700 Then
Portb.2 = 1
Waitms 200
Portb.2 = 0
Portb.3 = 1
Waitms 200
Portb.2 = 0
Portb.3 = 0
Else
Portb.2 = 0
Portb.3 = 0
End If

Loop
End
Сообщение # 10        
caha2011
аватар
  Постов: 766   Друзья 
Цитата looksfilm ()
Вот че вышло)
Я попробовал скомпилировать выдает ошибку
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Внимание! Форум переехал на Tehnodium.ru



© 2010-2022 "Форум Радиосхемы". All Rights Reserved  Почта  PDA