Advertisement
RybaSG

Untitled

Sep 30th, 2017
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.12 KB | None | 0 0
  1. /*
  2.  Created on :   29 Sep 2017
  3.  Author:        Maciej Ryba
  4.  */
  5.  
  6. #include <avr/io.h>
  7. #include <avr/interrupt.h>
  8. #include <util/delay.h>
  9.  
  10. #include "LCD/lcd44780.h"
  11.  
  12. uint16_t pomiar(uint8_t kanal);
  13. uint32_t map(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max);
  14.  
  15. int main()
  16. {
  17.     lcd_init();
  18.  
  19.     uint16_t volt;
  20.     uint32_t procent;
  21.  
  22.     /* Konfiguracja ADC */
  23.     ADMUX |= (1<<REFS0); //| (1<<REFS1);            // Vref = Vcc
  24.     ADCSRA |= (1<<ADPS0) | (1<<ADPS0) | (1<<ADPS0); // preskaler 128
  25.     ADCSRA |= (1<<ADEN);                            // ADC enable
  26.     /*                  */
  27.  
  28.  
  29.     for(;;)
  30.     {
  31.         volt = pomiar(0);
  32.         //lcd_cls();
  33.         lcd_locate(0,0);
  34.         lcd_int(volt);
  35.  
  36.         procent = map(volt, 0, 1023, 0, 100);
  37.         lcd_locate(1,0);
  38.         lcd_int(procent);
  39.         //_delay_ms(25);
  40.     }
  41.  
  42. }
  43.  
  44. uint16_t pomiar(uint8_t kanal)
  45. {
  46.     ADMUX = (ADMUX & 0xF8) | kanal; // wybrany kanal ADC
  47.  
  48.     ADCSRA |= (1<<ADSC); // start pomiaru
  49.  
  50.     return ADCW; // pomiar z rejestrów ADCH i ADCL
  51. }
  52.  
  53. uint32_t map(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max)
  54. {
  55.   return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement