Advertisement
MagnusArias

AVR | Sterowanie pojazdem

Nov 24th, 2016
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.43 KB | None | 0 0
  1. #include <avr/io.h>
  2. #include <stdint.h>  
  3. #include <avr/interrupt.h>
  4. #include "HD44780.h"
  5.        
  6. #define ADCIN_X PC0  
  7. #define ADCIN_Y PC1
  8.  
  9. #define FORWARD 1<<PC5
  10. #define BACKWARD 1<<PC4
  11. #define PWM 1<<PD5
  12.      
  13. int main()  
  14. {  
  15.     char wynik[4];//bufor  
  16.     LCD_Initalize();   //inicjalizacja LCD  
  17.     LCD_Clear();
  18.    
  19.     TCCR0A |= (1<<COM0B1) | (1<<WGM00);
  20.          
  21.         TCCR0B |= (1<<CS01);
  22.          
  23.         ICR1 = 1023;
  24.    
  25.         DDRD |= PWM;
  26.      
  27.     ADCSRA =   (1<<ADEN)    |(1<<ADPS0)     |(1<<ADPS1)     |(1<<ADPS2);  
  28.      
  29.     ADMUX  =  (1<<REFS1) | (1<<REFS0) | (0<<MUX2) | (0<<MUX1) | (1<<MUX0);
  30.      
  31.     DDRC |= (FORWARD) | (BACKWARD);
  32.     DDRC &=~ (1<<ADCIN_Y);            
  33.    
  34.     while(1)
  35.     {
  36.            
  37.         ADCSRA |= (1<<ADSC); //ADSC: uruchomienie pojedynczej konwersji  
  38.        
  39.            while(ADCSRA & (1<<ADSC)); //czeka na zakończenie konwersji
  40.            LCD_Clear();  
  41.            LCD_GoTo(0,0);
  42.            itoa(ADC, wynik, 10);
  43.            LCD_WriteText(wynik);
  44.            LCD_GoTo(5,0);
  45.            char oc[4];
  46.            itoa(OCR0B, oc, 10);
  47.            LCD_WriteText(oc);
  48.            
  49.            if (ADC<420)
  50.            {
  51.             PORTC &= ~FORWARD;
  52.             PORTC |= BACKWARD;
  53.             OCR0B = (255) - ((51*ADC)/88);
  54.            }
  55.            else if (ADC>460)
  56.            {
  57.             PORTC &= ~BACKWARD;
  58.             PORTC |= FORWARD;
  59.             OCR0B = -((1870/7) - ((17*ADC)/28));
  60.            }
  61.            else
  62.            {
  63.             PORTC &= ~BACKWARD;
  64.             PORTC &= ~FORWARD;
  65.             OCR0B = 0;
  66.            }
  67.            _delay_ms(10);
  68.     }  
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement