[EN] Simple Tetris Ep.2

From the previous chapter, we have drawn the background, random objects, object drawing, left and right moving and rotating. In Part 2 of the article, which is the preceding final chapter of the Tetris series, the topic is about creating a backdrop as a grid data structure. If an object falls to the bottom, it converts that object to a table of data as shown in Figure 1, and improves the way the object falls and controls/renders the new object by using a timer without checking for collisions from moving left / right, checking if the falling object overlaps the previous object, rotation and row cutting, which will be discussed in the last article or Simple Tetris Ep.3

Figure 1 The game in this article

[EN] Simple Tetris Ep.1

This article introduces how to write a simple Tetris game by displaying it in a grid of 10 widths and a height of 16 as shown in Figure 1. Using esp32 microcontroller board connected to ST7735 display and 8 switches for controlling. Importantly it is written in Python via MicroPython compiled using the st7735_mpy library. In this article, we talk about storing 7 types of objects that fall, to support the display and rotation of objects with moving objects left and right. The controls and logic of the Tetris game will be discussed in the next article.

Figure 1 Sample game in this article

[TH] การสแกน QR Code และแสดงวัตถุสามมิติใน Unity3D

สำหรับสุดยอดโปรแกรมสร้างเกมอย่าง Unity3D แล้วนั้นมีจุดเด่นมากมายดังที่เคยกล่าวไป ซึ่งข้อหนึ่งนั้นคือการที่โปรแกรมสามารถสร้างเกมได้ในแทบทุกแพลตฟอร์มไม่ว่าจะเป็น คอมพิวเตอร์หรือมือถือ ซึ่งในบทความนี้จะกล่าวถึงการใช้งานบนมือถือ ซึ่งแน่นอนว่าต้องมีอุปกรณ์ที่คอมพิวเตอร์ไม่มีเช่น กล้อง โดยจะกล่าวถึงวิธีการแสกน QR Code เพื่อสั่งงานตามข้อความที่ถอดมาได้ และสั่งให้แสดงเป็นวัตถุ 3 มิติ

QR Code

เกริ่นสักนิดก่อนเพื่อให้ทุกท่านเข้าใจว่า QR Code มีลักษณะคล้ายกับ Barcode คือมีการแปลงข้อความให้อยู่ในรูปแบบที่กำหนด โดยมีลักษณะเป็นสี่เหลี่ยมจตุรัส มีจุดบอกทิศอยู่ 3 มุม เพื่อให้รู้ว่าด้านไหนเป็นด้านบน และใช้โปรแกรมในการแสกนเพื่อถอดข้อความซึ่งเป็นได้ทั้ง ตัวอักษร ตัวเลข อักขระต่างๆ ลิงค์ ฯ

เมื่อต้องการถอดรหัส QR code เป็นข้อความสามารถทำได้ทั้งการใช้กล้องแสกน หรือ บันทึกรูปภาพและใช้โปรแกรมถอดรหัส

ภาพที่ 1 QR code ของข้อความ “Hello world!! we are Jarutex!!”

[EN] How to make the stopwatch?

From the article Create a clock that displays an analog display through a color display, this time, it has been modified to make it work as a timer or stopwatch by using the ESP32-CAM board connected to the TFT display and using a switch from pin GPIO0 used as a mode switch or program chip when booting the system or supply power to board ESP32-CAM as shown in Figure 1 and programming still uses Python language with MicroPython as always

Figure 1 dCore RED, esp32cam+REDTAB

[EN] Draw an analog clock using MicroPython.

The previous article discussed how to improve the display speed by using the double buffer technique. It is applied for the analog clock display as shown in Figure 1. We used Trigonometric calculations to determine the coordinates (x,y) of the tips of the seconds, minutes and hours. Each second operation uses a timer to make the operation closer to real-time than the Loop or Delay.

Figure 1 Result of drawing Analog clock

[EN] MicroPython : pyb USB_HID/USB_VCP

This article discusses the use of USB HID capabilities of  STM32F411CEU6 via MicroPython in pyb class, our team was inspired by Dr. Rawat’s article MicroPython for STM32F411 Black Pill: Embedded Programming Style of Siriphokaphirom. So let’s start compiling and uploading the firmware (Read details from Ajarn Dr. Rawat’s article). We use the WeAct STM32F411CEU6 imitation board as shown in Figure 1. When installing MicroPython, there will be a pyb class to use.

Figure 1 Our board

[EN] List the serial ports connected to the RPi with pySerial and PyQt5.

In the previous article, we have read the list of devices connected to the serial port of the Raspberry Pi board or RPi with the pySerial library in text mode as shown in Figure 1. This article combines the previous working principles with the use of a graphical user interface via the PyQt5 library, listed in the combobox for users to choose from. If no serial port connected to the board is found, the RPi disables the combobox from user selection. Therefore, this article discusses the implementation of pySerial with the QLabel and QComboBox libraries. PyQt5.

[EN] LittleFS Filesystem

The article discusses the use of the LittleFS library and introduces a library developed for use with the esp32 microcontroller, which includes a plugin for the Arduino IDE for uploading files to the microcontroller’s ROM. Make it convenient to load data to store and run. For this reason, if programmers find it difficult to transcode HTML/CSS/JavaScript to be a string manually and switching to uploading files to esp32 and reading the web files directly to use will be something that will require training to use LittleFS as a reliable library.


[TH] Into 3d printing

จากบทความก่อนๆ ทุกท่านคงจะทราบดีว่าทางทีมงานได้ทดลองเกี่ยวกับ Microcontroller รวมถึงการสร้างเกม แต่นอกจากนั้นทางทีมงานยังได้ทดลองเกี่ยวกับการพิมพ์ 3 มิติด้วย โดยในบทความนี้จะพูดคุยเกี่ยวกับการพิมพ์ 3 มิติ โดยมีรายละเอียดพอสังเขป

ภาพที่ 1 ที่วางแก้วแบบปรับสมดุลจากการพิมพ์ 3 มิติ

[EN] Binary Search Tree data structure programming with Python.

In the previous article, programming to implement queue-based data structures was introduced. In this article, we introduce programming to manage another type of data structure which has different storage and management methods called BST tree or Binary Search Tree, as shown in Figure 1, which is a structure that can be applied to data collection with attributes in which the data in the left branch is less than itself and the right branch is greater than itself or the opposite, i.e. the left branch has a greater value and the right branch is less. It enables searching for data in cases where the tree is balanced on the left and right in the BST structure, saving half the time or number of search times per round of available data, e.g. 100 data sets in the first round if it is not the information you are looking for will be left with a choice to find from the left or right branches which the selection causes the information of the other side is not considered or cut off approximately half. However, if the Binary Search Tree is out of balance, the search speed is not much different from the sequential search.

In this article, we use Python that works on either a Python 3 or MicroPython interpreter to store the data, adding information ,searching for information as an example of further development.

BST : Binary Search Tree
Figure 1 BST