Initial commit

This commit is contained in:
2023-12-17 15:41:17 +01:00
commit 3246639e6f
5 changed files with 378 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch
+10
View File
@@ -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"
]
}
+11
View File
@@ -0,0 +1,11 @@
{
"[cpp]": {
"editor.formatOnSave": true
},
"[ignore]": {
"editor.formatOnSave": true
},
"[jsonc]": {
"editor.formatOnSave": true
}
}
+4
View File
@@ -0,0 +1,4 @@
[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328
framework = arduino
+348
View File
@@ -0,0 +1,348 @@
#include <Arduino.h>
#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);
}