GY-63_MS5611/libraries/NibbleArray/examples/nibbleArray_demo/nibbleArray_demo.ino
2021-12-22 13:28:44 +01:00

151 lines
3.3 KiB
C++

//
// FILE: nibbleArray_demo.ino
// AUTHOR: Rob Tillaart
// PURPOSE: demo nibble array
// DATE: 2020-06-21
// URL: https://github.com/RobTillaart/nibbleArray
#include "nibbleArray.h"
nibbleArray na(500);
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.print("NIBBLEARRAY_LIB_VERSION: ");
Serial.println(NIBBLEARRAY_LIB_VERSION);
test_1();
Serial.println("\nDone...");
}
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++)
{
uint8_t sum = random(6); // 0..5
sum += random(6);
sum += random(6);
na.set(i, sum); // diff from na.set(i, random(16));
}
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();
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);
}
}
void play(uint8_t octave, uint8_t note, uint8_t duration)
{
Serial.print("Play: ");
// Serial.print(octave);
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);
}
void loop()
{
}
// -- END OF FILE --