- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 23

Thema: Char mit array verbinden ?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Ich brauche nur das erste Element des Arrays mit Ziffer zu verbinden und das dann als text senden I2CTWI_transmitByte(pcf2, Hier soll dann "Ziffer1" stehen).

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.08.2011
    Ort
    Hannover
    Beiträge
    164
    Mit I2CTWI_transmitByte überträgst Du genau ein Byte auf dem Bus an die Adresse pf2c. Wenn Du mehrere Bytes (so wie die Zeichenkette line) übertragen willst, dann musst Du eine andere Funktion aufrufen. So aus dem Gedächtnis (also schau da lieber nochmal in die Doku):

    Code:
    I2CTWI_transmitBytes(pf2c, line, strlen (line));
    Schau genau hin: das sind zwei unterschiedliche Funktionen!

    ACHTUNG: evtl. musst Du noch strings.h includen (für strlen). Schau auch hier bitte sicherheitshalber nach - ich habe gerade keine Möglichkeit das zu tun.

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

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Also eigentlich übertrage ich ja
    Code:
    0b01111101
    weil ichs ja oben definiert hab
    Code:
    #define Ziffer1 0b01111101
    .

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    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.

  5. #5
    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

  6. #6
    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 11:58 Uhr)
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #7
    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;

Ähnliche Themen

  1. C-Control Pro Basic Char verbinden
    Von Basti1204 im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 24.04.2010, 16: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, 16:53
  3. zweidemensionales char-array
    Von p_mork im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 15.03.2007, 16:54
  4. Nur Nummern in Array / nur Variablentyp byte als Array?
    Von Crashmichl im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 27.04.2006, 23:15
  5. Cstring einem char array zuweisen
    Von ceekay im Forum Software, Algorithmen und KI
    Antworten: 8
    Letzter Beitrag: 17.04.2006, 10:20

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad