Letter, points and light. Stars demo, scroll demo, flare demo, bounce demo

Dependencies:   microbit

MicroBit Graphics Demo

  • FunctionPointFlare();
  • FunctionBounceTest();
  • FunctionImageTest();
  • FunctionPrintTest();
  • FunctionStarTest();
  • FunctionImageScroll();

Functions.h

Committer:
MaxScorda
Date:
2020-01-01
Revision:
4:47230ba0a5f0
Parent:
3:7fb07f1eeffe

File content as of revision 4:47230ba0a5f0:

void FunctionPointFlare()
{

    int  value = 64 ;
    for(int xx=-1 ; xx<=1; xx++) {
        for( int yy=-1; yy<=1; yy++) {
            uBit.display.image.setPixelValue(oldx+yy,oldy+xx, 0);
        }
    }


    for(int xx=-1 ; xx<=1; xx++) {
        for( int yy=-1; yy<=1; yy++) {
            uBit.display.image.setPixelValue(i+yy,k+xx, 2);
            //    uBit.serial.printf("%d - %d", yy,xx);
        }
    }
    uBit.display.image.setPixelValue(i,k, value);

    oldx=i;
    oldy=k;

    i=(i+sign);
    if ((i<0) || (i>4)) {
        sign=-sign;
        i=(i+sign);
        k++;
        k=k%5;
    }

    //  uBit.serial.printf("\nAccleremoter ");
    // uBit.serial.printf("x:%d  y:%d", uBit.accelerometer.getX(),uBit.accelerometer.getY());

    uBit.sleep(100);
}

void FunctionPrintTest()
{
    // uBit.display.scrollAsync("Scorda",500);
    uBit.display.scrollAsync("Scorda");
    uBit.sleep(500);
}

void FunctionImageTest()
{
    if (ccont%3==0) {
        display.setBrightness(255);
        uBit.display.print(C);
    } else if (ccont%3==1) {
        display.setBrightness(127);
        uBit.display.print(Cb);
    } else if (ccont%3==2) {
        display.setBrightness(64) ;
        uBit.display.print(Cd);
    }

    uBit.sleep(500);

}


void FunctionBounceTest()
{
    static int xx[]= {2,0,0};
    static int yy[]= {3,0,0};
    static int tempidx, idxvett=0;
    static int xost;
    static int yost;
    static int xcont=0;
    static int signx=1, signy=1;
    int value= 256;
    bool cambiay=false;
    int tempcolor;

    tempidx=idxvett;
    idxvett=(idxvett+1)%3;
    uBit.display.image.setPixelValue(xx[idxvett],yy[idxvett], 0);
    xx[idxvett]=(xx[tempidx]+signx)%5;
    yy[idxvett]=(yy[tempidx]+signy)%5;

    for(int i=0 ; i<=2; i++) {
        tempidx=(tempidx+i)%3;
        tempcolor=value/((i*32)+1);
        uBit.display.image.setPixelValue(xx[tempidx],yy[tempidx], tempcolor);
    }
    //se sbatte sul punto ostacolo o ha fatto due
    if (((xx[idxvett]==xost)&&(yy[idxvett]==yost))||(xcont==2)) {
        uBit.display.image.setPixelValue(xost,yost, 0);
        if ((xx[idxvett]==xost)&&(yy[idxvett]==yost))
            cambiay=true;
        xost=rand()%5;
        yost=rand()%5;
        uBit.display.image.setPixelValue(xost,yost, value/4);
        xcont=0;
    }

    if ((yy[idxvett]==0) || (yy[idxvett]==4) || (cambiay==true)) {
        signy=-signy;
    }

    if ((xx[idxvett]==0) || (xx[idxvett]==4))
        signx=-signx;

    if (xx[idxvett]==0)
        xcont++;

    uBit.sleep(250);

}

void FunctionStarTest()
{
    // stars[x][0] x
    // stars[x][1] y
    // stars[x][2] speed
    // stars[x][3] light
    static int stars[5][4];
    static bool first=true;
    int tempspeed;
    //azzero primo giro
    if (first==true) {
        for(int i=0 ; i<5; i++) {
            stars[i][1]=-1;
        }
        first=false;
    }

    for(int i=0 ; i<5; i++) {
        if (stars[i][1]==-1) {
            stars[i][0]=i; //inutile ma ad uso futuro
            stars[i][1]=uBit.random(2);   //y
            stars[i][2]=uBit.random(2);   //speed
            stars[i][3]=((uBit.random(8)+1)*32)-1; //light
        } else {
            uBit.display.image.setPixelValue(stars[i][0],stars[i][1], 0);
            if (stars[i][2]==0) {
                tempspeed=(ccont%2==0?1:0);
            } else {
                tempspeed=stars[i][2];
            }
            stars[i][1]=stars[i][1]+tempspeed;
            if (stars[i][1]>4)
                stars[i][1]=-1;
        }
        uBit.display.image.setPixelValue(stars[i][0],stars[i][1], stars[i][3]);
        //    uBit.serial.printf("\n%d: %d ",i,stars[i][1]);
    }
    uBit.sleep(250);
}

void FunctionImageScroll()
{
    display.setBrightness(255);
    uBit.display.scrollAsync(W1,100);
    uBit.sleep(500);

}


void onButton(MicroBitEvent e)
{
    static bool premuto=true;
    int numfun=6;
    if ((e.source == MICROBIT_ID_BUTTON_A) && (premuto==false)) {
        sceltavar--;
        uBit.display.clear();
        uBit.display.stopAnimation();
        uBit.serial.printf("\nBUTTON A: ");
        premuto=true;
    }

    if ((e.source == MICROBIT_ID_BUTTON_B)&& (premuto==false))  {
        sceltavar++;
        uBit.display.clear();
        uBit.display.stopAnimation();
        uBit.serial.printf("\nBUTTON B: ");
        premuto=true;
    }
    /*
        if (e.value == MICROBIT_BUTTON_EVT_CLICK) {
            uBit.serial.printf("\nCLICK");
            premuto=true;
        }

        if (e.value == MICROBIT_BUTTON_EVT_HOLD) {
            uBit.serial.printf("\nHOLD");
            premuto=true;
        }
        if (e.value == MICROBIT_BUTTON_EVT_DOWN) {
            uBit.serial.printf("\nDOWN");
            premuto=true;
        }
    */
    if (e.value == MICROBIT_BUTTON_EVT_UP) {
        uBit.serial.printf("UP");
        premuto=false;
    }

    sceltavar=(sceltavar+numfun)%numfun;
    // uBit.serial.printf("--%d--", sceltavar);

}