logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Barometr cyfrowy z wyświetlaczem graficznym LCD

marek_34 31 Lip 2011 10:27 9317 5
REKLAMA
  • Barometr cyfrowy z wyświetlaczem graficznym LCD

    Jest to układ cyfrowego barometru, którego konstrukcja opiera się na mikroprocesorze ATmega8, wyświetlaczu graficznym 128x64 oraz czujniku ciśnienia z interfejsem SPI. Wyświetlacz graficzny pokazuje ostatnie 128 pomiarów, podczas gdy nowy pomiar ukazuje się na ekranie co 20 minut. Umożliwia to sprawdzenie ciśnienia z ostatnich dwóch dni.
    Na stronie załączony jest kod w języku C, który możemy dowolnie zmieniać w zależności od potrzeb. Do wyskalowania wyświetlacza autor użył danych o ciśnieniu atmosferycznym ze stacji Teddington w Angli.

    Schemat:
    Barometr cyfrowy z wyświetlaczem graficznym LCD

    źródło: http://electronics-diy.com/digital-barometer-graphical-lcd-display.php

    Fajne? Ranking DIY
    O autorze
    marek_34
    Poziom 18  
    Offline 
    marek_34 napisał 332 postów o ocenie 271, pomógł 6 razy. Mieszka w mieście Katowice. Jest z nami od 2006 roku.
  • REKLAMA
  • #2 9793150
    hoktaur
    Poziom 12  
    Szkoda że autor nie pokazał jak wysterował ten wyświetlacz :( albo ja nie umiem tego zobaczyć - to by mnie bardziej interesowało
  • REKLAMA
  • #3 9794547
    Freddy
    Poziom 43  
    hoktaur napisał:
    Szkoda że autor nie pokazał jak wysterował ten wyświetlacz :( albo ja nie umiem tego zobaczyć - to by mnie bardziej interesowało

    Raczej to drugie, czytaj uważnie.
  • REKLAMA
  • #4 9795692
    stayout
    Poziom 14  
    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>
    .
  • REKLAMA
  • #5 9799082
    hoktaur
    Poziom 12  
    Nie wiem co mam czytać uważnie widzę że na schemacie jest podpięte zasilanie masa i czujnik do układu reszta wyjść wisi w powietrzu brak jakiegokolwiek schematu podłączenia wyświetlacza a to mnie interesuje

    ... ale to pewnie jest sprawa trywialna i każdy wie jak to podłączyć nawet dzieci w przedszkolu bo wszystko jest na google.pl :P

    P.S. interesuje mnie sposób elektryczny (czy raczej elektroniczny) nie programowy wiec dalej tego nie widzę
REKLAMA