С этим кодом динамик еле слышно постоянно пищит. Я хотел громче.
Транзистор греется.
С этим кодом динамик еле слышно постоянно пищит. Я хотел громче.
Транзистор греется.
Последний раз редактировалось kadushkin; 16.03.2012 в 01:06.
Варианта неисправностей
1-транзистор не правильно подключен
2-динамик все таки оплавился
3-Транзистор умер
4-резистор не 1к , а 1м или в обрыве
Последний раз редактировалось Chip; 16.03.2012 в 01:20.
Разобрался. На схеме ошибка с ЭКБ транзистора.
Работает, спасибо.
Chip
Ты ссылку на голосовое воспроизведение обещал
Странно:
это работает и пример из ардуино работает.void setup()
{
pinMode(11, OUTPUT);
analogWrite(11, 70);
}
void loop()
{
}
а то, что ты дал по ссылке - нет.
Последний раз редактировалось kadushkin; 16.03.2012 в 21:41.
По ссылке я сам проверял, все отлично работает
Надеюсь ты догадался скачать файлы прикрепленные?
Последний раз редактировалось Chip; 16.03.2012 в 21:49.
Ну конечно скачал файлы, без них бы и не компилировалось
Подключено к 11ому входу
Все компилируется, а звука нет
#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include "listen.h"
#include "repeat.h"
#include "performed.h"
#include "sounddata.h"
#include "song.h"
#include "ding.h"
#include "droid.h"
#include "boing.h"
#include "go.h"
int speakerPin = 3;
int speakerPin2 = 11;
volatile uint16_t sample=0;
volatile uint8_t lastSample, FirstSample;
volatile byte new_data,future_data,old_data;
volatile byte stat=0;
unsigned char *wave;
unsigned int length;
void setup()
{
pinMode(speakerPin, OUTPUT);
digitalWrite(speakerPin, LOW);
pinMode(speakerPin2, OUTPUT);
digitalWrite(speakerPin2, LOW);
}
void loop()
{
// play_wave((unsigned char *)listen, listen_length);
// _delay_ms(1500);
// play_wave((unsigned char *)droid, droid_length);
// _delay_ms(1500);
//play_wave((unsigned char *)sounddata, sounddata_length);
// _delay_ms(1500);
play_wave((unsigned char *)song, song_length);
// _delay_ms(1500);
// play_wave((unsigned char *)ding, ding_length);
// _delay_ms(1500);
// play_wave((unsigned char *)boing, boing_length);
// _delay_ms(1500);
// play_wave((unsigned char *)go, go_length);
// _delay_ms(1500);
// play_wave((unsigned char *)go, go_length);
// _delay_ms(1500);
// play_wave((unsigned char *)repeat, repeat_length);
// _delay_ms(500);
// play_wave((unsigned char *)performed, performed_length);
// _delay_ms(500);
// if (digitalRead(12)==LOW)
// {
// while(digitalRead(12)==LOW) delay(30);
// wave=(unsigned char *)listen;
// _delay_us(10);
}
//************************************************** ******************
void play_wave(unsigned char *wave_data, unsigned int wave_length)
{
wave=wave_data;
length=wave_length;
startPlayback();
}
//************************************************** ******************
ISR(TIMER2_COMPA_vect)
{
switch (stat)
{
case 0:{
old_data = pgm_read_byte(&wave[sample]);
OCR2A = old_data;
stat=1;
++sample;
if (sample == length) stat=4;
future_data = pgm_read_byte(&wave[sample]);
new_data = (old_data+future_data)/2;
}
break;
case 1: {OCR2A=(old_data+new_data)/2; stat=2; }
break;
case 2: {OCR2A = new_data; stat=3; }
break;
case 3: {OCR2A=(new_data+future_data)/2; stat=0; }
break;
case 4: if(lastSample==0) stat=5; else {--lastSample; OCR2A=lastSample;}
break;
case 5: stopPlayback();
break;
}
}
//************************************************** ******************
void startPlayback()
{
sample=0;
stat=0;
ASSR |=(1<<AS2);
TCCR2A |= ((1<<COM2B1)|(0<<COM2B0)|(1<<COM2A1)|(0<<COM2A0)|( 1<<WGM21)|(0<<WGM20));
TCCR2B = ((0 << CS22) | (0 << CS21) | (1 << CS20) | (0<<WGM22) | (1<<FOC2A) | (1<<FOC2B));
lastSample = pgm_read_byte(&wave[length-1]);
FirstSample = pgm_read_byte(&wave[0]);
TCNT2 = 0;
TIMSK2|=(1<<OCIE2A);
sei();
for (int i=0; i <FirstSample; i++)
{
new_data=i;
stat=2;
sample = 0;
_delay_us(10);
}
stat=0;
}
void stopPlayback()
{
TIMSK2&=(0<<OCIE2A);
TCCR2B &=(0<<CS10);
}
И не будет, зачем ты delay закоментировал. Там же ясно написано что звук воспроизводится в фоновом режиме, то есть без паузы он будет все время начинаться по циклу с начала так и не начавшись
Не проще было попробовать скетч в том виде как он выложен, и ни чего не править?
Это все равно что купить автомобиль, открутить у него колеса и пожаловаться что машина не едет
Последний раз редактировалось Chip; 16.03.2012 в 22:04.
Все равно не работает, я собственно и менял из-за того, что не работало.
Может для Меги 2560, что-то другое надо?
На Меге этот скетч не будет работать
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)