commit 3246639e6f45f3e346a191b8da7db6c03a8559cf Author: Michel Bats Date: Sun Dec 17 15:41:17 2023 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..89cc49c --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..080e70d --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ], + "unwantedRecommendations": [ + "ms-vscode.cpptools-extension-pack" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a8a1105 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "[cpp]": { + "editor.formatOnSave": true + }, + "[ignore]": { + "editor.formatOnSave": true + }, + "[jsonc]": { + "editor.formatOnSave": true + } +} \ No newline at end of file diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..887c015 --- /dev/null +++ b/platformio.ini @@ -0,0 +1,4 @@ +[env:nanoatmega328] +platform = atmelavr +board = nanoatmega328 +framework = arduino diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..392bd7c --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,348 @@ +#include + +#define PIN_1 9 +#define PIN_2 10 + +// In Wave pattern +void patternInWave(uint8_t pin1, uint8_t pin2, int times = 8, int delayMil = 6) +{ + for (int i = 0; i <= times - 1; i++) + { + for (int j = 0; j <= 80; j++) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, 80, 0, ((6 * 1000) / 2))); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, 80, ((6 * 1000) / 2), 0)); + } + for (int j = 80; j >= 0; j--) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, 80, 0, ((6 * 1000) / 2))); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, 80, ((6 * 1000) / 2), 0)); + } + } + + for (int i = 0; i <= (times * 2) - 1; i++) + { + for (int j = 0; j <= 40; j++) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, 40, 0, ((6 * 1000) / 2))); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, 40, ((6 * 1000) / 2), 0)); + } + for (int j = 40; j >= 0; j--) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, 40, 0, ((6 * 1000) / 2))); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, 40, ((6 * 1000) / 2), 0)); + } + } + + return; +} + +// Sequential pattern +void patternSequential(uint8_t pin1, uint8_t pin2, int times = 4, int delayMil = 1346) +{ + for (int i = 0; i <= times - 1; i++) + { + delayMil = delayMil / 2; + + for (int j = 0; j <= (times * pow(2, i)) - 1; j++) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delay(delayMil); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delay(delayMil); + } + } + + return; +} + +// Slo Glo pattern +void patternSloGlo(uint8_t pin1, uint8_t pin2, int times = 3, int delayMil = 6) +{ + int numberLoops = 1350; + + for (int i = 0; i <= times - 1; i++) + { + digitalWrite(pin1, LOW); + digitalWrite(pin2, LOW); + for (int j = 0; j <= numberLoops; j++) + { + + digitalWrite(pin1, HIGH); + delayMicroseconds(map(j, 0, numberLoops, 0, (delayMil * 1000))); + digitalWrite(pin1, LOW); + delayMicroseconds(map(j, 0, numberLoops, (delayMil * 1000), 0)); + } + for (int j = numberLoops; j >= 0; j--) + { + + digitalWrite(pin1, HIGH); + delayMicroseconds(map(j, 0, numberLoops, 0, (delayMil * 1000))); + digitalWrite(pin1, LOW); + delayMicroseconds(map(j, 0, numberLoops, (delayMil * 1000), 0)); + } + digitalWrite(pin1, LOW); + digitalWrite(pin2, LOW); + for (int j = 0; j <= numberLoops; j++) + { + + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, numberLoops, 0, (delayMil * 1000))); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, numberLoops, (delayMil * 1000), 0)); + } + for (int j = numberLoops; j >= 0; j--) + { + + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, numberLoops, 0, (delayMil * 1000))); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, numberLoops, (delayMil * 1000), 0)); + } + + numberLoops = numberLoops / 2; + } + + return; +} + +// Chasing / Flash patters +void patternChasingFlash(uint8_t pin1, uint8_t pin2, int times = 1, int delayMil = 375) +{ + for (int i = 0; i <= 2; i++) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delay(delayMil / 4); + digitalWrite(pin1, LOW); + delay(delayMil / 4); + } + for (int i = 0; i <= 2; i++) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delay(delayMil / 2); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delay(delayMil / 2); + } + for (int i = 0; i <= 2; i++) + { + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delay(delayMil / 4); + digitalWrite(pin2, LOW); + delay(delayMil / 4); + } + for (int i = 0; i <= 2; i++) + { + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delay(delayMil / 2); + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delay(delayMil / 2); + } + + return; +} + +// Slow Fade pattern +void patternSlowFade(uint8_t pin1, uint8_t pin2, int times = 1, int delayMil = 10) +{ + int delayMic = delayMil * 1000; + + for (int i = 0; i <= 1; i++) + { + for (int j = 0; j <= 425; j++) + { + + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, 425, 0, delayMic / 2)); + digitalWrite(pin1, LOW); + delayMicroseconds(map(j, 0, 425, delayMic, 0)); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, 425, 0, delayMic / 2)); + } + for (int j = 425; j >= 0; j--) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, 425, 0, delayMic / 2)); + digitalWrite(pin1, LOW); + delayMicroseconds(map(j, 0, 425, delayMic, 0)); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, 425, 0, delayMic / 2)); + } + digitalWrite(pin1, LOW); + digitalWrite(pin2, LOW); + delay(375); + } + + for (int i = 0; i <= 1; i++) + { + for (int j = 0; j <= 178; j++) + { + + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, 178, 0, delayMic / 2)); + digitalWrite(pin1, LOW); + delayMicroseconds(map(j, 0, 178, delayMic, 0)); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, 178, 0, delayMic / 2)); + } + for (int j = 178; j >= 0; j--) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, 178, 0, delayMic / 2)); + digitalWrite(pin1, LOW); + delayMicroseconds(map(j, 0, 178, delayMic, 0)); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, 178, 0, delayMic / 2)); + } + digitalWrite(pin1, LOW); + digitalWrite(pin2, LOW); + delay(375); + } + + for (int i = 0; i <= 3; i++) + { + for (int j = 0; j <= 99; j++) + { + + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, 99, 0, delayMic / 2)); + digitalWrite(pin1, LOW); + delayMicroseconds(map(j, 0, 99, delayMic, 0)); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, 99, 0, delayMic / 2)); + } + for (int j = 99; j >= 0; j--) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delayMicroseconds(map(j, 0, 99, 0, delayMic / 2)); + digitalWrite(pin1, LOW); + delayMicroseconds(map(j, 0, 99, delayMic, 0)); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delayMicroseconds(map(j, 0, 99, 0, delayMic / 2)); + } + digitalWrite(pin1, LOW); + digitalWrite(pin2, LOW); + delay(375); + } + + return; +} + +// Twinkle Flash pattern +void patternTwinkleFlash(uint8_t pin1, uint8_t pin2, int times = 6, int delayMil = 118) +{ + for (int i = 0; i <= times - 1; i++) + { + for (int j = 0; j <= 2; j++) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delay(delayMil / 2); + digitalWrite(pin1, LOW); + delay(delayMil / 2); + } + for (int j = 0; j <= 2; j++) + { + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delay(delayMil / 2); + digitalWrite(pin2, LOW); + delay(delayMil / 2); + } + } + + return; +} + +// Steady On pattern +void patternSteadyOn(uint8_t pin1, uint8_t pin2, int times = 1600, int delayMil = 1) +{ + int delayMic = delayMil * 1000; + + for (int i = 0; i <= times - 1; i++) + { + digitalWrite(pin1, HIGH); + digitalWrite(pin2, LOW); + delayMicroseconds(delayMic / 2); + digitalWrite(pin1, LOW); + digitalWrite(pin2, HIGH); + delayMicroseconds(delayMic / 2); + } + + return; +} + +// Off pattern +void patternOff(uint8_t pin1, uint8_t pin2) +{ + digitalWrite(pin1, LOW); + digitalWrite(pin2, LOW); + + return; +} + +// Combination pattern +void patternCombination(uint8_t pin1, uint8_t pin2) +{ + // 2. In Wave + patternInWave(pin1, pin2); + // 3. Sequential + patternSequential(pin1, pin2); + // 4. Slo Glo + patternSloGlo(pin1, pin2); + // 5. Chasing / Flash + patternChasingFlash(pin1, pin2); + // 6. Slow Fade + patternSlowFade(pin1, pin2); + // 7. Twinkle Flash + patternTwinkleFlash(pin1, pin2); + // 8. Steady On + patternSteadyOn(pin1, pin2); + return; +} + +void setup() +{ + pinMode(PIN_1, OUTPUT); + pinMode(PIN_2, OUTPUT); +} + +void loop() +{ + patternCombination(PIN_1, PIN_2); +}