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;