Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Created on : 29 Sep 2017
- Author: Maciej Ryba
- */
- #include <avr/io.h>
- #include <avr/interrupt.h>
- #include <util/delay.h>
- #include "LCD/lcd44780.h"
- uint16_t pomiar(uint8_t kanal);
- uint32_t map(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max);
- int main()
- {
- lcd_init();
- uint16_t volt;
- uint32_t procent;
- /* Konfiguracja ADC */
- ADMUX |= (1<<REFS0); //| (1<<REFS1); // Vref = Vcc
- ADCSRA |= (1<<ADPS0) | (1<<ADPS0) | (1<<ADPS0); // preskaler 128
- ADCSRA |= (1<<ADEN); // ADC enable
- /* */
- for(;;)
- {
- volt = pomiar(0);
- //lcd_cls();
- lcd_locate(0,0);
- lcd_int(volt);
- procent = map(volt, 0, 1023, 0, 100);
- lcd_locate(1,0);
- lcd_int(procent);
- //_delay_ms(25);
- }
- }
- uint16_t pomiar(uint8_t kanal)
- {
- ADMUX = (ADMUX & 0xF8) | kanal; // wybrany kanal ADC
- ADCSRA |= (1<<ADSC); // start pomiaru
- return ADCW; // pomiar z rejestrów ADCH i ADCL
- }
- uint32_t map(uint16_t x, uint16_t in_min, uint16_t in_max, uint16_t out_min, uint16_t out_max)
- {
- return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement