-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: 6 basis LEDs als batteriestatus-Anzeige nutzen

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.12.2007
    Ort
    Berlin
    Alter
    33
    Beiträge
    211

    6 basis LEDs als batteriestatus-Anzeige nutzen

    Anzeige

    Ist sicher ein alter hut und wurde von vielen schon vorgemacht...

    Ich möchte die 6 LED des RP6 als Ladungsanzeige der Akkus nutzen -soweit so gut... doch wie programmieren? Da ich noch nocht sonderlich viel erfahrung mit C habe ist das immer noch leichter gesagt als getan *grins*

    find auch im handbuch leider noch nichts über das genauere auslesen des batteriespannung (abgesehen von der kurzen umschreibung "Sensorik" S.17) um diese dann einer LED zu zuordnen...

    wär nett wenn mir da jemand weiterhelfen könnte, ev auch mit einem beispiel

    Danke vorab !

    MfG carlitoco

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    32
    Beiträge
    731
    Du teilst die höchst mögliche Spannung durch 6 Teile, je nachdem in welchem Bereich die tatsächliche Spannung ist, lässt du die LEDs leuchten.
    Fertig!

    Die Funktionen zum auslesen der Spannung und zum ansteuern der LEDs stehen in der Dokumentation!

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.12.2007
    Ort
    Berlin
    Alter
    33
    Beiträge
    211
    hast ja recht ich wollts mal mit n bischen Faulhiet versuchen *grins*

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    32
    Beiträge
    731
    Super Einstellung! Weiter so...

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.12.2007
    Ort
    Berlin
    Alter
    33
    Beiträge
    211
    Wie involviere ich das jetzt in einem Programm?
    habe da nun schon ne weile dran rumgebastelt... komme aber nicht zur lösung...

    wäre um nen kleinen hinweis froh!

    Code:
    #include "RP6RobotBaseLib.h"
    int main(void)
    {
          initRobotBase();
          startStopwatch1();
          while(true)
          {
                if(getStopwatch1() > 300)
                {
    
                      writeString_P("\nADC Akku: ");
                      writeInteger(adcBat, DEC);
                      writeChar('\n');
                      
                      if(adcBat < 1000)
                      		setLEDs(0b011111);
    
                      if(adcBat < 900)
                      		setLEDs(0b001111);
                      		
    						if(adcBat < 800)
                      		setLEDs(0b000111);
                      		
                      if(adcBat < 700)
                      		setLEDs(0b000011);
                      		
                      if(adcBat < 600)
                      		setLEDs(0b000001);
                       if(adcBat < 550)
                      		setLEDs(0b000000);
                      		
                      setStopwatch1(0);
    				}
                
                task_ADC();
          }                
          return 0;          
    }

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    32
    Beiträge
    731
    Naja, finde die Abfrage nicht so gut, da unter umständen mehrere Bedingungen erfüllt sein können!
    Dann besser eindeutig festlegen, wann was leuchten soll:
    Code:
    if(adcBat < 1001 && adcBat > 900)
         setLEDs(0b011111);
    if(adcBat < 901 && adcBat > 800)
         setLEDs(0b001111);
    if(adcBat < 801 && adcBat > 700)
         setLEDs(0b000111);
    if(adcBat < 701 && adcBat > 600)
         setLEDs(0b000011);
    if(adcBat < 601)
         setLEDs(0b000001);

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.12.2007
    Ort
    Berlin
    Alter
    33
    Beiträge
    211
    ok soweit erstmal einleuchtend, das die Berreiche als Ganzes festgelegt werden sollten...

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.12.2007
    Ort
    Berlin
    Alter
    33
    Beiträge
    211
    Binde ich das dann in einem Programm in die "main" ein oder lege ich da auch so nen "(void)Batterystatus(void) an?
    Das ist mir alles noch nicht ganz klar.

    Danke vorab !
    MfG carlitoco

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Na, ihr macht's euch ja echt einfach. Ich würde erstmal den Wert für volle Akkus (=alle LEDs) ermitteln, dann den Wert für's unterste Limit (steht in der Doku). Dann sollten bei viel Power alle, bei weniger Power weniger grüne und bei fast leer nur noch die roten LEDs leuchten. Bei minimum (oder kleiner) sollten dann die roten blinken (stromsparend).

    Zu eurer aktuellen Version: Es wird immer das Ergebniss der letzten Abfrage angezeigt. Wenn also erst auf < 1000 erkannt wird, es aber 500 sind, wird die Ausgabe am Ende vom < 550 überschrieben. Das geht so schnell dass man es nicht bemerkt.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    32
    Beiträge
    731
    Ich würde eine Funktion schreiben in der Dein Code zur überprüfung der Spannung und setzen der LEDs steht.
    Diese Funktion kannst du dann in der while Schleife aufrufen.
    Kannst es auch per Timer machen.

    @radbruch
    Hab ich doch schon am Anfang geschrieben...
    Und was meinst du mit aktuelle Version? Bei meiner Version passiert das mit dem überschreiben nicht.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •