Nagy karakteres kijelzés

Tanfolyamok, oktatások és kapcsolódó házi feladatok...
Avatar
Bagameri
DrótVégénSzéndarab
Hozzászólások: 37
Csatlakozott: 2013. március 15. péntek, 14:21

Nagy karakteres kijelzés

HozzászólásSzerző: Bagameri » 2013. március 31. vasárnap, 22:55

Tudna e valaki segíteni , a két karakter helyett szeretném három vagy négy számjegyig számolna .
És a ( byte custchar [8][8]= ) 4-5-ös karaktert miért nem lehet a számok formájának javítására felhasználni.

Kód: Egész kijelölése

#include <SD.h>

    #include <LiquidCrystal.h>
    LiquidCrystal lcd(4, 5, 6, 7, 8, 9);

    byte custchar[8][8] = {
      {
        B11111,
        B11111,
        B00000,
        B00000,
        B00000,
        B00000,
        B00000,
        B00000
      }, {
        B00000,
        B00000,
        B00000,
        B00000,
        B00000,
        B00000,
        B11111,
        B11111
      }, {
        B11111,
        B11111,
        B00000,
        B00000,
        B00000,
        B00000,
        B11111,
        B11111
      }, {
        B00000,
        B00000,
        B00000,
        B00000,
        B01110,
        B01110,
        B00110,
        B00010
      }, {
        B11111,
        B11111,
        B00000,
        B00000,
        B00000,
        B00000,
        B00111,
        B01111
      }, {
        B00000,
        B00000,
        B00000,
        B00000,
        B00000,
        B00000,
        B00000,
        B00000
      }, {
        B00000,
        B00000,
        B00000,
        B00000,
        B00000,
        B00000,
        B00000,
        B00000
      }, {
        B00111,
        B01111,
        B11111,
        B11111,
        B11111,
        B11111,
        B11111,
        B11111
      }
    };

    byte bignums[10][2][3] = {
      {
        {7, 0, 7},
        {7, 1, 7}
      },{
        {0, 7, 6},
        {1, 7, 1}
      },{
        {2, 2, 7},
        {7, 1, 1}
      },{
        {0, 2, 7},
        {1, 1, 7}
      },{
        {7, 1, 7},
        {6, 6, 7}
      },{
        {7, 2, 2},
        {1, 1, 7}
      },{
        {7, 2, 2},
        {7, 1, 7}
      },{
        {0, 0, 7},
        {6, 7, 6}
      },{
        {7, 2, 7},
        {7, 1, 7}
      },{
        {7, 2, 7},
        {6, 6, 7}
      }
    };

    void loadchars() {
      lcd.command(64);
      for (int i = 0; i < 8; i++)
        for (int j = 0; j < 8; j++)
          lcd.write(custchar[i][j]);
      lcd.home();
    }

    void printbigchar(byte digit, byte col, byte row, byte symbol = 0) {
      if (digit > 9) return;
      for (int i = 0; i < 2; i++) {
        lcd.setCursor(col, row + i);
        for (int j = 0; j < 3; j++) {
          lcd.write(bignums[digit][i][j]);
        }
     
      }
       /* if (symbol == 1) {                 // ez a rész nem fontos ,ki van iktatva
          lcd.setCursor(col + 3, row + 1);
          lcd.write(3);
      } else if (symbol == 2) {
          lcd.setCursor(col + 3, row);
          lcd.write(4);
          lcd.setCursor(col + 3, row + 1);
          lcd.write(4);
                               }*/     
}


    void setup() {
      pinMode(13, OUTPUT);
      lcd.begin(16,2);
      loadchars();
      digitalWrite(13, HIGH);
    }
    int i;

    void loop() {

      for (i=0;i<60;i++){
        printbigchar(i/10, 1, 0);
        printbigchar(i%10, 5, 0);
        delay(500);
      }
        if (i==60){
        i=0;
    }}
     

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9737
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Nagy karakteres kijelzés

