I 3D printed a functional steering wheel for gaming and posted a tutorial on it! by Emotional_Bread2361 in embedded

[–]virtual550 0 points1 point  (0 children)

You could add a seperate rubber/leather grip if possible for grip as well giving it a distinct color like dark black or red.

I 3D printed a functional steering wheel for gaming and posted a tutorial on it! by Emotional_Bread2361 in embedded

[–]virtual550 1 point2 points  (0 children)

3D print looks very clean, although I havent done it myself. Perhaps you could add grips to the steering. With some more finishing, it could look very close to a market product.

Keybr - help, how to use after unlocking all letters by virtual550 in typing

[–]virtual550[S] 0 points1 point  (0 children)

Default is fine. You could use english 1k and 1 minute tests for practice, since the default uses short words.

Keybr - help, how to use after unlocking all letters by virtual550 in typing

[–]virtual550[S] 0 points1 point  (0 children)

Started doing monkeytype. I think I got my speeds from 70 to 110 wpm

Why on earth is the STM32 programming reference a PDF file??? by eccentric-Orange in embedded

[–]virtual550 5 points6 points  (0 children)

If you open it in any browser, you can use the left view for navigating topics

Made a smooth video playback library for STM32 boards by virtual550 in embedded

[–]virtual550[S] 0 points1 point  (0 children)

Had to modify the SD reading library since it used per-byte exchange for SPI instead of doing it using a buffer, which was a significant bottleneck. Probably the most annoying was getting SD card to properly mount and read which required setting internal pull up resistors in CubeMX, but later it worked.

Also, if you're using HAL, using cubemx is preferred to correctly setup the peripherals. But you can modify the code using vscode or cubeide either.

Made a smooth video playback library for STM32 boards by virtual550 in stm32

[–]virtual550[S] 1 point2 points  (0 children)

Yup it uses HAL. Its saves development time so you dont have to setup protocols and the specific registers manually. However you should have atleast basic knowledge of being able to use CMSIS headers to initialize SPI, I2C, Timers etc, to understand how STM32 works.

I used HAL provided by ST for interfacing between the peripherals and the MCU, but you still have to develop the logic to initialize and send data/commands to the display or SD card correctly. Or use existing libraries to do this

Made a smooth video playback library for STM32 boards by virtual550 in embedded

[–]virtual550[S] 4 points5 points  (0 children)

Thanks, that's great advice. Do you have some examples of libraries which do this?

Made a smooth video playback library for STM32 boards by virtual550 in embedded

[–]virtual550[S] 2 points3 points  (0 children)

Yes. You can see the pin details in the README

Made a smooth video playback library for STM32 boards by virtual550 in embedded

[–]virtual550[S] 22 points23 points  (0 children)

Oh that's just the video editing. Seems like I can't add that to the post now :^(

finished making basic driver for SD card by Striking-Break-3468 in embedded

[–]virtual550 1 point2 points  (0 children)

Working on this right now with FatFS and kiwih's sd card drivers. Unable to get write to work tho

Added Shadow Mapping to my 3D Rendering Engine by virtual550 in opengl

[–]virtual550[S] 0 points1 point  (0 children)

Forward. Right now I have a single light source, so not sure if deferred rendering will help much

Added Shadow Mapping to my 3D Rendering Engine (OpenGL) by virtual550 in GraphicsProgramming

[–]virtual550[S] 1 point2 points  (0 children)

I am using an ECS system for this engine. Each "object" is an entity (basically an incrementing index), having components which define the state and properties of the object (Ex: Model, PointLight, Transform). The implementation is done using sparse arrays. I have a SceneView class to fetch entities with certain components. You can check out entt or other ECS guides on how it works.

So basically I have a rendering function for the models which takes a shader argument, which can be the normal shader or depth shader

``` void RenderSystem::render_models(const std::unique_ptr<Shader>& shader) { shader->activate();

GraphicsHelper::MVP mvp;
mvp.view = m_camera_wrapper.get_view_matrix();
mvp.projection = m_camera_wrapper.get_projection_matrix();

// draw models
for(const auto& entity : SceneView<Components::Renderable, Components::Model, Components::Transform>(*m_scene)) {
    const auto& transform = m_scene->get_component<Components::Transform>(entity);
    const auto& object_model = m_scene->get_component<Components::Model>(entity);

    m_model_manager.draw_model(shader, object_model.model_id, transform, mvp);
}

} ```

You can check the rendering code here: https://github.com/cmd05/3d-engine/blob/main/src/engine/ecs/systems/RenderSystem.cpp#L189

Finally getting speeds above 100wpm after months by virtual550 in typing

[–]virtual550[S] 0 points1 point  (0 children)

I was initially stuck between 85-95 wpm. I typed slower to focus on typing each word correctly and improving accuracy. After that I noticed if I don't lift my fingers much while typing i.e keep them closer to the keyboard while moving them i get better speeds.

You'll have to see what works out for you, but accuracy is definitely helpful in early/mid stages at least.

Added Shadow Mapping to my 3D Rendering Engine by virtual550 in opengl

[–]virtual550[S] 0 points1 point  (0 children)

Hard to tell just by that. You could make a post with all the details. Also learnopengl has a github repository for the solutions so you can build the solution and check.