Page 40 - levitation project utech
P. 40

Λογισμικό




        Ο κώδικας που ακολουθεί διαμορφώνει τη λειτουργία των
        ηχείων έτσι ώστε να παράγουν αντίθετα κύματα ίδιας                                  // turn off everything we can
        συχνότητας, προκειμένου να δημιουργηθεί το στάσιμο κύμα.                            power_adc_disable ();
                                                                                            power_spi_disable();
                                                                                            power_twi_disable();
                                                                                            power_timer0_disable();
                                                                                            power_usart0_disable();

        #include <avr/sleep.h>                                                              while(true); //ο κώδικας δεν μπαίνει σε loop
        #include <avr/power.h>
                                                                                          ISR(TIMER1_COMPA_vect)   // timer compare interrupt service routine
        byte pattern = 0b10101010;                                                        {
        void setup()                                                                        PORTC = pattern; //output portDV στις θύρες 0 to 7
        {                                                                                   pattern = ~pattern; //αντιστροφή των bits
                                                                                          }
         DDRC = 0b00011111; //τα pin A0 εως Α4 ορίζονται ως output
         PORTC = 0b00000000; //χαμηλό σήμα σε όλες τις εξόδους                            void loop(){

          // initialize timer1                                                            }
          noInterrupts();           // απενεργοποίηση διακοπών
          TCCR1A = 0;
          TCCR1B = 0;
          TCNT1  = 0;


          OCR1A = 199; // 16MHz / 200 = 80kHz -> 40kHz
          TCCR1B |= (1 << WGM12);   // CTC mode
          TCCR1B |= (1 << CS10);
          TIMSK1 |= (1 << OCIE1A);  // ενεργοποίηση timer compare interrupt
          interrupts();             // ενεργοποίηση διακοπών


          // disable ADC
          ADCSRA = 0;
   35   36   37   38   39   40   41   42   43   44   45