# C/C++ for Embedded Programming

- [Development Environment Preparation](/c-c++-for-embedded-programming/development-environment-preparation.md)
- [ติดตั้ง WSL 2](/c-c++-for-embedded-programming/development-environment-preparation/wsl-2.md)
- [ติดตั้ง Ubuntu environment](/c-c++-for-embedded-programming/development-environment-preparation/ubuntu-environment.md)
- [ติดตั้งโปรแกรม Visual Studio Code](/c-c++-for-embedded-programming/development-environment-preparation/visual-studio-code.md)
- [การเชื่อมต่อ Virtual studio code เข้ากับ WSL](/c-c++-for-embedded-programming/development-environment-preparation/virtual-studio-code-wsl.md)
- [ติดตั้ง docker on WSL](/c-c++-for-embedded-programming/development-environment-preparation/docker-on-wsl.md)
- [Principle C/C++ Programming](/c-c++-for-embedded-programming/principle-c-c++-programming.md)
- [Get started with C++](/c-c++-for-embedded-programming/principle-c-c++-programming/get-started-with-c++.md)
- [Makefile](/c-c++-for-embedded-programming/principle-c-c++-programming/makefile.md)
- [Makefile Examples](/c-c++-for-embedded-programming/principle-c-c++-programming/makefile/makefile-examples.md)
- [Compiling and running](/c-c++-for-embedded-programming/principle-c-c++-programming/linux-os-lab-1-c-c++-code.-how-to-compile-and-run..md): Create your own C/C++ program and run it on your OS.
- [How to create a program that you can enter inputs.](/c-c++-for-embedded-programming/principle-c-c++-programming/linux-os-lab-1-c-c++-code.-how-to-compile-and-run./how-to-create-a-program-that-you-can-enter-inputs..md)
- [Lab 1 Exercise](/c-c++-for-embedded-programming/principle-c-c++-programming/linux-os-lab-1-c-c++-code.-how-to-compile-and-run./how-to-create-a-program-that-you-can-enter-inputs./lab-1-exercise.md)
- [Arguments](/c-c++-for-embedded-programming/principle-c-c++-programming/1.-arguments.md)
- [Command line arguments in C and C++](/c-c++-for-embedded-programming/principle-c-c++-programming/1.-arguments/command-line-arguments-in-c-and-c++.md): การใช้งาน argument ในภาษา C ด้วยฟังก์ชัน main
- [signed and unsigned data types](/c-c++-for-embedded-programming/principle-c-c++-programming/signed-and-unsigned-data-types.md)
- [Variable and Operator](/c-c++-for-embedded-programming/principle-c-c++-programming/variable.md)
- [If and If else](/c-c++-for-embedded-programming/principle-c-c++-programming/if-and-if-else.md): Make a condition and run it.
- [Loop, Infinite loop, and flag](/c-c++-for-embedded-programming/principle-c-c++-programming/infinite-loop-and-flag.md): Debug > more bug > repeat
- [Loop and Flag exercise](/c-c++-for-embedded-programming/principle-c-c++-programming/infinite-loop-and-flag/loop-and-flag-exercise.md)
- [Array](/c-c++-for-embedded-programming/principle-c-c++-programming/array.md)
- [Get to know with arrays](/c-c++-for-embedded-programming/principle-c-c++-programming/array/get-to-know-with-arrays.md)
- [Implement example](/c-c++-for-embedded-programming/principle-c-c++-programming/array/implement-example.md)
- [Vector](/c-c++-for-embedded-programming/principle-c-c++-programming/vector.md)
- [Object Oriented Programming (OOP) in C++](/c-c++-for-embedded-programming/object-oriented-programming-oop-in-c++.md)
- [Class and Object](/c-c++-for-embedded-programming/object-oriented-programming-oop-in-c++/class-and-object.md)
- [Encapsulation and Abstraction](/c-c++-for-embedded-programming/object-oriented-programming-oop-in-c++/encapsulation-and-abstraction.md)
- [Polymorphism and Inheritance](/c-c++-for-embedded-programming/object-oriented-programming-oop-in-c++/encapsulation-and-inheritance.md)
- [C/C++ Preprocessing](/c-c++-for-embedded-programming/c-c++-preprocessing.md): เทคนิคนี้จะเป็นการทบทวนผู้เรียนน ในสิ่งที่เคยตกหล่นไปหรือยังไม่เคยรู้เกี่ยวกับการทำงานในลักษณะนี้แม้จะเคยเห็นมาบ้างเราจะมาลงรายละเอียดทางด้านเทคนิคและการนำไปประยุกต์ทาง Embedded System ดังนี้ครับ
- [Macro](/c-c++-for-embedded-programming/c-c++-preprocessing/macro.md): ้เป็นคำสั่งที่ใช้ในการกำหนดค่า ประเภท หรือฟังก์ชัน โดยจะทำในกระบวนการ Preprocessing ทำไมถึงไม่ทำในโปรแกรมไปเลยทำไม่ต้องทำให้ยุ่งยาก งั้นมาดูกันครับว่าทำไมต้องใช้
- [Quiz Macro](/c-c++-for-embedded-programming/c-c++-preprocessing/macro/quiz-macro.md): ตอบคำถามจากสไลด์
- [File Inclusion](/c-c++-for-embedded-programming/c-c++-preprocessing/file-inclusion.md): จะเป็นการ Include ที่เราพบได้ทั่วไปในโปรแกรมที่เขียน เพราะทุกโปรแกรมต้องมีการ Include library หรือ header ไฟล์ที่ใช้มาประกอบการทำงาน
- [Conditional Compilation](/c-c++-for-embedded-programming/c-c++-preprocessing/conditional-compilation.md): เทคนิคนี้จะใช้เงื่อนไขเหมือน if-else ที่เราเขียนโปรแกรมกันมาใช้งานครับ แล้วมันแตกต่างกับเงื่อนไขปกติที่เราใช้กันยังไงมาดูกันครับ
- [Pragma directive](/c-c++-for-embedded-programming/c-c++-preprocessing/pragma-directive.md): โดยปกติเทคนิคนี้จะไม่คอยเจอในตอนที่เรียน แม่กระทั่งในหนังสือที่อ่านแต่อาจจะพบได้ในงานจริงๆ รวมถึงการโปรแกรมเพื่อออกแบบเชิงลึก ถ้าใครที่มาถึงตรงนี้สงสัยและอยากรู้เรื่องนี้มาดูกันครับ
- [Quiz Pragma](/c-c++-for-embedded-programming/c-c++-preprocessing/pragma-directive/quiz-pragma.md): ตอบคำถามจากสไลด์
- [String in C++](/c-c++-for-embedded-programming/string-in-c++.md)
- [Concatenation](/c-c++-for-embedded-programming/string-in-c++/concatenation.md): Put your sting together
- [Split](/c-c++-for-embedded-programming/string-in-c++/split.md): Make your string in to pieces
- [Type conversions for C/C++](/c-c++-for-embedded-programming/type-conversions-for-c-c++.md)
- [Conversion using Cast operator](/c-c++-for-embedded-programming/type-conversions-for-c-c++/conversion-using-cast-operator.md)
- [Error handling](/c-c++-for-embedded-programming/error-handling.md)
- [Data logger](/c-c++-for-embedded-programming/data-logger.md)
- [การสร้างไฟล์และเขียนไฟล์](/c-c++-for-embedded-programming/data-logger/undefined.md)
- [การอ่านไฟล์](/c-c++-for-embedded-programming/data-logger/undefined-1.md)
- [การเก็บข้อมูลกับTime stamp](/c-c++-for-embedded-programming/data-logger/c++.md)
- [High performance programing](/c-c++-for-embedded-programming/high-performance-programing.md)
- [Multi-task and Multi-thread](/c-c++-for-embedded-programming/high-performance-programing/multi-task-and-multi-thread.md)
- [Multi-threading example](/c-c++-for-embedded-programming/high-performance-programing/multi-task-and-multi-thread/multi-threading-example.md)
- [Mutex](/c-c++-for-embedded-programming/high-performance-programing/mutex.md)
- [Queue](/c-c++-for-embedded-programming/high-performance-programing/queue.md)
- [OpenCV](/c-c++-for-embedded-programming/high-performance-programing/opencv.md)
- [C/C++ Techniques](/c-c++-for-embedded-programming/c-programming-techniques.md)
- [Makefile in action](/c-c++-for-embedded-programming/c-programming-techniques/makefile-in-action.md)
- [Object Oriented Programming (OOP) in C++](/c-c++-for-embedded-programming/c-programming-techniques/object-oriented-programming-oop-in-c++.md)
- [Class and Object](/c-c++-for-embedded-programming/c-programming-techniques/object-oriented-programming-oop-in-c++/class-and-object.md)
- [Encapsulation and Abstraction](/c-c++-for-embedded-programming/c-programming-techniques/object-oriented-programming-oop-in-c++/encapsulation-and-abstraction.md)
- [Polymorphism and Inheritance](/c-c++-for-embedded-programming/c-programming-techniques/object-oriented-programming-oop-in-c++/encapsulation-and-inheritance.md)
- [C/C++ Preprocessing](/c-c++-for-embedded-programming/c-programming-techniques/c-c++-preprocessing.md): เทคนิคนี้จะเป็นการทบทวนผู้เรียนน ในสิ่งที่เคยตกหล่นไปหรือยังไม่เคยรู้เกี่ยวกับการทำงานในลักษณะนี้แม้จะเคยเห็นมาบ้างเราจะมาลงรายละเอียดทางด้านเทคนิคและการนำไปประยุกต์ทาง Embedded System ดังนี้ครับ
- [Macro](/c-c++-for-embedded-programming/c-programming-techniques/c-c++-preprocessing/macro.md): ้เป็นคำสั่งที่ใช้ในการกำหนดค่า ประเภท หรือฟังก์ชัน โดยจะทำในกระบวนการ Preprocessing ทำไมถึงไม่ทำในโปรแกรมไปเลยทำไม่ต้องทำให้ยุ่งยาก งั้นมาดูกันครับว่าทำไมต้องใช้
- [Quiz Macro](/c-c++-for-embedded-programming/c-programming-techniques/c-c++-preprocessing/macro/quiz-macro.md): ตอบคำถามจากสไลด์
- [File Inclusion](/c-c++-for-embedded-programming/c-programming-techniques/c-c++-preprocessing/file-inclusion.md): จะเป็นการ Include ที่เราพบได้ทั่วไปในโปรแกรมที่เขียน เพราะทุกโปรแกรมต้องมีการ Include library หรือ header ไฟล์ที่ใช้มาประกอบการทำงาน
- [Conditional Compilation](/c-c++-for-embedded-programming/c-programming-techniques/c-c++-preprocessing/conditional-compilation.md): เทคนิคนี้จะใช้เงื่อนไขเหมือน if-else ที่เราเขียนโปรแกรมกันมาใช้งานครับ แล้วมันแตกต่างกับเงื่อนไขปกติที่เราใช้กันยังไงมาดูกันครับ
- [Pragma directive](/c-c++-for-embedded-programming/c-programming-techniques/c-c++-preprocessing/pragma-directive.md): โดยปกติเทคนิคนี้จะไม่คอยเจอในตอนที่เรียน แม่กระทั่งในหนังสือที่อ่านแต่อาจจะพบได้ในงานจริงๆ รวมถึงการโปรแกรมเพื่อออกแบบเชิงลึก ถ้าใครที่มาถึงตรงนี้สงสัยและอยากรู้เรื่องนี้มาดูกันครับ
- [Quiz Pragma](/c-c++-for-embedded-programming/c-programming-techniques/c-c++-preprocessing/pragma-directive/quiz-pragma.md): ตอบคำถามจากสไลด์
- [Binary, Octal and Hexadecimal Numbers](/c-c++-for-embedded-programming/c-programming-techniques/binary-octal-and-hexadecimal-numbers.md)
- [Array and properties of an array](/c-c++-for-embedded-programming/c-programming-techniques/array-and-properties-of-an-array.md)
- [Get to know with arrays](/c-c++-for-embedded-programming/c-programming-techniques/array-and-properties-of-an-array/get-to-know-with-arrays.md)
- [Implement example](/c-c++-for-embedded-programming/c-programming-techniques/array-and-properties-of-an-array/implement-example.md)
- [What's next?](/c-c++-for-embedded-programming/c-programming-techniques/whats-next.md)
