- 3D-Druck Einstieg und Tipps         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: Char mit array verbinden ?

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Anzeige

    Powerstation Test
    diese info hast du uns vorenthalten! dennoch hast du nicht klar gestellt was du mit deinem 0b01111101 und dem char-wert machen willst
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  2. #12
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    diese info hast du uns vorenthalten!
    Mir war nicht bewusst, dass das wichtig ist.


    dennoch hast du nicht klar gestellt was du mit deinem 0b01111101 und dem char-wert machen willst
    Okay, ich habe einen Temperatursensor, der mir die aktuelle Temperatur in °C gibt. Dies wird in der Variable sTemp gespeichert und ändert sich, wenn die Temperatur sich ändert. Dieses sTemp hab ich getrennt, sodass wenns z.b. 23° währe, in array[0] die 2 stehen wird und in array[1] die 3 (die Werte Aktualisieren sich auch). So jetzt wollte ich die Temperatur auf der Siebensegmentanzeige anzeigen.

    Der Code funktioniert! Nur möchte ich, dass sich die ersten beiden zahlen, halt die richtige Temperatur anzeigt und sich auch ständig aktualisiert.
    Code:
        I2CTWI_transmitByte(pcf, Anzeige1);    
        I2CTWI_transmitByte(pcf2, Ziffer2); //zeige 2 auf erstem Display
        I2CTWI_transmitByte(pcf2, Aus);
        
        I2CTWI_transmitByte(pcf, Anzeige2);
        I2CTWI_transmitByte(pcf2, Ziffer3);  //zeige 3 auf zweiten Display
        I2CTWI_transmitByte(pcf2, Aus);
        
        I2CTWI_transmitByte(pcf, Anzeige3);
        I2CTWI_transmitByte(pcf2, ZifferGr);  //zeige ° auf dritten Display
        I2CTWI_transmitByte(pcf2, Aus);
        
        I2CTWI_transmitByte(pcf, Anzeige4);
        I2CTWI_transmitByte(pcf2, ZifferC);  //zeige 4 auf vierten Display
        I2CTWI_transmitByte(pcf2, Aus);

    So ich hoffe das waren genug infos.



    mfG
    Philip

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    ich geh mal davon aus, dass das Auswerten des Sensor irgendwo ständig wiederholt wird, nun brauchst du die oberen beiden transmit-Blöcke nur ein eine Funktion packen, die wir z.B. "updateDisplay(char temperatur)" nennen, in welcher du die Zerlegung bewerkstelligst und anschließend mit deinen beiden transmit-tripeln auf die Segmente legst

    diese Funktion rufst du nach dem auslesen der Temperatur einfach mit auf.

    Oder brauchst du Hilfe beim zerlegen ?

    ausgehend davon dass die temperatur IMMER 2stellig ist würd ich quick n dirty folgendes vorschlagen:

    Code:
    char toDisplay[] = {'0','0','°','C'};
    char temp;
    
    while(messen)
    {
        temp = getTemp();
        updateDisplay(temp);
    }
    
    updateDisplay(char some_temp)
    {
        toDisplay[0] = some_temp/10; //nachkommastellen werden abgetrennt
        toDisplay[1] = some_temp- (toDisplay[0] * 10);
    
        I2CTWI_transmitByte(pcf, Anzeige1);
        I2CTWI_transmitByte(pcf2, toDisplay[0]); //zeige 2 auf erstem Display     
        I2CTWI_transmitByte(pcf2, Aus);          
        I2CTWI_transmitByte(pcf, Anzeige2);     
        I2CTWI_transmitByte(pcf2, toDisplay[1]);  //zeige 3 auf zweiten Display     
        I2CTWI_transmitByte(pcf2, Aus);          
        I2CTWI_transmitByte(pcf, Anzeige3);    
        I2CTWI_transmitByte(pcf2, toDisplay[2]);  //zeige ° auf dritten Display     
        I2CTWI_transmitByte(pcf2, Aus);          
        I2CTWI_transmitByte(pcf, Anzeige4);     
        I2CTWI_transmitByte(pcf2, toDisplay[3]);  //zeige 4 auf vierten Display     
        I2CTWI_transmitByte(pcf2, Aus);
    }
    wenn deine definition von Anzeige1 - 4 nun auch noch der zahl 1-4 entspricht, kannst du auch getrost das ganze in eine Schleife packen ums schöner zu machen

    PS: irgendwie mag das Forum (oder der Editor des Forum) es nicht wenn ich Text aus einem Code-Block kopiere um es in meiner Antwort zu verwenden
    Geändert von Ceos (07.09.2011 um 12:58 Uhr)
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Kann das funktionieren? Ich muss doch "0b01111101" übertragen, und nicht "2"?

    Code:
    #define Ziffer0 0b01000100
    #define Ziffer1 0b01111101
    #define Ziffer2 0b10100100
    #define Ziffer3 0b00110100
    #define Ziffer4 0b00011101
    #define Ziffer5 0b00010110
    #define Ziffer6 0b00000110
    #define Ziffer7 0b01111100
    #define Ziffer8 0b00000100
    #define Ziffer9 0b00010100
    und
    Code:
    #define 2 0b10100100
    klappt nicht. So aktualisiere ich die Temp:
    Code:
        uint16_t adc3 = readADC(ADC_3); 
        uint16_t sTemp = (adc3 - 316+28) / 11;

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    achsoooooooooooo ^_^

    jetzt ist alles klar

    das geht am einfachsten mit einem const char[] array

    Code:
    const char[] Bitcodes = { 
    0b01000100, 
    0b01111101, 
    0b10100100, 
    0b00110100, 
    0b00011101, 
    0b00010110, 
    0b00000110, 
    0b01111100, 
    0b00000100, 
    0b00010100}
    
    ...
    Bitcodes[2] liefert den wert 0b10100100 zurück!


    damit kannst du einfach über den index des array auf das entsprechende bitmuster zugreifen!
    THEORETISCH kannst du Bitmuster für alle ASCII Zeichen anlegen, aber lückenlos!!! damit z.b. das kleine 'a' auch an der 97ten stelle steht! Du brauchst halt mind. 265 Bytes Programmcode mehr!
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.08.2011
    Ort
    Hannover
    Beiträge
    164
    Mist - zu spät - gerade hatte ich fast genau das fertig getippt
    #define true ('/'/'/')
    #define false ('-'-'-')

  7. #17
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Fehlermeldung: SiebenSegment.c:39: error: expected identifier or '(' before '[' token

    Code Z.39:

    Code:
        const char[] Bitcodes = { 
        0b01000100, 
        0b01111101, 
        0b10100100, 
        0b00110100, 
        0b00011101, 
        0b00010110, 
        0b00000110, 
        0b01111100, 
        0b00000100, 
        0b00010100
    }
    Leider klappts noch nicht so richtig ;-<


    mfG
    Philip

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.08.2011
    Ort
    Hannover
    Beiträge
    164
    Wo ist denn da die Zeile 39? Und was kommt danach? Hast Du das ";" bei copy&paste vergessen? Oder im Quelltext?

    viele Grüße
    Andreas
    #define true ('/'/'/')
    #define false ('-'-'-')

  9. #19
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Zeile 39 hört sich so an als hätte er versucht es innerhalb einer Methode zu definieren, versuchs mal ganz oben bei den Variablen-Deklarationen

    EDIT: ahja und semikolon dahinter .... ich schussel gern wenn ich nur nachdenke und nicht direkt programmiere, normalerweise sagt es mir mein eclipse wenn ich was vergessen hab ^^
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  10. #20
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Okay, habs schon....

    Code:
         const char Zahl[] = {
        0b01000100, 
        0b01111101, 
        0b10100100, 
        0b00110100, 
        0b00011101, 
        0b00010110, 
        0b00000110, 
        0b01111100, 
        0b00000100, 
        0b00010100
    };

    danke nochmal an alles

    mfG
    Philip
    Geändert von AsuroPhilip (08.09.2011 um 12:23 Uhr) Grund: Lösung gefunden

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. C-Control Pro Basic Char verbinden
    Von Basti1204 im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 24.04.2010, 17:31
  2. gelöst : Frage zu C und 2 Dim char Array
    Von jar im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 29.05.2007, 17:53
  3. zweidemensionales char-array
    Von p_mork im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 15.03.2007, 17:54
  4. Nur Nummern in Array / nur Variablentyp byte als Array?
    Von Crashmichl im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 28.04.2006, 00:15
  5. Cstring einem char array zuweisen
    Von ceekay im Forum Software, Algorithmen und KI
    Antworten: 8
    Letzter Beitrag: 17.04.2006, 11:20

Berechtigungen

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

12V Akku bauen