HozzászólásSzerző: Robert » 2013. április 1. hétfő, 5:48

A kód itt változik:

Kód: Egész kijelölése

void loop() {

      for (i=0;i<60;i++){
        printbigchar(i/10, 1, 0);
        printbigchar(i%10, 5, 0);
        delay(500);
      }
        if (i==60){
        i=0;
    }}


Kell neked 4 kar esetén (i=0..9999) és pl: i=1234:
- ezres:
i/1000 - egészrésze(0..9)
Pl:1234/1000 = 1

- százas
i/100 egészrész (00..99),
majd ennek 10-zel való osztásának a maradéka: (i/100)%10 = 0..9
Pl: 1234/100 = 12
és 12%10 = 2

és így tovább....

A %10 itt nem más, mint:

i%10 = i-((i/10)*10)

És utána a megjelenítésnél a bigchar-t paraméteresen hívod meg...

Avatar
Bagameri
DrótVégénSzéndarab
Hozzászólások: 37
Csatlakozott: 2013. március 15. péntek, 14:21

Re: Nagy karakteres kijelzés

HozzászólásSzerző: Bagameri » 2013. április 1. hétfő, 18:37

Most már majdnem jó, az a gond most meg ,hogy 500-ig számolna de a 90-es értéknél a kilences marad mindaddig még a végére nem ér.
Aztán ismét kilencvenig minden Ok.

Kód: Egész kijelölése

 void loop() {

      for (i=0;i<500;i++){
        printbigchar(i/100, 1, 0);
        printbigchar(i/10, 5, 0);   // itt a karakter "90-nél" meg
     //   áll ,majd míg az 500-at el nem éri addig áll.
       
        printbigchar(i%10, 9, 0);
        delay(300);
      }
        if (i==500){
        i=0;
    }}
     
:(

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9737
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Nagy karakteres kijelzés

HozzászólásSzerző: Robert » 2013. április 1. hétfő, 18:46

És az előző hozzászólást meg potyára írtam be.... :evil:

1, 10, 100 lépésekre is írdd meg!

Számold ki egészként a számjegyeket, külön-külön.......

Avatar
Bagameri
DrótVégénSzéndarab
Hozzászólások: 37
Csatlakozott: 2013. március 15. péntek, 14:21

Re: Nagy karakteres kijelzés

HozzászólásSzerző: Bagameri » 2014. január 19. vasárnap, 16:23

Ez egy nagy karakteres számláló lenne már csak egy kis hiba van ,a gomb nyomkodására be lehet gyorsítani
de azt szeretném hogy csak akkor menjen a számláló ha nyomkodom a gombot, ez megy lassan felfelé. Mit tegyek? :(

Kód: Egész kijelölése

void setup() {
  pinMode(13, OUTPUT);
  lcd.begin(16,2);
  loadchars();
  digitalWrite(13, 1);
  pinMode(yPin, INPUT);
}
int h = 00;
int m = 01;
int pulseY = 0;

void loop() {
  int  pulseY;
  int  accelerationY;
pulseY = pulseIn(yPin,HIGH);
accelerationY = pulseY ;
  {
    for (accelerationY=0;accelerationY<10;accelerationY++)
    printbigchar(h/10, 0, 0);
    printbigchar(h%10, 4, 0);
    printbigchar(m/10, 8, 0);
    printbigchar(m%10, 12, 0);
       }
       
  if (accelerationY==10){
    accelerationY=0;
    m++;
  }
  if (m==100){
    m=0;
    h++;
  }
  if (h==100) h=0;
}

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9737
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Nagy karakteres kijelzés

HozzászólásSzerző: Robert » 2014. január 19. vasárnap, 22:57

Tipp: Ha a gomb előző ciklusban is nyomva volt, meg most is nyomva van -> nem érvényes gombnyomás.


Vissza: “Oktatás”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég