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

[ATMEGA8][C]Wyświetlania mAh i napisu o odłączeniu zasilania

Faber33 13 Lip 2010 16:13 1776 18
  • #1 8287971
    Faber33
    Poziom 16  
    Witam. Mam takie pytanie...bo nie znalazłem nigdzie odpowiedzi tylko gotowe projekty mierników z opcją wyświetlania ilość mAh oddawanych przez zasilacz do obciążenia. Wystarczy to rozwiązać programowo???Jeśli tak to w jaki sposób.

    A drugie pytanie mam do Was jak wyświetlić Napis np. " Zasilanie Odłączono" na LCD gdy temperatura przekroczy 85 stopni...mam to rozwiązanie sprzętowo za pomocą przekaźnika. Tylko nie wiem jak wpisać w program aby zamiast pomiarów był cały czas wyświetlany ten napis (najlepiej gdyby migał) do puki temperatura nie spadnie poniżej wartości powiedzmy 60 stopni????

    Z góry dziękuje za pomoc :)
  • #2 8288652
    bolek
    Poziom 35  
    Pierwszy problem rozwiązujesz np w ten sposób:

    Pytasz google jak dziecka "mAh oznacza" i google daje ci linki z ewentualnymi rozwiązaniami. np taki http://news.elektroda.pl/co-oznacza-mah-t9758.html

    Czytasz i myślisz jak to zrobić, więc twój post powinien brzmieć że zrobiłeś tak a tak i ewentualnie gdzie jest byk, bo nie chce działać :)

    Drugie pytanie trochę dla wróżki sie nadaje. A skąt ten przekaźnik wie że jest przekroczona temperatura i ma się wyłączyć?
  • #3 8288836
    Faber33
    Poziom 16  
    stąd wie że jest sterowany tranzystorem w którym baza podłączona jest do jednego z wyjść atmegi8 (PD0) i jak pojawia się na czujniku (Lm35) temperatura powyżej 85 stopni to na wyjściu atmega ustawia stan wysoki a jak temperatura spadnie to z powrotem na niski :P tak to działa:P
  • #4 8288920
    bolek
    Poziom 35  
    Sam pisałes ten program?
  • #5 8289468
    Faber33
    Poziom 16  
    tą część programu pisałem sam :P jestem początkujący w programowaniu więc wymyślenia jak to powinno być liczone nie jest taką prostą sprawą. Z tego co wiem Ah liczy się mnożąc wartość prądu przez czas. Tylko ja zdefiniować czas w trakcie którego ta pewność ilość Amperów przepływa przez dany odbiornik????
  • #6 8290008
    bolek
    Poziom 35  
    Dokładnie. Ta atmega pewnie pokazuje ci wartość prądu, więc powiedzmy że co 1s dodajesz jego wartość do jakiejś zmiennej. Przy wyświetlaniu dzielisz ją przez 3600.

    Jeśli chodzi o komunikat, to w miejscu gdzie masz wyświetlanie robisz warunek że "jeśli temp. większa niż ileś tam to wyświetl to zamiast tego"

    Dobrym zwyczajem jest wklejenie softu
  • #7 8290226
    Faber33
    Poziom 16  
    aha...co do komunikatu to jak zrobić "wyświetl to zamiast tego"????
  • #8 8290319
    Konto nie istnieje
    Poziom 1  
  • #9 8290429
    bolek
    Poziom 35  
    atom1477 napisał:
    No bez jaj.
    Tak samo jak zrobiłeś sterowanie pinem w zależności od temperatury.


    A ja czuje że nic nie zrobił. Nie ma wsadu, temat jałowy...
  • #10 8290750
    Faber33
    Poziom 16  
    ale co ma wyświetlanie do sterowanie pinem :P??? Po prostu nie wiem jak zrobić aby jeśli przekaźnik odłączy obciążenie ...zamiast pomiarów był wyświetlany ten napis...próbowałem to zrobić to zamiast działać tak jakbym chciał napis był cały czas wyświetlany obok pomiarów :/

    bolek to co Ty czujesz to Twoja sprawa:P
  • #11 8290813
    bolek
    Poziom 35  
    Nie świruj. Jeśli zrobiłeś pomiar temperatury i względem niego sterowanie przekaźnika, pomiar prądu, obsługę wyświetlacza LCD, etc... w sumie skąplikowane rzeczy to jakim niby cudem nie potrafisz zrobić tak prostego warunku?!. Na swojej drodze nie spotkałeś się z If lub case?

    Wciąż nie ma wsadu. Co, kwalifikuje się do nagrody Nobla? (chyba prędzej nagrody Hopla :P
    Bez tego można sobie gdybać we w piździeć. Nikt nie wie w jaki sposób jest to napisane, jakie biblioteki więc nie spodziewaj się że ktoś ci napisze gotowca którego sobie po prostu wkleisz!.
    Ogarnij się i nie pisz więcej postów które pomogą w rozwiązaniu twojego problemu.

    To by było na tyle. :)
  • #12 8290842
    Faber33
    Poziom 16  
    ehh:P...taki problem że to nie mój kod:P ja tylko sobie dopisałem to czego mi w tym mierniku brakowało:P Jestem początkującym w programowaniu więc tak nie skacz po mnie...heh:P Z if się spotkałem :P ale z case jeszcze nie ;) Mógłbyś objaśnić jeśli możesz co ona oznacza i jak ją w tym przypadku wykorzystać ;)
  • #13 8290953
    bolek
    Poziom 35  
    Nie becz :)
    Domyślam się że grzebałeś tutaj

    Faber33 napisał:

    
    void lcd_Odl(void)
    {
           {
    if(temperatura >= Temp_max
           }
    
    		pierwsza();	
    		write_text("  Zasialanie Odłaczone ");		
    		write_data(Temp_max);
    		write_char(0b00000001);
    }			
    



    Na pewno masz pokićkane {}, zrób tak
    void lcd_Odl(void)
    {
           
    if(temperatura >= Temp_max
           {
    
    		pierwsza();	
    		write_text("  Zasialanie Odłaczone ");		
    		write_data(Temp_max);
    		write_char(0b00000001);
           }
    }	


    Poza tym, nie widzę (aczkolwiek mogę się mylić) gdzie wywołujesz tą procedurę. Dwa, wątpie aby wyświetliło ci "ł"

    O co chodzi z CASE? ściągnij jakikolwiek kurs. Daje się je w przypadku gdy trzeba postawić kilka if'ów
  • #14 8291062
    Faber33
    Poziom 16  
    zapewne nigdzie nie jest ta procedura wywoływana bo niczego innego nie dopisywałem:/
  • #15 8291131
    szelus
    Poziom 34  
    Możesz zrobić np. tak:
    
        if (PORTD & _BV(PD0)
        {
            if(menu==0) // prad napiecie
            {
                 lcd_U_I();               
            }
    
            if(menu==1) /// moc rezystancja
            {
                lcd_P_R();      
            }
        }
        else
        {
            czysc();
            lcd_Odl();
        }
    
          if(menu==2) // temp fan
             {
             lcd_T_FAN();
    
    [...]
    
    void lcd_Odl(void)
    {
          pierwsza();   
          write_text("  Zasialanie Odłaczone ");      
          write_data(Temp_max);
          write_char(0b00000001);
    } 
    
  • #16 8291157
    bolek
    Poziom 35  
    Wisz gdzie wstawić? może np tu gdzie wyświetlany jest U i I
    Dla zdrowej zasady Pierwsza () daj tylko raz. Potem dajesz warunek, jeśli będzie spełniony dostaniesz napis, w przeciwnym wypadku wyświetli normalny napis

    
    void lcd_U_I(void)
    {
                pierwsza();   
                if(temperatura >= Temp_max
           {  
          write_text("  Zasialanie Odłaczone ");      
          write_data(Temp_max);
          write_char(0b00000001);
           } 
    	else
    	{
    	write_text(" ");
                write_data(napiecie_int);
                write_text(".");
                if(napiecie_float<10)
                {
                write_text("0");
                }
                write_data(napiecie_float);            
                write_text("V");               
                write_text(" ");
                write_data(pradogr_int);
                write_text(".");
                if(pradogr_float<10)
                {
                write_text("0");
                }
                
                if(pradogr_float<100)
                {
                write_text("0");
                }      
                write_data(pradogr_float);            
                write_text("A");
    	}
    
    
                druga();
    
                write_text(" ");
                write_data(prad_int);
                write_text(".");
                if(prad_float<10)
                {
                write_text("0");
                }
                
                if(prad_float<100)
                {
                write_text("0");
                }      
                write_data(prad_float);            
                write_text("A");
                write_text(" ");
                
                if((napiecie*prad)<1)
                {
                write_data(napiecie*prad*1000);
                write_text(" mW ");
                }
                else
                {
                write_data(napiecie*prad);
                write_text(" W ");            
                }
    }
  • #17 8291643
    Faber33
    Poziom 16  
    hmm...coś jest jeszcze nie tak z tym bo pojawia się ten napis w odpowiednim czasie i miejscu...tylko że miga się on na przemian z wartością napięcia...a pozatym z kolejnego trybu przy pojawieniu napisu obok pojawia się temperatura :/
  • #18 8295453
    Faber33
    Poziom 16  
    Może brakuje jakiegoś czyszczenia po wyświetlaniu pomiarów???? może ktoś wie jak to rozwiązać :)???

    Dodano po 3 [godziny] 22 [minuty]:

    Wie ktoś????czy każdy głupiego udaje :/????Ehh
  • #19 8299432
    PO.
    Poziom 20  
    Faber33 napisał:
    tą część programu pisałem sam :P jestem początkujący w programowaniu więc wymyślenia jak to powinno być liczone nie jest taką prostą sprawą. Z tego co wiem Ah liczy się mnożąc wartość prądu przez czas. Tylko ja zdefiniować czas w trakcie którego ta pewność ilość Amperów przepływa przez dany odbiornik????


    A o całkowaniu i różniczkowaniu słyszałeś :) ? Stąd sobie weźmiesz czas analogicznie.


    PS: nikt nie udaje, tu sami głupi że Ci pomagamy ;) .

    PS2: znowu ta pierwsza, druga... Ogarnij normalnie obsługę tego lcd, zastanów co się dzieje, dopisz sobie odpowiednie funkcje jeśli trzeba, jak chociażby czyszczenie lcd bo nie widzę.
    Ja wiem, że nauka boli ale jak się już normalnie nauczysz to nie będziesz tracił tu czasu na proszenie się o bzdurę tylko trzaśniesz sam jeszcze pięć innych takich pseudoproblemów.
    A żeby nie było, że jestem złośliwy - funkcje od lcd są z czyjejś prywatnej biblioteki i tak samo mam prawo nie wiedzieć co robią :) jak Ty, choćby się nie wiem jak nazywały i mógłbym mniej więcej po tych nazwach skojarzyć (to mogę błędnie, bo nie mam źródła).
REKLAMA