2020-11-27 05:28:57 -05:00
|
|
|
//
|
|
|
|
// FILE: nibbleArray_demo.ino
|
|
|
|
// AUTHOR: Rob Tillaart
|
|
|
|
// PURPOSE: demo nibble array
|
|
|
|
// DATE: 2020-06-21
|
|
|
|
// URL: https://github.com/RobTillaart/nibbleArray
|
|
|
|
|
2021-11-10 13:53:12 -05:00
|
|
|
|
2020-11-27 05:28:57 -05:00
|
|
|
#include "nibbleArray.h"
|
|
|
|
|
|
|
|
nibbleArray na(500);
|
|
|
|
|
2021-11-10 13:53:12 -05:00
|
|
|
|
2020-11-27 05:28:57 -05:00
|
|
|
void setup()
|
|
|
|
{
|
|
|
|
Serial.begin(115200);
|
|
|
|
Serial.println(__FILE__);
|
|
|
|
Serial.print("NIBBLEARRAY_LIB_VERSION: ");
|
|
|
|
Serial.println(NIBBLEARRAY_LIB_VERSION);
|
|
|
|
|
|
|
|
test_1();
|
|
|
|
|
|
|
|
Serial.println("\nDone...");
|
|
|
|
}
|
|
|
|
|
2021-11-10 13:53:12 -05:00
|
|
|
|
2020-11-27 05:28:57 -05:00
|
|
|
void test_1()
|
|
|
|
{
|
|
|
|
int ar[16];
|
|
|
|
for (int i = 0; i < 16; i++) ar[i] = 0;
|
|
|
|
|
|
|
|
na.clear();
|
|
|
|
|
|
|
|
// 500 throws with 3 dices (3..18 ==> 0..15)
|
|
|
|
for (int i = 0; i < 500; i++)
|
|
|
|
{
|
2021-11-10 13:53:12 -05:00
|
|
|
uint8_t sum = random(6); // 0..5
|
2020-11-27 05:28:57 -05:00
|
|
|
sum += random(6);
|
|
|
|
sum += random(6);
|
|
|
|
na.set(i, sum); // diff from na.set(i, random(16));
|
|
|
|
}
|
2021-11-10 13:53:12 -05:00
|
|
|
|
2020-11-27 05:28:57 -05:00
|
|
|
for (int i = 0; i < 500; i++)
|
|
|
|
{
|
|
|
|
ar[na.get(i)]++;
|
|
|
|
Serial.print(" ");
|
|
|
|
Serial.print(na.get(i), HEX);
|
|
|
|
if ((i % 32) == 31) Serial.println();
|
|
|
|
}
|
|
|
|
Serial.println();
|
2021-11-10 13:53:12 -05:00
|
|
|
|
2020-11-27 05:28:57 -05:00
|
|
|
Serial.println("\nFrequency analysis");
|
|
|
|
for (int i = 0; i < 16; i++)
|
|
|
|
{
|
|
|
|
Serial.print(i);
|
|
|
|
Serial.print("\t");
|
|
|
|
// for (int p = 0; p < ar[i]; p++) Serial.print(">");
|
|
|
|
Serial.print(ar[i]);
|
|
|
|
Serial.println();
|
|
|
|
}
|
|
|
|
Serial.println();
|
|
|
|
|
|
|
|
Serial.println("\ninterpret data as a route");
|
|
|
|
for (int i = 0; i < 20; )
|
|
|
|
{
|
|
|
|
uint8_t s = na.get(i++);
|
|
|
|
uint8_t d = na.get(i++);
|
|
|
|
move(s, d);
|
|
|
|
}
|
|
|
|
|
|
|
|
Serial.println("\nor store music in the array");
|
|
|
|
for (int i = 0; i < 30; )
|
|
|
|
{
|
|
|
|
uint8_t octave = na.get(i++);
|
|
|
|
uint8_t note = na.get(i++);
|
|
|
|
uint8_t duration = na.get(i++); // in 1/16th
|
|
|
|
play(octave, note, duration);
|
|
|
|
// sendMIDI(note, duration);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-11-10 13:53:12 -05:00
|
|
|
|
|
|
|
void play(uint8_t octave, uint8_t note, uint8_t duration)
|
2020-11-27 05:28:57 -05:00
|
|
|
{
|
|
|
|
Serial.print("Play: ");
|
2021-11-10 13:53:12 -05:00
|
|
|
// Serial.print(octave);
|
2020-11-27 05:28:57 -05:00
|
|
|
Serial.print(" ");
|
|
|
|
switch (note)
|
|
|
|
{
|
|
|
|
case 0: Serial.print("C "); break;
|
|
|
|
case 1: Serial.print("C# "); break;
|
|
|
|
case 2: Serial.print("D "); break;
|
|
|
|
case 3: Serial.print("D# "); break;
|
|
|
|
case 4: Serial.print("E "); break;
|
|
|
|
case 5: Serial.print("F "); break;
|
|
|
|
case 6: Serial.print("F# "); break;
|
|
|
|
case 7: Serial.print("G "); break;
|
|
|
|
case 8: Serial.print("G# "); break;
|
|
|
|
case 9: Serial.print("A "); break;
|
|
|
|
case 10: Serial.print("A# "); break;
|
|
|
|
case 11: Serial.print("B "); break;
|
|
|
|
case 12: Serial.print("C "); break;
|
|
|
|
case 13: Serial.print("C# "); break;
|
|
|
|
case 14: Serial.print("D "); break;
|
|
|
|
case 15: Serial.print(" - "); break;
|
|
|
|
}
|
|
|
|
for (uint8_t i = 0; i < duration; i++)
|
|
|
|
{
|
|
|
|
delay(1000 / 16);
|
|
|
|
Serial.print(".");
|
|
|
|
}
|
|
|
|
Serial.println();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void move(uint8_t steps, uint8_t direction)
|
|
|
|
{
|
|
|
|
Serial.print(steps);
|
|
|
|
Serial.print(" steps to the ");
|
|
|
|
switch (direction)
|
|
|
|
{
|
|
|
|
case 0: Serial.print("N"); break;
|
|
|
|
case 1: Serial.print("NNO"); break;
|
|
|
|
case 2: Serial.print("NO"); break;
|
|
|
|
case 3: Serial.print("ONO"); break;
|
|
|
|
case 4: Serial.print("O"); break;
|
|
|
|
case 5: Serial.print("OZO"); break;
|
|
|
|
case 6: Serial.print("ZO"); break;
|
|
|
|
case 7: Serial.print("ZZO"); break;
|
|
|
|
case 8: Serial.print("Z"); break;
|
|
|
|
case 9: Serial.print("ZZW"); break;
|
|
|
|
case 10: Serial.print("ZW"); break;
|
|
|
|
case 11: Serial.print("WZW"); break;
|
|
|
|
case 12: Serial.print("W"); break;
|
|
|
|
case 13: Serial.print("WNW"); break;
|
|
|
|
case 14: Serial.print("NW"); break;
|
|
|
|
case 15: Serial.print("NNW"); break;
|
|
|
|
}
|
|
|
|
Serial.println();
|
|
|
|
delay(100 * steps);
|
|
|
|
}
|
|
|
|
|
2021-11-10 13:53:12 -05:00
|
|
|
|
2020-11-27 05:28:57 -05:00
|
|
|
void loop()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2021-11-10 13:53:12 -05:00
|
|
|
|
2020-11-27 05:28:57 -05:00
|
|
|
// -- END OF FILE --
|
2021-12-22 07:28:44 -05:00
|
|
|
|