Let's make the dice of seven eyes on PSoC 4 with sound - version 2

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi all,

Through this programing of the dice, I was able to learn various PSoC designs. This time it is the modified version. From the previous program Let's make the dice of seven eyes on PSoC 4 with sound, the decoder part of the circuit is simplified and the PWM part is modified to swap. I will explain the changes here.

1.png

The environment used is as follows:

PSoC Creator 4.3

CY8CKIT-044

1.  Change of decoding part

The simplified circuit of the decoding section is as follows. Two inverter logics have been deleted from the previous time.

   1.png

2.  PWM uses swap function

The PWM_1 component settings are as follows. Check the Swap of Period.

2.png  

3.  Program changes

Swap is performed at the timing of the S/W side.

/* ========================================

*

* Copyright YOUR COMPANY, THE YEAR

* All Rights Reserved

* UNPUBLISHED, LICENSED SOFTWARE.

*

* CONFIDENTIAL AND PROPRIETARY INFORMATION

* WHICH IS THE PROPERTY OF your company.

*

* ========================================

*/

#include "project.h"

uint32_t sw=0;  //sw is off (Stop rolling dicce)

int main(void)

{

    CyGlobalIntEnable; /* Enable global interrupts. */

    /* Place your initialization/startup code here (e.g. MyInst_Start()) */

    PWM_2_Start();

    for(;;)

    {

       if(sw==0){

           // if(Cy_GPIO_Read(SW2_PORT,SW2_NUM)==0){

            if(SW2_Read()==0){

                PWM_1_WritePeriodBuf(999);

                PWM_1_WritePeriod(399);

                PWM_1_WriteCounter(0);  // Clear counter

                PWM_1_Start();  // Start rolling dice

                sw=1;

            }

        }

        if(sw==1){

            //if(Cy_GPIO_Read(SW2_PORT,SW2_NUM)==1){

            if(SW2_Read()==1){

                /* Roll dice slowly */

                PWM_1_TriggerCommand(1, PWM_1_CMD_CAPTURE);

                CyDelay(1500);  // keep rolling slowly for 1.5sec

                PWM_1_Stop();// Stop rolling dice                   

                sw=0;           // sw is off           

            }

        }

    }

}

/* [] END OF FILE */

Press SW2 on the kit board to rotate the dice, and release it to slowly move down and stop.

Thanks,

Kenshow

1 Reply
Hari
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hi Kenshow-san,

Thank you for sharing your example project with the community.

Best regards,
Hari