void DisplayResult() { uart_puts("Temperatura: "); uart_putint( temp, 10 ); uart_puts("\nWilgotnosc: "); uart_putint( hum, 10 ); uart_puts("%\r\n"); }
void SendTempUSART() { uart_puts("Temperatura: "); uart_putint( t_integer); uart_puts("."); uart_putint( t_fractional); uart_puts("\r\n"); }
int main(void) { //uart_set_FrameFormat(USART_8BIT_DATA|USART_1STOP_BIT|USART_NO_PARITY|USART_ASYNC_MODE); // default settings uart_init(BAUD_CALC(115200)); // 8n1 transmission is set as default stdout = &uart0_io; // attach uart stream to stdout & stdin stdin = &uart0_io; // uart0_in if no TX and uart0_out if no RX (depends on config macros) sei(); // enable interrupts, library wouldn't work without this uart_puts("hello from usart 0\r\n"); // write const string to usart buffer // C++ restriction, in C its the same as uart_putstr() //uart_puts("hello world\r\n"); // write const string to usart buffer // C++ restriction, in C its the same as uart_putstr() // if you do not have enough SRAM memory space to keep all strings, try to use puts_P instead uart_puts_P("hello from flashed, usart\r\n"); // write string to usart buffer from flash memory // string is parsed by PSTR() macro _delay_ms(5000); uart_puts_p(foo_string); char buffer[25]; uart_gets(buffer, 25); // read at most 24 bytes from buffer (CR,LF will not be cut) int a; uart_puts("gimmie a number: "); a = uart_getint(); uart_puts("numba a: "); uart_putint(a); uart_puts("\r\n"); while(1) { uart_puts("bytes waiting in receiver buffer : "); uart_putint(uart_AvailableBytes()); // ask for bytes waiting in receiver buffer //uart_getsln(buffer, 25); // read 24 bytes or one line from usart buffer if (!strcmp(buffer, "people who annoy you")) { uart_putc('>'); _delay_ms(5000); uart_puts_P(" naggers"); } uart_puts("\r\n"); /* uart_putfloat(0.1337f); uart_puts("\r\n"); uart_putstr(buffer); // write array string to usart buffer uart_puts("\r\n"); printf("Say my name: "); scanf("%s", buffer); printf("So it's %s, You are damn' right.\n", buffer); _delay_ms(5000); */ } }
int main(void){ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ USTAWIENIA WSTÊPNE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //ustawienie ADC ADCSRA |= (1<<ADEN); // w³¹cz ADC ADCSRA |= (1<<ADPS2); // preskaler = 16 ADMUX = REF_VCC; // ustawiamy wewn Ÿród³o odniesienia //koniec ustawieñ ADC //przygotowanie przycisku na PD2 do u¿ycia DDRD &= ~(1<<PD2); PORTD |= (1<<PD2); //koniec przygotowania przycisku //inicjalizacja UART UART_Init( __UBRR ); // inicjalizacja UART //koniec inicjalizacji UART sei(); // zgoda na przerwania char zezwolenie = 0; //zmienna zezwolenie jest na potrzeby przycisku, po wciœniêciu ustawia siê na 0 i blokuje ponowne wciœniêcie, //natomiast po puszczeniu ustawia siê na 1 i pozwala na ponowne u¿ycie przycisku //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ KONIEC USTAWIEÑ WSTÊPNYCH ~~~~~~~~~~~~~~~~~~~~~~~~ while(1){ if(pomiar(5)>18){ //minimalne napiêcie z czujnika to oko³o 91mV, ten if zabezpiecza przed pikami poni¿ej tej wartoœci licznik2=pomiar(5);//wykonanie pomiaru i nadpisanie zmiennej licznik2 for(int juuu=1; juuu<=10; juuu++){ //ta pêtla sprawdza czy wykonany pomiar jest wiêkszy od którejœ wartoœci w tablicy i zastêpuje j¹ if(licznik2>tablica[juuu]){ tablica[juuu]=licznik2; juuu=10; // jak wejdzie do tego ifa, to wyskakuje z pêtli, nie przeszukuje jej dalej czyli wybiera pierwsz¹ napotkan¹ } } SUMA=0; //zerowanie SUMY z poprzedniego pomiaru for(int juuu=0; juuu<=10; juuu++){ // sumowanie ca³ej tablicy SUMA=SUMA+tablica[juuu]; } SUMA=SUMA/10; // podzielenie ca³ej tablicy przez iloœ elementów (œrednia) SUMA_pomoc=SUMA*5/1023; // przeliczenie uœrednionego ADC na V SUMAmV=SUMA_pomoc*1000; // przejscie na mV SUMA_pomoc=SUMAmV*26.91 - 2449; // przeliczenie tego wszystkiego si³ê //obs³uga UARTA, wypisanie wyników uart_puts("POMIAR F = "); uart_putint(SUMA_pomoc, 10); uart_puts("mN, czyli: "); uart_putint(SUMA_pomoc/1000, 10); uart_puts(" N | POMIAR ADC = "); uart_putint(SUMA, 10); uart_puts(", czyli: "); uart_putint(SUMAmV, 10); uart_puts("mV"); uart_putc('\r'); uart_putc('\n'); } else{ uart_puts("Napiecie ponizej 91mV. Podlacz czujnik"); uart_putc('\r'); uart_putc('\n'); } if(!( PIND & (1<<PD2) )){//obs³uga przycisku, po naciœniêciu mozna wykonac kolejny pomiar _delay_ms(20); // opóŸnienie, a po nim kolejne sprawdzenie przycisku, w celu wyeliminowania drgañ if(!(PIND & (1<<PD2)) && zezwolenie==1){ // sprawdza czy przycisk jest wciœniêty i czy jest zezwolenie for(int juuu=0; juuu<=10; juuu++){ tablica[juuu]=0; licznik2=0; SUMA=0; zezwolenie = 0; // ustawienie braku zezwolenia na kolejne wejœcie do tego ifa } } }//koniec obs³ugi przycisku if(PIND & (1<<PD2)){ //gdy przyciski nie s¹ aktywne, ustawiane jest zezwolenie zezwolenie = 1; //ma to na celu wyeliminowanie efektu podwójnego klikniêcia } }// koniec g³ównej pêtli while }//koniec main()
void SendHumUSART() { uart_puts("Wilgotnosc: "); uart_putint(hum); uart_puts("%\r\n"); }