Cytat: So, to cover a range of two standard deviations, need to plot +/- 20 mB about mean of 1013.25 (standard atmosphere).Tests show that this is an excessive range for short term observations.
Graph range currently set by dividing constant SCALE=8 (default)
so, pixel range [0,47] corresponds to millbar range {1032.5 , 994.8 mB}
tyle Ci wystarczy by wyskalować urządzenie wg swoich potrzeb, ale faktycznie autor na stronie źródłowej za bardzo nie wgłębia się w tajniki swojej wiedzy. Mnie np. interesuje jakiego sensora ciśnienia użył, bo opis "SCP barometer pressure" to jak napisać "ryba z gatunku rybowate". Jest tego trochę na rynku a sumaryczne ceny podzespołów w porównaniu do cen gotowych rozwiązań nijak mają się do sensu budowania takiego urządzenia samodzielnie, a gdyby tak dla chęci samosprawdzenia to czemu by nie dodać czujnika temperatury i wilgotności? Wtedy w oparciu o te trzy wartości można zbudować prawdziwy "kombajn" pogodowy! (taki jak w supermarketach w promocji po 30 złociszy).
Edit
No tak - gafa.
Koledze chodziło o wysterowanie wyświetlacza a ja o wyskalowaniu w kodzie urządzenia.
Fragment kodu odpowiedzialny za "to" gdyby kolega miał problemy z koncentracją;
Cytat: 481 ////////////////////////////////////////////////////////////////////
482 //graphical lcd routines
483 ////////////////////////////////////////////////////////////////////
484
485 void lcd_send() {
486 int m;
487 for (m=0;m<nbuf;m++) {="" <br=""> uart_putc(buf[m]); Delay_ms(1);
488 }
489 return;
490 }
491
492 void lcd_cls() {
493
494 buf[0]=186; nbuf=1; lcd_send();
495 Delay_ms(50);
496 return;
497 }
498
499 // coordinate system upper left = (0,0), lower right=(127, 63)
500
501 void lcd_rect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2) {
502
503 buf[0]=200; buf[1]=2; buf[2]=x1; buf[3]=y1;
504 buf[4]=x2; buf[5]=y2; buf[6]=1; buf[7]=200;
505 nbuf=8; lcd_send(); Delay_ms(150);
506 return;
507 }
508
509 // put a pixel at (x,y) color 0=white, 1=black, 2=invert
510
511 void lcd_putpixel(uint8_t x, uint8_t y, uint8_t color) {
512
513 buf[0]=200;
514 buf[1]=5; buf[2]=x; buf[3]=y;
515 buf[4]=color; buf[5]=200;
516 nbuf=6; lcd_send();
517 Delay_ms(1); //not needed?
518 return;
519 }
520
521 void lcd_loc(unsigned char row, unsigned char col) {
522
523 buf[0]=126+row;
524 buf[1]=135+col;
525 nbuf=2; lcd_send(); //set print lcation to (row,col)
526 Delay_ms(10);
527 }
528 void lcd_printat(unsigned char row, unsigned char col, char *txt) {
529
530 lcd_loc(row,col);
531 nbuf=0;
532 while(*txt != 0) buf[nbuf++]=*txt++; //pack buffer, terminate with 255 and send
533 buf[nbuf++]=255;
534 lcd_send(); //nbuf needs to be one more than the buf location
535 Delay_ms(10);
536 return;
537 }
538
539 /*
540 * Delay_us
541 *
542 * wait in a loop for the specified number of microseconds.
543 *
544 */
545
546 void Delay_us( unsigned int microseconds )
547 {
548 register unsigned int loop_count;
549 /* 8mhz clock, 4 instructions per loop_count */
550 loop_count = microseconds<<1;
551
552 __asm__ volatile (
553 "1: sbiw %0,1" "\n\t"
554 "brne 1b"
555 : "=w" ( loop_count )
556 : "0" ( loop_count )
557 );
558 }
559
560 /* Delay_ms
561 *
562 * wait in a loop for the specified number of milliseconds.
563 *
564 */
565
566 void Delay_ms( unsigned int milliseconds )
567 {
568 uint16_t i;
569
570 for ( i = 0; i < milliseconds; ++i )
571 {
572 Delay_us( 1000 );
573 }
574 }
575
576 </nbuf;m++)></toie2);></cs22)|(1<<cs21)|(0<<cs20);></ursel)|(3<<ucsz0);></rxen)|(1<<txen);></int0);></pd2);></pd1);></pc0)|(1<<pc2)|(1<<pc3);></pb0);></samples;></minutes;></minutes;></math.h></avr></avr></avr></stdio.h>
.