Element uit char array gebruiken

algemene C code
Berichten: 1
Geregistreerd: 26 Nov 2020, 19:58

Element uit char array gebruiken

Berichtdoor Martijn_Hoving » 26 Nov 2020, 20:09

Hallo,

Nieuw op het forum hier maar niet onbekend met de arduino.

Ik probeer een element uit een array op een oled display weer te geven. Als ik bijvoorbeeld element 2 uit een 10 elementen grote arry selecteer wordt er op het oled display
element 2 tot en met 10de element weergegeven. Ik verwachte dat alleen element weer gegeven zou moeten worden. Als ik b.v. het vierde element weer wil geven dan wordt het vierde element weer gegeven to en met het tiende element.
Enig idee waar ik de fout in ga?
Bijgevoegd mijn code

Code: Alles selecteren
#include <stdlib.h>
#include <U8glib.h>
#define FF_SEL 7
#define DISP_A0 10
U8GLIB_SH1106_128X64 ffiDisp(FF_SEL,DISP_A0);  // FFI Display SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9


 //char Digits[11]={'0','1','2','3','4','5','6','7','8','9','\0'};
char Digits[10]={48,49,50,51,52,53,54,55,56,57}; //hex value pointing to FFI_DIGITS.h Fonts 
 
//ffiDisp.drawStr(25,41,&Digit[6]);
//                 x,y ,digit

void Digit_Roll(void)
{
  ffiDisp.setFont(FFI_Digits);
  ffiDisp.drawStr(25,19,&Digits[1]); 
  ffiDisp.drawStr(25,41,&Digits[2]);
  ffiDisp.drawStr(25,63,&Digits[3]);
  /*for(int i=0;i<10;i+1)
  {
    char Digit10s = Digit[i];
    ffiDisp.drawStr(25,41,&Digit2);
    delay(10);
 
    delay(10);
  }*/
}


Vriendelijk bedankt alvast
Martijn

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Element uit char array gebruiken

Berichtdoor Koepel » 26 Nov 2020, 23:31

Er is blijkbaar geen DrawChar() functie en ook geen DrawInteger() functie.
Dan zit er niets anders op dan iedere keer zelf een zero-terminated string te maken.

Stel je hebt een integer die 5 is en je wilt het leesbare ASCII teken '5' op het scherm zetten.

Code: Alles selecteren
int i = 5;      // value to print
char myText[2];    // helper array
myText[0] = i + '0';    // binary number to readable ascii
myText[1] = '\0';      // zero-terminator
ffiDisp.drawStr( 25, 19, myText);


Ziet dat er logisch uit ?
Dan is mijn tweede vraag: Heb je dat nodig ?

Meestal wordt een regel tekst gemaakt met daar een nummer bij. De sprintf() functie kan zo iets in één keer maken, maar doet geen float nummers. Er is verder itoa(), ltoa(), dtostrf(), etostrf(), de Arduino String class, en nog veel meer.
Wat wil je op het scherm zetten ?

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast