diff --git a/0_Introduction/setup.md b/0_Introduction/setup.md index e6a8d39..a4e3b90 100644 --- a/0_Introduction/setup.md +++ b/0_Introduction/setup.md @@ -2,7 +2,7 @@ ### Dev Envitonment -Nobara 39 on a hand-me-down dual core dell laptop. An RPi Pico, programming over usb cable. Some wires, buttons, LEDs and resistors I Borrowed from lab. +Nobara/Fedora 39 on a hand-me-down dual core dell laptop. An RPi Pico, programming over usb cable. Some wires, buttons, LEDs and resistors I Borrowed from lab. ### Code Editor Instead of using Arduino IDE, I use Visual Studio Code for programming. I use it because I (seem to) write code more efficiently and because I have it customized it to my liking. @@ -15,7 +15,7 @@ Extensions I use: ### Project Generation -A C Pico project requires additional files to handle compilation: CMakeList.txt and pico_sdk_import.cmake, templates of both available in the installed pico sdk. To automate this, I use [Pico Project Generator](https://github.com/raspberrypi/pico-project-generator). +A C Pico project requires additional files to handle compilation: CMakeList.txt and pico_sdk_import.cmake, templates of both available in the installed pico sdk. To automate this, I am using [Pico Project Generator](https://github.com/raspberrypi/pico-project-generator) to generate the boilerplate code for the project. Most of the options are left default. The only changes are: `Console over USB` and `Create VSCode Project` are enabled. @@ -40,7 +40,6 @@ So uploading the code requires following steps: This will mount the pico as a storage device, to where the generated `.UF2` file should be copied. - ## Hardware Setup I have the RaspberryPi Pico Non-W variant: without the wireless chip. Soldered male jumper headers and mounted it onto a large breadboard. I am using solid copper wires for connections, because they stay in set shape. diff --git a/1_Basic_GPIO/blinky.md b/1_Basic_GPIO/blinky.md new file mode 100644 index 0000000..4c29481 --- /dev/null +++ b/1_Basic_GPIO/blinky.md @@ -0,0 +1,50 @@ +## Blinky + +The classic, the helloWorld of embedded programming. This program turns the LED on and off periodically. + +### Initial steps: +- Create new project with project generator. +- Open the project folder in VSCode. +- Build the project by pressing the `build` button at the bottom and select the option with `arm-none-eabi`. +- Make sure the build exits with code 0. + + + +### Basic Code: + +``` C +int main() +{ + stdio_init_all(); + + const uint OnBoardLED = PICO_DEFAULT_LED_PIN; + gpio_init(OnBoardLED); + gpio_set_dir(OnBoardLED, GPIO_OUT); + while (true){ + gpio_put(OnBoardLED, true); + sleep_ms(500); + gpio_put(OnBoardLED, false); + sleep_ms(500); + } +} +``` + +#### Explanation: +`stdio_init_all()`: initialize stuff + +`OnBoardLED = PICO_DEFAULT_LED_PIN`: Get the GPIO number of onboard LED. Remember this is GPIO Number, NOT PIN NUMBER. + +`gpio_init(OnBoardLED)`: Initialize that GPIO pin. + +`gpio_set_dir(OnBoardLED, GPIO_OUT)`: Set GPIO direction (`GPIO_OUT` for writing and `GPIO_IN` for reading). + +`while (true){}`: Super loop of the program + +`gpio_put(OnBoardLED, true)`: Set `OnBoardLED` pin to `on` (`true` to turn on/set to high/voltage to VDD, `false` to turn off/set to low/voltage to GND) + +Pico login HIGH voltage is 3.3v and LOW voltage is 0v. + +`sleep_ms(500)`: sleep for 500ms. + +--- + diff --git a/assets/buildButton.png b/assets/buildButton.png new file mode 100644 index 0000000..58dfc86 Binary files /dev/null and b/assets/buildButton.png differ