diff --git a/.vscode/studuino.code-snippets b/.vscode/studuino.code-snippets new file mode 100644 index 0000000..29b0d66 --- /dev/null +++ b/.vscode/studuino.code-snippets @@ -0,0 +1,61 @@ +{ + "Studuino Boilerplate": { + "prefix": "studuino_boilerplate", + "body": [ + "#include // Basic header file", + "#include ", + "// Servomotor header file", + "#include ", + "// I2C device header file", + "#include // Accelerometer header file", + "#include ", + "// Gyroscope header file", + "#include ", + "// IR Receiver header file", + "#include ", + "// Color Sensor header file", + "#include \"Studuino.h\" // Studuino header file", + "", + "Studuino board;", + "", + "void setup() {", + " $1", + "}", + "", + "void loop() {", + " $2", + "}" + ], + "description": "Standard Studuino header includes and boilerplate" + }, + "InitSensorPort": { + "prefix": "InitSensorPort", + "body": "board.InitSensorPort(${1:PORT}, ${2:TYPE});", + "description": "Initializes a sensor port." + }, + "GetUltrasonicSensorValue": { + "prefix": "GetUltrasonicSensorValue", + "body": "GetUltrasonicSensorValue(${1:trigger}, ${2:echo})", + "description": "Retrieves the value of an Ultrasonic Sensor." + }, + "GetGyroscopeValue": { + "prefix": "GetGyroscopeValue", + "body": "GetGyroscopeValue(${1|X_AXIS,Y_AXIS,Z_AXIS,GX_AXIS,GY_AXIS,GZ_AXIS|})", + "description": "Retrieves acceleration and angular velocity of a Gyroscope." + }, + "Move": { + "prefix": "board.Move", + "body": "board.Move(${1:direction}, ${2:power}, ${3:duration}, ${4:stopMode});", + "description": "Moves DC Motors." + }, + "LED": { + "prefix": "board.LED", + "body": "board.LED(${1:port}, ${2:color});", + "description": "Sets the LED color." + }, + "Buzzer": { + "prefix": "board.Buzzer", + "body": "board.Buzzer(${1:pitch}, ${2:duration});", + "description": "Plays a sound on the buzzer." + } +} diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..06e4f09 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,18 @@ +# Studuino Development Instructions + +## Environment Setup +- Run `./setup.sh --with-editor` to install `arduino-cli` and `clangd`. +- **Mandatory Configuration**: Create `.arduino_config.lua` in the root with `board` and `port` settings for `Arduino-Nvim` to function. + +## Development Workflow +- **Boilerplate**: Use the `studuino_boilerplate` snippet to insert required headers and the `Studuino board` instance. +- **Snippets**: Project-specific snippets are located in `.vscode/studuino.code-snippets`. +- **Build & Upload**: Use the following Neovim leader keybindings: + - `mc`: Compile (`:InoCheck`) + - `mu`: Upload (`:InoUpload`) + - `mm`: Serial Monitor (`:InoMonitor`) + +## Repo Structure +- **Libraries**: Custom or adapted libraries are under `/libraries/`. Key libraries used in Studuino projects include: + - `ColorSensor`, `MPU6050`, `BusIOForStuduino`, `Clock`, `Servo`, `Adafruit_CircuitPlayground`, and `IRremoteForStuduino`. + - When adding new functionality, ensure the corresponding header files are included in your sketches as shown in the boilerplate. diff --git a/README.md b/README.md index 05e4c0a..04c77e7 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,19 @@ This repository contains the Studuino hardware definition, the legacy Studuino l - Optional `picocom` serial-monitor support. - A LazyVim/Arduino-Nvim configuration template. +## Libraries + +Custom or adapted libraries are located in the `/libraries/` directory. These include: +- `ColorSensor` +- `MPU6050` +- `BusIOForStuduino` +- `Clock` +- `Servo` +- `Adafruit_CircuitPlayground` +- `IRremoteForStuduino` + +When creating new programs, ensure the header files for the components you are using are properly included in your sketches. Use the provided `studuino_boilerplate` snippet to get started quickly. + ## Requirements - Arch Linux or another Linux distribution with `bash`.