Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <util/delay.h> // idozito, keslelteto rutinokat tart. fajl
- #include <avr/io.h> //AVR konstansokat, beallitasokat tart. fájl
- #define XBOX1() PORTB |= (1<<PB0)
- #define XBOX1ki() PORTB &= ~(1<<PB0)
- volatile int LDRbal = 0;
- unsigned char ingerkuszob = 1; // minel nagyobb ez a szam, annal erzeketlenebb lesz a robot
- void Konfig8bitADC() // ADC konfiguralas (beallitas)
- {
- ADMUX |= (1<<REFS0)|(1<<ADLAR); // Vcc mint referencia, balra rendezett ADC eredmeny
- ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0); //ADC engedelyezese, ADC eloosztas = 8 (125 KHz)
- }
- unsigned char Beolvas8bitADC(unsigned char csatorna)
- {
- ADMUX = (ADMUX & 0b11110000) | csatorna;
- ADCSRA |= (1<<ADSC); // ADC konverzio elinditasa
- while (ADCSRA & (1<<ADSC)); // varas az atalakitasra
- ADCSRA |= (1<<ADSC); // konverzió elindítás
- while (ADCSRA & (1<<ADSC)); // varas az atalakitasra
- return (ADCH); // ADC ertek visszaadasa (csak a felso 8 bit (ADCH), az also 2 zajos bit elhagyasa)
- }
- int main (void)
- {
- // PORTB |= (1<<PB2); // PD2-es lab pull-up bekapcs (nyomogomb)
- //DDRB &= ~(1<<PB0); // PC0-as lab bemenet (jobb LDR)
- DDRB &= ~(1<<PB4); // PB4-es lab bemenet (bal LDR)
- //PORTB = 0x00; // PORTB osszes laban a felhuzoellenallasok kikapcsolva
- DDRB = (1<<PINB0); //kimenet a PB0 is! //kimenet a PB0 is!
- Konfig8bitADC(); // ADC beallitas lefuttatasa
- //while (PINB & (1<<PB2)); /* várakozó cilkus amíg PD2 erteke nem 0 (amig a gomb nincs lenyomva) */
- while (1)
- {
- //LDRjobb = Beolvas8bitADC(0);
- LDRbal = Beolvas8bitADC(0);
- if (LDRbal > ingerkuszob)
- {
- XBOX1ki();
- }
- else
- {
- XBOX1();
- }
- _delay_ms(50); // egy kis kesleltetes a gyors oszcillaciok megszuntetese erdekeben
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment