3D Baskı TeknolojisiArduinoArduino YardımDonanımRamps

Reprap Discount Full Graphics 128×64 LCD Test Sketch

Using Arduino Mega & Ramps

Aşağıdaki Arduino ino sketch kodları kullanarak 12864 tip Reprap Discount Full Graphics 128x64 LCD testi yapabilirsiniz. Kodlar Arduino Mega ve Ramps kartı pin bağlantıları kullanılarak düzenlenmiştir. Farklı bir 3D yazıcı kartı ile de olur, kodlardaki kart pinlerini güncellemeniz gereklidir.

Aşağıdaki kodları ReprapLCDTest.ino şeklinde bir dosyaya kaydedip (veya buraya tıklayıp direk indirebilirsiniz) Arduino ile açın ve bağlantıları yapıp çalıştırın.

#include <SPI.h>
#include <U8glib.h>
#include <SD.h>

//Reprap discount full graphics 128x64 LCD test etmek için kullanabilirsiniz
//Test STOP and Encoder button
//Test buzzer (Hold both STOP and Encoder buttons to activate)
//Test SD detect, disply SD card information
//Test Encode left/right
//Verify the LCD is working.

//RAMPS 1.4 standart pinler

#define DOGLCD_CS       16
#define DOGLCD_MOSI     17
#define DOGLCD_SCK      23
#define BTN_EN1         31
#define BTN_EN2         33
#define BTN_ENC         35
#define SD_DETECT_PIN   49
#define SDSS            53
#define BEEPER_PIN      37
#define KILL_PIN        41

Sd2Card card;
SdVolume volume;


int x=0;                                //Offset postion of title  
int kill_pin_status = 1;                //Last read status of the stop pin, start at 1 to ensure buzzer is off
int encoderPos = 1;                     //Current encoder position
int encoder0PinALast;                   //Used to decode rotory encoder, last value
int encoder0PinNow;                     //Used to decode rotory encoder, current value
char posStr[4];                         //Char array to store encoderPos as a string  
char tmp_string[16];
int enc_pin_status;                     //Last read status of the encoder button
int sd_detect_pin_status = true;        //Last read status of the SD detect pin
int scroll_direction=1;                 //Direction of title scroll, 1 right, -1 left
unsigned long previousMillis = 0;       //Previous Millis value
unsigned long currentMillis;            //Current Millis value
const long interval = 1000/3;           //How often to run the display loop, every 1/3 of a second aproximatly 
boolean gotsddata = false;

int sdcardinit;
int sdcardtype;
int sdvolumeinit;
int sdvolumefattype;
unsigned long sdvolumebpc;
unsigned long sdvolumecc;


// SPI Com: SCK = en = 23, MOSI = rw = 17, CS = di = 16
U8GLIB_ST7920_128X64_1X u8g(DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS);

void setup() {  
  pinMode(SD_DETECT_PIN, INPUT);        // Set SD_DETECT_PIN as an unput
  digitalWrite(SD_DETECT_PIN, HIGH);    // turn on pullup resistors
  pinMode(KILL_PIN, INPUT);             // Set KILL_PIN as an unput
  digitalWrite(KILL_PIN, HIGH);         // turn on pullup resistors
  pinMode(BTN_EN1, INPUT);              // Set BTN_EN1 as an unput, half of the encoder
  digitalWrite(BTN_EN1, HIGH);          // turn on pullup resistors
  pinMode(BTN_EN2, INPUT);              // Set BTN_EN2 as an unput, second half of the encoder
  digitalWrite(BTN_EN2, HIGH);          // turn on pullup resistors
  pinMode(BTN_ENC, INPUT);              // Set BTN_ENC as an unput, encoder button
  digitalWrite(BTN_ENC, HIGH);          // turn on pullup resistors
  u8g.setFont(u8g_font_helvR08);        //Set the font for the display
  u8g.setColorIndex(1);                 // Instructs the display to draw with a pixel on. 
}

//Main arduino loop
void loop() {
  // Read the encoder and update encoderPos    
  encoder0PinNow = digitalRead(BTN_EN1);
  if ((encoder0PinALast == LOW) && (encoder0PinNow == HIGH)) {
    if (digitalRead(BTN_EN2) == LOW) {
      encoderPos++;
    } else {
      encoderPos--;
    }
  }
  encoder0PinALast = encoder0PinNow;

  
  //read in SD data when SD is incerted
  if (!sd_detect_pin_status && !gotsddata) {
      sdcardinit = card.init(SPI_HALF_SPEED, SDSS);
      sdcardtype = card.type();
      sdvolumeinit = volume.init(card);
      sdvolumefattype = volume.fatType();
      sdvolumebpc = volume.blocksPerCluster();
      sdvolumecc = volume.clusterCount();
      gotsddata = true;
  }

  //check if it is time to update the display 
  currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;

    //read the kill pin status
    kill_pin_status = digitalRead(KILL_PIN); 
    //read the encoder button status
    enc_pin_status = digitalRead(BTN_ENC);
    //read the SD detect pin status  
    sd_detect_pin_status = digitalRead(SD_DETECT_PIN);
    if (sd_detect_pin_status) {
      gotsddata = false;
    }
  
    //Check if both Kill switch and encoder are pressed, if so switch on buzzer
    if(kill_pin_status || enc_pin_status) digitalWrite(BEEPER_PIN, LOW); 
    else digitalWrite(BEEPER_PIN, HIGH);

    //Draw new screen
    u8g.firstPage();
    do {  
      if(gotsddata) draw2();
      else draw();
    } while( u8g.nextPage() );

    //Update Title position
    x=x+scroll_direction;
    if (x > 40) scroll_direction = -1;
    if (x < 1) scroll_direction = 1;
  }
}

//Assemble the display  
void draw(){
  u8g.setColorIndex(0);
  u8g.drawBox(0,0,128,64);
  u8g.setColorIndex(1);
  
  u8g.drawStr( 2+x, 10, "RRD GLCD TEST");
  u8g.drawStr( 2, 3*9, "Stop pin durumu:");
  if (kill_pin_status) u8g.drawStr( 84, 3*9, "Acik");
  else u8g.drawStr( 84, 3*9, "Kapali");

  u8g.drawStr( 2, 4*9, "Enc pin durumu:");
  if (enc_pin_status) u8g.drawStr( 84, 4*9, "Acik");
  else u8g.drawStr( 84, 4*9, "Kapali");

  u8g.drawStr( 2, 6*9, "Encoder degeri:");
  sprintf (posStr, "%d", encoderPos);
  u8g.drawStr( 84, 6*9, posStr );
  
  u8g.drawStr( 2, 5*9, "SD bellek durumu:");
  if (sd_detect_pin_status) u8g.drawStr( 84, 5*9, "Acik");
  else u8g.drawStr( 84, 5*9, "Kapali");
  
  u8g.drawStr( 2, 7*9, "Buzzer:");
  if (kill_pin_status || enc_pin_status) u8g.drawStr( 84, 7*9, "Kapali");
  else u8g.drawStr( 84, 7*9, "Acik");

  u8g.drawFrame(0,0,128,64);
}

//Display SD card info
void draw2(){
  u8g.setColorIndex(0);
  u8g.drawBox(0,0,128,64);
  u8g.setColorIndex(1);
  
  u8g.drawStr( 0, 1*10, "SD kart hazirlaniyor:");
  if (sdcardinit) {
      u8g.drawStr( 90, 1*10, "OK");
      u8g.drawStr( 0, 2*10, "Kart tipi:");
      switch (sdcardtype) {
        case SD_CARD_TYPE_SD1:
          u8g.drawStr( 90, 2*10, "SD1");
          break;
        case SD_CARD_TYPE_SD2:
          u8g.drawStr( 90, 2*10, "SD2");
          break;
        case SD_CARD_TYPE_SDHC:
          u8g.drawStr( 90, 2*10, "SDHC");
          break;
        default:
          u8g.drawStr( 90, 2*10, "Bilinmiyor");
      }
      if (!sdvolumeinit) {
        u8g.drawStr( 0, 3*10, "FAT16/FAT32 bolümlendirme yapilmamis.");
      } else {

        // print the type and size of the first FAT-type volume
        u8g.drawStr( 0, 3*10,"Volum tipi:       FAT");
        itoa(sdvolumefattype, tmp_string, 10);
        u8g.drawStr( 110, 3*10,tmp_string);

        uint32_t volumesize;
        volumesize = sdvolumebpc;    // clusters are collections of blocks
        volumesize *= sdvolumecc;       // we'll have a lot of clusters
        volumesize /= 2;                           // SD card blocks are always 512 bytes (2 blocks are 1KB)
        volumesize /= 1024;
        
        u8g.drawStr( 0, 4*10,"Volum boyutu (Mb):");
        itoa(volumesize, tmp_string, 10);
        u8g.drawStr( 90, 4*10,tmp_string);
      }
  } else {
      u8g.drawStr( 90, 1*10, "HATA");
  }
}
Kaynak
Kaynak:
Daha Fazla Göster

İlgili Makaleler

Başa dön tuşu
Kapalı

Reklam Engelleyici Algılandı

Lütfen Add Blocker uygulamanızı bu site için devre dışı bırakın. Rahatsız edici bir reklam uygulamamız yoktur. Please turn the Add Blocker off as you may see there is no annoying ads in the blog.