-         

Ergebnis 1 bis 10 von 10

Thema: Asuro Projekt

  1. #1
    Neuer Benutzer
    Registriert seit
    14.01.2008
    Alter
    28
    Beiträge
    2

    Asuro Projekt

    Anzeige

    Grüß Euch,

    wir sollenten vor einiger zeit in unsere schule ein thema angeben und wir haben uns eine asuro programmierung ausgedacht nun ist das problem das wir nur grundlagen hatten und wir aber ein asuro machen müssen der auf geräusche reagiert kennt ihr da irgendwelche Quellcods?

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.11.2006
    Ort
    Hamburg
    Alter
    25
    Beiträge
    384
    Hi Huptim
    das video passt zu dem Thema. aber wie genau das funktioniert weiß ich nicht ich habs nur zufällig mal gesehen:
    http://www.youtube.com/watch?v=D-anbOj4O1c&NR=1

    mfg
    Erik

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    24
    Beiträge
    1.641
    nee Quellcodes hab ich keien aber ist doch simpel.. du brauchst natürlich erstmal nen mikro. Das Signal kannst ja übern AC/DC einlesen (dafür wirst du irgendeine andere funktion weglassen müssen, zum Beispiel Linienfolgen) und wenn der Pegel hoch ist gibts Geräusche
    o
    L_
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!

    http://de.youtube.com/watch?v=qV1cZ6jUeGE

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    das video passt zu dem Thema. aber wie genau das funktioniert weiß ich nicht ich habs nur zufällig mal gesehen:
    http://www.youtube.com/watch?v=D-anbOj4O1c&NR=1
    Die Anleitung dazu steht im Elektor-Mikrocontrollersonderheft Nr1.

    robo

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.11.2006
    Ort
    Hamburg
    Alter
    25
    Beiträge
    384
    Zitat Zitat von Lunarman
    Das Signal kannst ja übern AC/DC einlesen (dafür wirst du irgendeine andere funktion weglassen müssen, zum Beispiel Linienfolgen) und wenn der Pegel hoch ist gibts Geräusche
    So kann man, aber doch nur die Lautstärke messen oder seh ich das falsch. Ich weiß ja nicht wie Umfangreich das Projekt werden soll, aber die Höhe der Töne herauszufinden wäre doch mal ne nette Herausforderung. Meinen bescheidenen Akustik kenntnissen nach würde ich mal behaupten, dass man dann die Wellenlänge messen müsste. Wäre der ATmega dafür denn schnell genug? Ich hätte nämlich ein Mikrofon zwar keine Zeit aber wenn man mal Zeit hätte könnte man sich ja mal damit beschäftigen, das hat mich sowieso immer mal interessiert. Naja soviel erstmal.

    mfg
    Erik

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Meinen bescheidenen Akustik kenntnissen nach würde ich mal behaupten, dass man dann die Wellenlänge messen müsste. Wäre der ATmega dafür denn schnell genug?
    Er ist schnell genug. Meine ich nur oder habe ich es schon mal erwähnt:
    Die Anleitung dazu steht im Elektor-Mikrocontrollersonderheft Nr1.

    Die Schaltung des Mikrofonverstärkers als auch wie so ein Programm aufzubauen ist.

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Mein 8MHz-ATMega32 (auf dem RP6) liest mit dem ADC ein Audiosignal vom PC/MP3-Player und gibt den Pegel (2-bit) mit LEDs aus. Gleichzeitig wird das Signal noch an zwei DA-Pins ausgegeben. Noch in der Entwicklung mit miesem Sound, als Anregung gedacht:

    Code:
    //RP6 als Tonband  Ohne Library Aufnahme: PortA4 Wiedergabe: PortC0 2.1.2008 mic
    
    #include <avr/io.h>			// I/O Port definitions
    #include <avr/interrupt.h>	// Interrupt macros
    #ifndef F_CPU
    #define F_CPU 8000000
    #endif
    
    // Einstellungen für UART und LEDs aus der RP6-Lib
    #define BAUD 38400  // 38400 Baud
    #define UBRR_BAUD	((F_CPU/(16*BAUD))-1)
    #define SL1 (1 << PINC4)
    #define SL2 (1 << PINC5)
    #define SL3 (1 << PINC6)
    #define SL4 (1 << PINB7)
    #define SL5 (1 << PINB1)
    #define SL6 (1 << PINB0)
    // A shadow register that simplifies usage of status LEDs:
    union {
     	uint8_t byte;
    	struct {
    		unsigned LED1:1;
    		unsigned LED2:1;
    		unsigned LED3:1;
    		unsigned LED4:1;
    		unsigned LED5:1;
    		unsigned LED6:1;
    		unsigned reserved1:1;
    		unsigned reserved2:1;
    	};
    } statusLEDs;
    void updateStatusLEDs(void)
    {
    	DDRB &= ~0x83;
    	PORTB &= ~0x83;
    	if(statusLEDs.LED4){ DDRB |= SL4; PORTB |= SL4; }
    	if(statusLEDs.LED5){ DDRB |= SL5; PORTB |= SL5; }
    	if(statusLEDs.LED6){ DDRB |= SL6; PORTB |= SL6; }
    	DDRC &= ~0x70;
    	PORTC &= ~0x70;
    	DDRC |= ((statusLEDs.byte << 4) & 0x70);
    	PORTC |= ((statusLEDs.byte << 4) & 0x70);
    }
    inline void setLEDs(uint8_t leds)
    {
    	statusLEDs.byte = leds;
    	updateStatusLEDs();
    }
    
    void Init(void)
    {
    	cli();
    	// UART:
    	UBRRH = UBRR_BAUD >> 8;	// UART 38400 Baud
    	UBRRL = (uint8_t) UBRR_BAUD;
    	UCSRA = 0x00;
       UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
       UCSRB = (1 << TXEN) | (1 << RXEN) | (1 << RXCIE);
    
    // ADC interne Referenz 2,56V, Ergebniss linksbündig, Kanal ADC4 (E_INT1)
    	ADMUX = (1<<REFS1) | (1<<REFS0)  | (1<<ADLAR) | 4;
    // setzte free running triggern
    	SFIOR = (0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
    // interupt, Wandler einschalten, prescaller /128 (62500Hz)
    	ADCSRA = (1<<ADIE) | (1<<ADEN) | (1<<ADPS2) | (0<<ADPS1)  | (1<<ADPS0);
    // Autotriggern bedeutet jetzt free running aktivieren, altes Flag löschen
    	ADCSRA |= (1<<ADATE) | (1<<ADIF);
    // Initialisierung starten
    	ADCSRA |= (1<<ADSC);
    // und noch die wohl eher unnötige Initiallesung
    	while (!(ADCSRA & (1<<ADIF)));
    	ADCSRA |= (1<<ADIF);
    	DDRC |= 3;
    	sei();
    }
    
    int main(void)
    {
    	uint8_t i;
    
    	Init();
    	setLEDs(1);
    	for (i='a'; i<='z'; i++)
    	{
    		while (!(UCSRA & (1<<UDRE)));
    		UDR = i;
    	}
    	while (!(UCSRA & (1<<UDRE)));
    	UDR = '\n';
    	while (!(UCSRA & (1<<UDRE)));
    	UDR = '\r';
    	while(1);
    	return(0);
    }
    ISR(ADC_vect)
    {
    	static uint8_t adc_temp=0, count=0;
    
    	adc_temp=(ADCH & 3);
    	setLEDs(1);
    	if (adc_temp >0) setLEDs(8);
    	if (adc_temp >1) setLEDs(16);
    	if (adc_temp >2) setLEDs(32);
    	if (adc_temp == 0)
    		{
    		DDRC |= 3;
    		PORTC &= ~3;
    	}
    	else if (adc_temp == 1)
    	{
    		DDRC |= 3;
    		PORTC |= 1;
    		PORTC &= ~2;
    	}
    /*
    	if (adc_temp == 2)
    	{
    		DDRC |= 1;
    		PORTC |= 1;
    		DDRC &= ~2;
    		PORTC &= ~2;
    	}
    */
    	else if (adc_temp > 1)
    	{
    		DDRC |= 3;
    		PORTC |= 3;
    	}
    	if (count++ == 3) count=0;
    	//UDR = adc_temp + '0';
    	//UDR = '\n';
    }
    Das Programm verwendet den ADC-Interrupt und gibt den gemessenen Wert in der ISR wieder aus. Die Samplerate ist der prescaler des ADC. Der Eingang hat einen 10K PullUp und das Eingangssignal sollte nicht höher als 5V sein. Ein Kopfhörerausgang sollte genügen, Lautstärke von 0 langsam steigern!

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Neuer Benutzer
    Registriert seit
    14.01.2008
    Alter
    28
    Beiträge
    2

    Danke erstmal

    Soweit schon mal ganz gut zu dem Umfang der Arbeit ganz einfach wir sollten uns ein thema aussuchen haben Asuro genommen und speziel uns darauf geeinigt das wir ein machen der entweder sprachgesteurrt ist oda halt von geräuschen!! nun ist halt das ding das ich dachte wir finden was im inet darüber aba ist halt bißchen schwer!!! dachte halt das einer von euch da vllt irgendwo sowas schon mal gesehen hat oda selbst gemacht hat ! das wäre super ich mein man könnt natürlich auch was anderes machen aba da fehlen mir auch wieder die Ideen und die kenntnisse also ich kann nur was mit vorlagen anfangen und dann müssen wir diese auch noch erklären könn nur das würde ich mir dann schon iregendwie hinbiegen !! vllt habt ihr ja ein paar ideen die ganz umfangreich und einfach zu realiesieren sind !!

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.11.2006
    Ort
    Hamburg
    Alter
    25
    Beiträge
    384
    Also ein micro an einen ADC port zu schließen und den dann auszulesen wäre relativ simpel so kann man ihn dann auf Klatschen oder andere Laute reagieren lassen. Aber spracherkennung wird dann wohl etwas komplizierter.

    mfg
    Erik

  10. #10
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    hupti: deine ausrufezeichen-taste klemmt!!!!einseinself



    nein im ernst: für eine spachsteuerung ist der prozessor nicht audgerüstet. es wäre vermutlich möglich das mikro am ADC port auszulesen, und dann tonhöhen zu bestimmen. auch klatschen wäre möglich (z.B. einmal klatschen: vorwärts, 2x klatschen: rückwärts... oder so.)
    kleinschreibung ist cool!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •