Forum Rule: Always post complete source code & details to reproduce any issue!
Page 3 of 3 FirstFirst 1 2 3
Results 51 to 55 of 55

Thread: Bitmap with Teensy3.5

  1. #51
    Member
    Join Date
    Jul 2018
    Location
    El Paso, TX
    Posts
    80
    This project has two parts - the bitmap read-in and some text. I see you wrote a program using leds with/for text. However if time is a problem helping just say so. I fully understand the ups and downs of the computer world.

  2. #52
    Senior Member mortonkopf's Avatar
    Join Date
    Apr 2013
    Location
    London, uk
    Posts
    880
    hopefully you managed to get the colours in the right order now. Regarding the text element, there is code around for displaying text on led arrays. This uses an array to hold char values. are you talking about this one: http://orchardelica.com/wp/?page_id=170

    you can use the basic principle of the text you want to display being kept in a char array, but change the location that it is display in. You can set all the leds at once for the whole char array, and choosing a different location of led to start from and then not increasing that location, this would mean that the text does not scroll. I have not looked too deeply at that coe recently but it may just be a question of removing the scroll method:
    Code:
    //==START OF THE SCROLL METHOD==//
    for(int a=0; a<rows; a++){
      for(int b=1; b<ledsPerStrip;b++){
        int a1 = a*ledsPerStrip;
    leds.setPixel(((a1+b)-1),leds.getPixel(a1+b));}
     
          }//end of Scroll Method

  3. #53
    Member
    Join Date
    Jul 2018
    Location
    El Paso, TX
    Posts
    80
    Yes, that is the code I saw. I will certain take a look at the details. I do not need the scrolling attribute anyway. Thanks for your help. You have been great. I have been spending some time reading "Processing" now as that seems to be a much better fit for me. The C++ code would take forever to learn and I need a quick solution. My offer still stands if you are interested in helping me finish this project as it looks like you worked out everything I need years ago.

  4. #54
    Senior Member mortonkopf's Avatar
    Join Date
    Apr 2013
    Location
    London, uk
    Posts
    880
    static text display using the Teensy OctoWS2811 library
    @JohnWatterson, below is an example of displaying static text using the OctoWS2811 library for Teensy. It should get you going. Just change the ledsPerStrip number

    Code:
     #include "OctoWS2811.h"
    //this code displays a static text message to octows2811 led array
    //uses code from ...
    
    //fixed values for octoWS2811
    const int ledsPerStrip = 34;
    DMAMEM int displayMemory[ledsPerStrip*6];
    int drawingMemory[ledsPerStrip*6];
    const int config = WS2811_GRB | WS2811_800kHz;
    OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config);
    
    //=== F O N T ===//
    /*for ease of reading the code the font could be placed under a seperate
    tab using the add tab and then using #include*/
    byte alphabets [96] [5] = {
    { 0x00, 0x00, 0x00, 0x00, 0x00 }, // space (0x20)
    { 0x00, 0x00, 0x2F, 0x00, 0x00 }, // !
    { 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
    { 0x14, 0x7F, 0x14, 0x7F, 0x14 }, // #
    { 0x24, 0x2A, 0x7F, 0x2A, 0x12 }, // $
    { 0x23, 0x13, 0x08, 0x64, 0x62 }, // %
    { 0x36, 0x49, 0x55, 0x22, 0x50 }, // &amp;
    { 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
    { 0x00, 0x1C, 0x22, 0x41, 0x00 }, // (
    { 0x00, 0x41, 0x22, 0x1C, 0x00 }, // (
    { 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
    { 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
    { 0x00, 0x50, 0x30, 0x00, 0x00 }, // ,
    { 0x08, 0x08, 0x08, 0x08, 0x08 }, // -
    { 0x00, 0x30, 0x30, 0x00, 0x00 }, // .
    { 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
    
    { 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 (0x30)
    { 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
    { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
    { 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
    { 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
    { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
    { 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
    { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
    { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
    { 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
    { 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
    { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
    { 0x08, 0x14, 0x22, 0x41, 0x00 }, // &lt;
    { 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
    { 0x00, 0x41, 0x22, 0x14, 0x08 }, // &gt;
    { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
    
    { 0x32, 0x49, 0x79, 0x41, 0x3E }, // @ (0x40)
    { 0x7E, 0x11, 0x11, 0x11, 0x7E }, // A
    { 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
    { 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
    { 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
    { 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
    { 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
    { 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
    { 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
    { 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
    { 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
    { 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
    { 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
    { 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
    { 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
    { 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
    
    { 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P (0x50) //edited - replace 0x3F with 0x7F
    { 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
    { 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
    { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
    { 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
    { 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
    { 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
    { 0x3F, 0x40, 0x30, 0x40, 0x3F }, // W
    { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
    { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
    { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
    { 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
    { 0x02, 0x04, 0x08, 0x10, 0x20 }, // backslash
    { 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
    { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
    { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
    
    { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ` (0x60)
    { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
    { 0x7F, 0x50, 0x48, 0x48, 0x30 }, // b
    { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
    { 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
    { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
    { 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
    { 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g
    { 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
    { 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
    { 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j
    { 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
    { 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
    { 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
    { 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
    { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
    
    { 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p (0x70)
    { 0x08, 0x14, 0x14, 0x08, 0x7C }, // q
    { 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
    { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
    { 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
    { 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
    { 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
    { 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
    { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
    { 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y
    { 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z
    { 0x00, 0x08, 0x36, 0x41, 0x00 }, // {
    { 0x00, 0x00, 0x7F, 0x00, 0x00 }, // |
    { 0x00, 0x41, 0x36, 0x08, 0x00 }, // }
    { 0x30, 0x08, 0x10, 0x20, 0x18 }, // ~
    { 0x7F, 0x55, 0x49, 0x55, 0x7F } // unknown char (0x7F)
    };//==end of font array==//
    
    unsigned int Color(byte r, byte g, byte b);
    
    //fixed values for scrolling text
    String inData = "";
    int rows = 8;
    int strip = ledsPerStrip; //strip length
    //int pix[8] = {strip - 1, (strip * 2) - 1, (strip * 3) - 1, (strip * 4) - 1, (strip * 5) - 1, (strip * 6) - 1, (strip * 7) - 1, (strip * 8) - 1};
    int del = 7;
    //#define BLACK 0x000000
    //#define RED 0xFF0000
    int Colour1 = Color(random(1, 100), random(1, 100), random(1, 100));
    char msg[] = "Hello";//using a character lookup table for alphabet. # $ @ * etc... ";
    char leng[5];// =number of chars
    
    void setup() {
      leds.begin(); // start the ws2811 library
      delay(200);
    }//==end of setup==//
    
    void loop() {
    
      texttest(msg);
    }//==end of loop==//
    
    void texttest(char msg[]) {
      //==Start of message setup==//
      
     for (unsigned int charIndex = 0; charIndex < (sizeof(leng)); charIndex++) //start of charIndex setup
      {
        int alphabetIndex = msg[charIndex] - ' '; //where are we in the message
        if (alphabetIndex < 0) alphabetIndex = 0;
        bool isOn = 0; //isOn is the bit / led
    
      //==START OF SET METHOD==//
            for(int letterCol =0; letterCol<6-1;letterCol++) {
           for (int row = 0; row < rows ; row++) {
    
            isOn = bitRead( alphabets[alphabetIndex][letterCol], row ) == 1;
            leds.setPixel((row*ledsPerStrip)+(letterCol+(charIndex*5)), isOn * Colour1);      
           }
        }//end of Set Method
      }//end of message setup
        leds.show();  delay(300); 
    }//end of texttest
    
    //------- HELPER FUNCTION------//
    // Create a 24 bit color value from R,G,B ////these strips are BRG
    unsigned int Color(byte r, byte g, byte b)
    {
      //Take the lowest 8 bits of each value and append them end to end
      return ( (((unsigned int)g & 0x1F ) << 16) | (((unsigned int)b & 0x1F) << 8) | ((unsigned int)r & 0x1F) );
    }

  5. #55
    Member
    Join Date
    Jul 2018
    Location
    El Paso, TX
    Posts
    80
    Great thanks.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •