Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed DebounceIn WS2812
main_copy.txt
- Committer:
- elab
- Date:
- 2020-02-13
- Revision:
- 0:47b1ab4dd893
File content as of revision 0:47b1ab4dd893:
#include "mbed.h" #include <stdio.h> #include <stdlib.h> #include <time.h> #include "LED_WS2812.h" Serial pc(USBTX, USBRX); DigitalOut myled(LED1); DigitalIn greenButton(D3,PullUp); DigitalIn redButton(D4,PullUp); DigitalIn blueButton(D5,PullUp); DigitalIn yellowButton(D6, PullUp); LED_WS2812 led(D9,4); int buttonArray[32]; int array[32]; // LEDS colors array int readButton(int turn){ int currentValueG, currentValueR, currentValueB, currentValueY, status=0; int max=500; for (int i=0;i<32;i++){ buttonArray[i]=55; } printf("readButton\n"); for (int i=0; i<= turn; i++){ for (int t=0; t<max; t++){ currentValueG = greenButton.read(); currentValueR = redButton.read(); currentValueB = blueButton.read(); currentValueY = yellowButton.read(); if (currentValueG == 0){ printf("Green button\n"); wait_ms(250); buttonArray[i]=0; t=max; status=0; } else if (currentValueR == 0){ printf("RedButton\n"); wait_ms(250); buttonArray[i]=1; t=max; status=0; } else if(currentValueB == 0){ printf("BlueButton\n"); wait_ms(250); buttonArray[i]=2; t=max; status=0; } else if(currentValueY == 0){ printf("Yellow button\n"); wait_ms(250); buttonArray[i]=3; t=max; status=0; } else if(t>=(max-1)){ printf("time out !!! \n"); status=1; } wait_ms(10); } } for(int j=0; j<=turn; j++) { printf("buttonArray[%d]=%d\n", j, buttonArray[j]); } printf("end of readButton \n"); return status; } int main() { int maxTurn=2, status, diff=0; srand(time(0)); led.SetIntensity(25); led.SetColor(RED); for(int t=0; t<=maxTurn; t++){ // generate the array and ON the LEDs printf("turn = %d\n", t); array[t]=rand()%4; for (int i=0; i<=t; i++){ switch(array[i]) { case 0: printf(" >>>>>>> green\n"); led.SetColor(0,GREEN); wait(1); led.SetColor(0,BLACK); break; case 1: printf(" >>>>>>> red\n"); // led.SetColor(1,RED); // wait(1); // led.SetColor(1,BLACK); break; case 2: printf(" >>>>>>> blue\n"); led.SetColor(2,BLUE); wait(1); led.SetColor(2,BLACK); break; case 3: printf(" >>>>>>> yellow\n"); led.SetColor(3,YELLOW); wait(1); led.SetColor(3,BLACK); break; default: printf(" >>>>>>> no color \n"); break; } } status = readButton(t); // compare two arrays if (status==1){ printf("Time out, game over !\n"); t=maxTurn;// force t to maxTurn to exit } else { for(int j=0; j<=t; j++){ if(array[j]!=buttonArray[j]){ j=t; diff=1; } } if (diff==1){ t=maxTurn; printf("Color no match, Game Over !\n"); } else{ printf("You win !\n"); } } printf("Turn finished\n"); } }