# Calling BDH’s OLED functions

## L*ab Objective:*

This lab demonstrates the process of controlling OLED on a PSoC 6 microcontroller.

## 🔥 Requirements

<table><thead><tr><th width="429">Resources</th><th>Links</th></tr></thead><tbody><tr><td>Computer</td><td>💻</td></tr><tr><td>ModusToolbox™ software v3.0 or later</td><td><a href="https://www.infineon.com/modustoolbox">Link</a></td></tr><tr><td>CY8CKIT-062S2-43012 Infineon Board</td><td><a href="https://github.com/Advance-Innovation-Centre-AIC/BIIL_MTB-100_Hello_World_and_LED_Blinking_Programming_Template/assets/88732241/0215501d-b774-4045-8e64-ef49e28d8404">Link</a></td></tr><tr><td>Technical Report</td><td><a href="https://www.dropbox.com/scl/fi/amaxc94pte0ut2i1r5ewx/Technical-Report-Lab00.paper?rlkey=b3xm3vrerz9xgv1glb30cvy9z&#x26;dl=0">dropbox</a></td></tr></tbody></table>

## 🚩 Let start

### Create Application

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FKOOEtodO4j4R1aLpQeYl%2Fimage.png?alt=media&#x26;token=5fbbd1dc-4c46-49a6-ac3c-65de91a993b0" alt=""><figcaption><p>Create Application</p></figcaption></figure>

### Coding

* Coding: Open the main.c file and add the following code to the main(void) function.

{% code title="main.c" %}

```c
#include "cyhal.h"
#include "cybsp.h"
#include "stdio.h"

#include "cy8ckit_028_sense.h"
#include "GUI.h"

// Define function
void lcd_print_top(const char * s);
void lcd_print_bot(const char * s);
void lcd_print_line_n(const char * s,int linenum);

cyhal_i2c_t i2c;
cyhal_i2c_cfg_t i2c_cfg = {
    .is_slave = false,
    .address = 0,
    .frequencyhal_hz = 400000
};


int main(void)
{
    cy_rslt_t result;
    char str[80];

    /* Initialize the device and board peripherals */
    result = cybsp_init();
    CY_ASSERT(result == CY_RSLT_SUCCESS);
    __enable_irq();

    /* Initialize i2c */
    result = cyhal_i2c_init(&i2c, CY8CKIT_028_SENSE_PIN_I2C_SDA, CY8CKIT_028_SENSE_PIN_I2C_SCL, NULL);
    CY_ASSERT(result == CY_RSLT_SUCCESS);
    result = cyhal_i2c_configure(&i2c, &i2c_cfg);
    CY_ASSERT(result == CY_RSLT_SUCCESS);

    /* Initialize the OLED display */
    result = mtb_ssd1306_init_i2c(&i2c);
    CY_ASSERT(result == CY_RSLT_SUCCESS);

    GUI_Init();


    for (;;)
    {
        lcd_print_line_n("   .--.   ", 1);
        lcd_print_line_n("  |o_o |  ", 2);
        lcd_print_line_n("  |:_/ |  ", 3);
        lcd_print_line_n(" //   \\ \\", 4);
        lcd_print_line_n("(|     | )", 5);
        lcd_print_line_n("/'\\_   _/`\\", 6);
        lcd_print_bot("\\___)=(___/");
        cyhal_system_delay_ms(1000);          // Wait for 1 second before
    }

}


 // Create function

void lcd_print_top(const char * s){
	GUI_GotoXY(0,0);
	GUI_DispString(s);
}

void lcd_print_bot(const char * s){
	GUI_GotoXY(0,50);
	GUI_DispString(s);
}

void lcd_print_line_n(const char * s,int linenum){ //linenum is 1-6
	int line = (linenum-1)*10;
	GUI_GotoXY(0,line);
	GUI_DispString(s);
}
```

{% endcode %}

### Build the Application

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2F2bfWDlp3qQv9iCpXnnRi%2Fimage.png?alt=media&#x26;token=e7667613-394e-4465-a9e6-8a40503ea75f" alt="" width="563"><figcaption></figcaption></figure>

### Launching the Application

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2F9j47mn5Gl2gwT4EsRDUg%2Fimage.png?alt=media&#x26;token=93fa8050-56d2-46bf-8bb1-75c9820a21f0" alt="" width="563"><figcaption></figcaption></figure>

> Note: Before launching the program to the board, make sure that you have already connected the board to the computer through a USB cable.

<figure><img src="https://github.com/Advance-Innovation-Centre-AIC/BIIL_MTB-100_Hello_World_and_LED_Blinking_Programming_Template/assets/88732241/7a6bb6ef-cb63-4613-98a1-42f9617ad724" alt="" width="188"><figcaption><p>set up USB cable</p></figcaption></figure>

### Result&#x20;

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2F6EOqDSKv90012FoKZUnT%2Fimage.png?alt=media&#x26;token=3edc1426-cbce-4fb5-9364-5b5c901576e0" alt="" width="375"><figcaption></figcaption></figure>

> #### 🎉 <mark style="color:blue;">Congratulations! You can now complete Lab109</mark>

## Supported toolchains (make variable 'TOOLCHAIN')

* GNU Arm® embedded compiler v10.3.1 (`GCC_ARM`) - Default value of `TOOLCHAIN`
* Arm® compiler v6.16 (`ARM`)
* IAR C/C++ compiler v9.30.1 (`IAR`)

## Supported kits (make variable 'TARGET')

* [PSoC™ 62S2 Wi-Fi Bluetooth® pioneer kit](https://www.infineon.com/CY8CKIT-062S2-43012) (`CY8CKIT-062S2-43012`)
* [PSoC™ 62S1 Wi-Fi Bluetooth® pioneer kit](https://www.infineon.com/CYW9P62S1-43438EVB-01) (`CYW9P62S1-43438EVB-01`)
* [PSoC™ 62S1 Wi-Fi Bluetooth® pioneer kit](https://www.infineon.com/CYW9P62S1-43012EVB-01) (`CYW9P62S1-43012EVB-01`)
* [PSoC™ 62S3 Wi-Fi Bluetooth® prototyping kit](https://www.infineon.com/CY8CPROTO-062S3-4343W) (`CY8CPROTO-062S3-4343W`)

## Related resources

| Resources                       | Links                                                                                                                                                      |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ModusToolbox™ Software Training | [link](https://www.dropbox.com/sh/waj898o4o8eccx0/AAB3hBBaIQo2OvJ5-fubGJIha/training-modustoolbox-level1-getting-started-master/Manual/Ch2-Tools.pdf?dl=0) |

## Other resources

Infineon provides a wealth of data at [www.infineon.com](http://www.infineon.com) to help you select the right device, and quickly and effectively integrate it into your design.

## Document history

Document title: *BILL\_MTB-109* – LED Brightness using PWM via HAL<br>

<table><thead><tr><th width="149">Version</th><th>Description of change</th></tr></thead><tbody><tr><td>1.0.0</td><td>Lab 111: Learn basic OLED on a PSoC 6 microcontroller.</td></tr></tbody></table>

## Authors:

* *Assoc. Prof. Wiroon Sriborrirux*
* *Mr. Sriengchhun Chheang*
* *Mr. Sabol Socare*<br>

<br>

***

© BDH Corporation, 2022-2023
