Compare commits
11 Commits
Author | SHA1 | Date |
---|---|---|
Lukas Bachschwell | 419f873313 | |
per1234 | 16b8a09161 | |
Lukas Bachschwell | 5618498992 | |
Lukas Bachschwell | 10c656448b | |
Lukas Bachschwell | 8526e6d4a5 | |
Lukas Bachschwell | db7a00935f | |
Lukas Bachschwell | 95a7024a71 | |
roboticafacil | 0a23390b93 | |
roboticafacil | be3c222c62 | |
Lukas Bachschwell | 6d19e4bd02 | |
Lukas Bachschwell | 5574f6f732 |
|
@ -0,0 +1,242 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="52mm"
|
||||
height="51mm"
|
||||
viewBox="0 0 52 51"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.1 r15371"
|
||||
sodipodi:docname="round_led_strip.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
refY="0"
|
||||
refX="0"
|
||||
orient="auto"
|
||||
id="DistanceX">
|
||||
<path
|
||||
id="path4487"
|
||||
style="stroke:#000000;stroke-width:0.5"
|
||||
d="M 3,-3 -3,3 M 0,-5 V 5"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<pattern
|
||||
y="0"
|
||||
x="0"
|
||||
width="8"
|
||||
patternUnits="userSpaceOnUse"
|
||||
id="Hatch"
|
||||
height="8">
|
||||
<path
|
||||
id="path4490"
|
||||
stroke-width="0.25"
|
||||
stroke="#000000"
|
||||
linecap="square"
|
||||
d="M8 4 l-4,4" />
|
||||
<path
|
||||
id="path4492"
|
||||
stroke-width="0.25"
|
||||
stroke="#000000"
|
||||
linecap="square"
|
||||
d="M6 2 l-4,4" />
|
||||
<path
|
||||
id="path4494"
|
||||
stroke-width="0.25"
|
||||
stroke="#000000"
|
||||
linecap="square"
|
||||
d="M4 0 l-4,4" />
|
||||
</pattern>
|
||||
<symbol
|
||||
id="*Model_Space" />
|
||||
<symbol
|
||||
id="*Paper_Space" />
|
||||
<symbol
|
||||
id="*Paper_Space0" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="123.32321"
|
||||
inkscape:cy="41.326652"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="705"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-246)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="M 11.211967,266.92368 H 1.2119672"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4502" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 23.042094,256.43333 -5,-8.66027"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4504" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 38.042094,261.43332 5,-8.66027"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4506" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 41.211967,276.92369 h 10"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4508" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 21.211967,276.92369 h 10"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4510" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 29.38184,287.41408 5,8.66026"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4512" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 14.38184,282.41409 -4.9999998,8.66023"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4514" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 1.2119672,266.92368 v 10.00001"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4516" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 18.042094,247.77306 -8.6602538,4.99999"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4518" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="M 43.042094,252.77305 34.38184,247.77306"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4520" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="M 51.211967,276.92369 V 266.92368"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4522" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="M 31.211967,276.92369 V 266.92368"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4524" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 34.38184,296.07434 8.660254,-5.00002"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4526" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 9.3818402,291.07432 8.6602538,5.00002"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4528" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 9.3818402,252.77305 4.9999998,8.66027"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4530" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 34.38184,247.77306 -5,8.66027"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4532" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 51.211967,266.92368 h -10"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4534" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 31.211967,266.92368 h -10"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4536" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 43.042094,291.07432 -5,-8.66023"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4538" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 18.042094,296.07434 5,-8.66026"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4540" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="M 1.2119672,276.92369 H 11.211967"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4542" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 14.38184,261.43332 8.660254,-4.99999"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4544" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 29.38184,256.43333 8.660254,4.99999"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4546" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 41.211967,266.92368 v 10.00001"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4548" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 21.211967,266.92368 v 10.00001"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4550" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 38.042094,282.41409 -8.660254,4.99999"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4552" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="M 23.042094,287.41408 14.38184,282.41409"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4554" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="M 11.211967,276.92369 V 266.92368"
|
||||
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4556" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 9.1 KiB |
|
@ -9,6 +9,7 @@
|
|||
"LANG_SUBCATEGORY_BUZZER": "Buzzer",
|
||||
"LANG_PIEZO_BUZZER": "Buzzer",
|
||||
"LANG_PIEZO_BUZZER_PIN": "PIN",
|
||||
"LANG_SIMPLEEXPRESSIONS_SHOW_MOUTH": "7-RGB LEDs",
|
||||
"LANG_PIEZO_BUZZER_PREDEF_SOUNDS_TOOLTIP": "Plays some basic sounds based on SimpleExpressions library"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name=SimpleExpressions
|
||||
version=1.1.0
|
||||
version=1.1.1
|
||||
author=Lukas Bachschwell
|
||||
maintainer=Lukas Bachschwell <lukas@lbsfilm.at>
|
||||
sentence=Make you Robots cute and noisy
|
||||
|
@ -7,3 +7,4 @@ paragraph=A simple library to create cool mouths and funny sounds using a 7 led
|
|||
category=Signal Input/Output
|
||||
url=https://github.com/s00500/SimpleExpressions
|
||||
architectures=*
|
||||
depends=Adafruit NeoPixel
|
||||
|
|
|
@ -20,8 +20,8 @@ void SimpleExpressionsClass::initBuzzer(int aBuzzerPin) {
|
|||
buzzerPin = aBuzzerPin;
|
||||
|
||||
#if defined(ESP32)
|
||||
ledcSetup(ledc_channel, 2000, 8); // channel, max frequency, resolution
|
||||
ledcAttachPin(aBuzzerPin, ledc_channel);
|
||||
ledcSetup(ledc_channel, 2000, 8); // channel, max frequency, resolution
|
||||
ledcAttachPin(aBuzzerPin, ledc_channel);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -29,19 +29,19 @@ void SimpleExpressionsClass::initBuzzer(int aBuzzerPin) {
|
|||
//-- MOUTHS ----------------------------------------//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
void SimpleExpressionsClass::writeMouth(char mouthName[], int r, int g, int b) {
|
||||
void SimpleExpressionsClass::writeMouth(const char mouthName[], int r, int g, int b) {
|
||||
int number = -1;
|
||||
for(int i = 0; i < frameCount; i++){
|
||||
if(strncmp(shapes[i].name, mouthName, 20) == 0) {
|
||||
number = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(number != -1){
|
||||
printMouth(number, r, g, b);
|
||||
} else {
|
||||
if(debug) Serial.println("Error: mouth name does not exist");
|
||||
for(int i = 0; i < frameCount; i++) {
|
||||
if(strncmp(shapes[i].name, mouthName, 20) == 0) {
|
||||
number = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(number != -1) {
|
||||
printMouth(number, r, g, b);
|
||||
} else {
|
||||
if(debug) Serial.println("Error: mouth name does not exist");
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleExpressionsClass::printMouth(int number, int r, int g, int b) {
|
||||
|
@ -49,31 +49,31 @@ void SimpleExpressionsClass::printMouth(int number, int r, int g, int b) {
|
|||
if(shapes[number].data[i]) mouth.setPixelColor(i, mouth.Color(r, g, b));
|
||||
else mouth.setPixelColor(i, 0);
|
||||
}
|
||||
mouth.show();
|
||||
showMouth();
|
||||
delay(1);
|
||||
clearPixels();
|
||||
}
|
||||
|
||||
void SimpleExpressionsClass::writeMouth(char mouthName[] ) {
|
||||
void SimpleExpressionsClass::writeMouth(const char mouthName[] ) {
|
||||
int number = -1;
|
||||
for(int i = 0; i < colorFrameCount; i++){
|
||||
if(strncmp(shapes[i].name, mouthName, 20) == 0) {
|
||||
number = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(number != -1){
|
||||
printMouth(number);
|
||||
} else {
|
||||
if(debug) Serial.println("Error: mouth name does not exist");
|
||||
for(int i = 0; i < colorFrameCount; i++) {
|
||||
if(strncmp(shapes[i].name, mouthName, 20) == 0) {
|
||||
number = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(number != -1) {
|
||||
printMouth(number);
|
||||
} else {
|
||||
if(debug) Serial.println("Error: mouth name does not exist");
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleExpressionsClass::printMouth(int number) {
|
||||
for(uint16_t i = 0; i<7; i++) {
|
||||
mouth.setPixelColor(i, mouth.Color(colorShapes[number].data[i][0], colorShapes[number].data[i][1], colorShapes[number].data[i][2]));
|
||||
}
|
||||
mouth.show();
|
||||
showMouth();
|
||||
delay(1);
|
||||
clearPixels();
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ void SimpleExpressionsClass::writeMouthGeneric(const bool mouthArray[7], int r,
|
|||
if(mouthArray[i]) mouth.setPixelColor(i, mouth.Color(r, g, b));
|
||||
else mouth.setPixelColor(i, 0);
|
||||
}
|
||||
mouth.show();
|
||||
showMouth();
|
||||
delay(1);
|
||||
clearPixels();
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ void SimpleExpressionsClass::writeMouthGeneric(const int mouthArray[7][3]) {
|
|||
for(uint16_t i=0; i<7; i++) {
|
||||
mouth.setPixelColor(i, mouth.Color(mouthArray[i][0], mouthArray[i][1], mouthArray[i][2]));
|
||||
}
|
||||
mouth.show();
|
||||
showMouth();
|
||||
delay(1);
|
||||
clearPixels();
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ void SimpleExpressionsClass::clearMouth() {
|
|||
for(int i = 0; i < 7; i++) {
|
||||
mouth.setPixelColor(i, 0);
|
||||
}
|
||||
mouth.show();
|
||||
showMouth();
|
||||
delay(1);
|
||||
clearPixels();
|
||||
}
|
||||
|
@ -115,24 +115,37 @@ void SimpleExpressionsClass::clearPixels() { // avoid strange issues on ESP32 wi
|
|||
}
|
||||
delay(1);
|
||||
}
|
||||
|
||||
void SimpleExpressionsClass::showMouth() {
|
||||
#if defined(ESP32)
|
||||
portDISABLE_INTERRUPTS();
|
||||
mouth.show();
|
||||
delay(1);
|
||||
portENABLE_INTERRUPTS();
|
||||
clearPixels();
|
||||
#else
|
||||
mouth.show();
|
||||
#endif
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//-- SOUNDS -----------------------------------------------------//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
void SimpleExpressionsClass::_tone (float noteFrequency, long noteDuration, int silentDuration){
|
||||
if(silentDuration==0){silentDuration=1;}
|
||||
if(silentDuration==0) {silentDuration=1;}
|
||||
|
||||
#if defined(ESP32)
|
||||
ledcWriteTone(ledc_channel, noteFrequency);
|
||||
delay(noteDuration); // milliseconds
|
||||
ledcWrite(ledc_channel, 0); // notone
|
||||
ledcWriteTone(ledc_channel, noteFrequency);
|
||||
delay(noteDuration); // milliseconds
|
||||
ledcWrite(ledc_channel, 0); // notone
|
||||
#else
|
||||
tone(buzzerPin, noteFrequency, noteDuration);
|
||||
delay(noteDuration); // milliseconds
|
||||
tone(buzzerPin, noteFrequency, noteDuration);
|
||||
delay(noteDuration); // milliseconds
|
||||
#endif
|
||||
|
||||
delay(silentDuration);
|
||||
delay(silentDuration);
|
||||
}
|
||||
|
||||
|
||||
|
@ -142,138 +155,138 @@ void SimpleExpressionsClass::bendTones (float initFrequency, float finalFrequenc
|
|||
// bendTones (880, 2093, 1.02, 18, 1);
|
||||
// bendTones (note_A5, note_C7, 1.02, 18, 0);
|
||||
|
||||
if(silentDuration==0){silentDuration=1;}
|
||||
if(silentDuration==0) {silentDuration=1;}
|
||||
|
||||
if(initFrequency < finalFrequency)
|
||||
{
|
||||
for (int i=initFrequency; i<finalFrequency; i=i*prop) {
|
||||
_tone(i, noteDuration, silentDuration);
|
||||
}
|
||||
for (int i=initFrequency; i<finalFrequency; i=i*prop) {
|
||||
_tone(i, noteDuration, silentDuration);
|
||||
}
|
||||
|
||||
} else{
|
||||
|
||||
for (int i=initFrequency; i>finalFrequency; i=i/prop) {
|
||||
_tone(i, noteDuration, silentDuration);
|
||||
}
|
||||
for (int i=initFrequency; i>finalFrequency; i=i/prop) {
|
||||
_tone(i, noteDuration, silentDuration);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SimpleExpressionsClass::playSound(int soundName){
|
||||
switch(soundName){
|
||||
switch(soundName) {
|
||||
|
||||
case S_CONNECTION:
|
||||
_tone(NOTE_E5,50,30);
|
||||
_tone(NOTE_E6,55,25);
|
||||
_tone(NOTE_A6,60,10);
|
||||
case S_CONNECTION:
|
||||
_tone(NOTE_E5,50,30);
|
||||
_tone(NOTE_E6,55,25);
|
||||
_tone(NOTE_A6,60,10);
|
||||
break;
|
||||
|
||||
case S_DISCONNECTION:
|
||||
_tone(NOTE_E5,50,30);
|
||||
_tone(NOTE_A6,55,25);
|
||||
_tone(NOTE_E6,50,10);
|
||||
case S_DISCONNECTION:
|
||||
_tone(NOTE_E5,50,30);
|
||||
_tone(NOTE_A6,55,25);
|
||||
_tone(NOTE_E6,50,10);
|
||||
break;
|
||||
|
||||
case S_BUTTON_PUSHED:
|
||||
bendTones (NOTE_E6, NOTE_G6, 1.03, 20, 2);
|
||||
delay(30);
|
||||
bendTones (NOTE_E6, NOTE_D7, 1.04, 10, 2);
|
||||
case S_BUTTON_PUSHED:
|
||||
bendTones (NOTE_E6, NOTE_G6, 1.03, 20, 2);
|
||||
delay(30);
|
||||
bendTones (NOTE_E6, NOTE_D7, 1.04, 10, 2);
|
||||
break;
|
||||
|
||||
case S_MODE1:
|
||||
bendTones (NOTE_E6, NOTE_A6, 1.02, 30, 10); //1318.51 to 1760
|
||||
case S_MODE1:
|
||||
bendTones (NOTE_E6, NOTE_A6, 1.02, 30, 10); //1318.51 to 1760
|
||||
break;
|
||||
|
||||
case S_MODE2:
|
||||
bendTones (NOTE_G6, NOTE_D7, 1.03, 30, 10); //1567.98 to 2349.32
|
||||
case S_MODE2:
|
||||
bendTones (NOTE_G6, NOTE_D7, 1.03, 30, 10); //1567.98 to 2349.32
|
||||
break;
|
||||
|
||||
case S_MODE3:
|
||||
_tone(NOTE_E6,50,100); //D6
|
||||
_tone(NOTE_G6,50,80); //E6
|
||||
_tone(NOTE_D7,300,0); //G6
|
||||
case S_MODE3:
|
||||
_tone(NOTE_E6,50,100); //D6
|
||||
_tone(NOTE_G6,50,80); //E6
|
||||
_tone(NOTE_D7,300,0); //G6
|
||||
break;
|
||||
|
||||
case S_SURPRISE:
|
||||
bendTones(800, 2150, 1.02, 10, 1);
|
||||
bendTones(2149, 800, 1.03, 7, 1);
|
||||
case S_SURPRISE:
|
||||
bendTones(800, 2150, 1.02, 10, 1);
|
||||
bendTones(2149, 800, 1.03, 7, 1);
|
||||
break;
|
||||
|
||||
case S_OHOOH:
|
||||
bendTones(880, 2000, 1.04, 8, 3); //A5 = 880
|
||||
delay(200);
|
||||
case S_OHOOH:
|
||||
bendTones(880, 2000, 1.04, 8, 3); //A5 = 880
|
||||
delay(200);
|
||||
|
||||
for (int i=880; i<2000; i=i*1.04) {
|
||||
_tone(NOTE_B5,5,10);
|
||||
}
|
||||
for (int i=880; i<2000; i=i*1.04) {
|
||||
_tone(NOTE_B5,5,10);
|
||||
}
|
||||
break;
|
||||
|
||||
case S_OHOOH2:
|
||||
bendTones(1880, 3000, 1.03, 8, 3);
|
||||
delay(200);
|
||||
case S_OHOOH2:
|
||||
bendTones(1880, 3000, 1.03, 8, 3);
|
||||
delay(200);
|
||||
|
||||
for (int i=1880; i<3000; i=i*1.03) {
|
||||
_tone(NOTE_C6,10,10);
|
||||
}
|
||||
for (int i=1880; i<3000; i=i*1.03) {
|
||||
_tone(NOTE_C6,10,10);
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CUDDLY:
|
||||
bendTones(700, 900, 1.03, 16, 4);
|
||||
bendTones(899, 650, 1.01, 18, 7);
|
||||
case S_CUDDLY:
|
||||
bendTones(700, 900, 1.03, 16, 4);
|
||||
bendTones(899, 650, 1.01, 18, 7);
|
||||
break;
|
||||
|
||||
case S_SLEEPING:
|
||||
bendTones(100, 500, 1.04, 10, 10);
|
||||
delay(500);
|
||||
bendTones(400, 100, 1.04, 10, 1);
|
||||
case S_SLEEPING:
|
||||
bendTones(100, 500, 1.04, 10, 10);
|
||||
delay(500);
|
||||
bendTones(400, 100, 1.04, 10, 1);
|
||||
break;
|
||||
|
||||
case S_HAPPY:
|
||||
bendTones(1500, 2500, 1.05, 20, 8);
|
||||
bendTones(2499, 1500, 1.05, 25, 8);
|
||||
case S_HAPPY:
|
||||
bendTones(1500, 2500, 1.05, 20, 8);
|
||||
bendTones(2499, 1500, 1.05, 25, 8);
|
||||
break;
|
||||
|
||||
case S_SUPER_HAPPY:
|
||||
bendTones(2000, 6000, 1.05, 8, 3);
|
||||
delay(50);
|
||||
bendTones(5999, 2000, 1.05, 13, 2);
|
||||
case S_SUPER_HAPPY:
|
||||
bendTones(2000, 6000, 1.05, 8, 3);
|
||||
delay(50);
|
||||
bendTones(5999, 2000, 1.05, 13, 2);
|
||||
break;
|
||||
|
||||
case S_HAPPY_SHORT:
|
||||
bendTones(1500, 2000, 1.05, 15, 8);
|
||||
delay(100);
|
||||
bendTones(1900, 2500, 1.05, 10, 8);
|
||||
case S_HAPPY_SHORT:
|
||||
bendTones(1500, 2000, 1.05, 15, 8);
|
||||
delay(100);
|
||||
bendTones(1900, 2500, 1.05, 10, 8);
|
||||
break;
|
||||
|
||||
case S_SAD:
|
||||
bendTones(880, 669, 1.02, 20, 200);
|
||||
case S_SAD:
|
||||
bendTones(880, 669, 1.02, 20, 200);
|
||||
break;
|
||||
|
||||
case S_CONFUSED:
|
||||
bendTones(1000, 1700, 1.03, 8, 2);
|
||||
bendTones(1699, 500, 1.04, 8, 3);
|
||||
bendTones(1000, 1700, 1.05, 9, 10);
|
||||
case S_CONFUSED:
|
||||
bendTones(1000, 1700, 1.03, 8, 2);
|
||||
bendTones(1699, 500, 1.04, 8, 3);
|
||||
bendTones(1000, 1700, 1.05, 9, 10);
|
||||
break;
|
||||
|
||||
case S_FART1:
|
||||
bendTones(1600, 3000, 1.02, 2, 15);
|
||||
case S_FART1:
|
||||
bendTones(1600, 3000, 1.02, 2, 15);
|
||||
break;
|
||||
|
||||
case S_FART2:
|
||||
bendTones(2000, 6000, 1.02, 2, 20);
|
||||
case S_FART2:
|
||||
bendTones(2000, 6000, 1.02, 2, 20);
|
||||
break;
|
||||
|
||||
case S_FART3:
|
||||
bendTones(1600, 4000, 1.02, 2, 20);
|
||||
bendTones(4000, 3000, 1.02, 2, 20);
|
||||
case S_FART3:
|
||||
bendTones(1600, 4000, 1.02, 2, 20);
|
||||
bendTones(4000, 3000, 1.02, 2, 20);
|
||||
break;
|
||||
|
||||
case PIRATES:
|
||||
case PIRATES:
|
||||
// This is funny but very experimental and probably take long haha =P
|
||||
for (int i = 0; i < 203; i++) { //203 is the total number of music notes in the song
|
||||
int wait = duration[i] * songspeed;
|
||||
_tone( notes[i], wait, 0); //tone(pin,frequency,duration)
|
||||
}
|
||||
for (int i = 0; i < 203; i++) { //203 is the total number of music notes in the song
|
||||
int wait = duration[i] * songspeed;
|
||||
_tone( notes[i], wait, 0); //tone(pin,frequency,duration)
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
|
|
@ -13,34 +13,35 @@
|
|||
|
||||
class SimpleExpressionsClass
|
||||
{
|
||||
public:
|
||||
// General
|
||||
void init(int mouthPin, int buzzerPin);
|
||||
void initMouth(int mouthPin);
|
||||
void initBuzzer(int buzzerPin);
|
||||
public:
|
||||
// General
|
||||
void init(int mouthPin, int buzzerPin);
|
||||
void initMouth(int mouthPin);
|
||||
void initBuzzer(int buzzerPin);
|
||||
|
||||
// Mouths
|
||||
void printMouth(int number, int r, int g, int b);
|
||||
void writeMouth(char mouthName[], int r, int g, int b);
|
||||
// Mouths
|
||||
void printMouth(int number, int r, int g, int b);
|
||||
void writeMouth(const char mouthName[], int r, int g, int b);
|
||||
|
||||
void printMouth(int number);
|
||||
void writeMouth(char mouthName[]);
|
||||
void printMouth(int number);
|
||||
void writeMouth(const char mouthName[]);
|
||||
|
||||
void clearMouth();
|
||||
void clearMouth();
|
||||
void showMouth();
|
||||
|
||||
void writeMouthGeneric(const int mouthArray[7][3]);
|
||||
void writeMouthGeneric(const bool mouthArray[7], int r, int g, int b);
|
||||
void writeMouthGeneric(const int mouthArray[7][3]);
|
||||
void writeMouthGeneric(const bool mouthArray[7], int r, int g, int b);
|
||||
|
||||
// Sounds
|
||||
void _tone (float noteFrequency, long noteDuration, int silentDuration);
|
||||
void bendTones (float initFrequency, float finalFrequency, float prop, long noteDuration, int silentDuration);
|
||||
void playSound(int soundName);
|
||||
// Sounds
|
||||
void _tone (float noteFrequency, long noteDuration, int silentDuration);
|
||||
void bendTones (float initFrequency, float finalFrequency, float prop, long noteDuration, int silentDuration);
|
||||
void playSound(int soundName);
|
||||
|
||||
|
||||
private:
|
||||
Adafruit_NeoPixel mouth;
|
||||
void clearPixels();
|
||||
int buzzerPin;
|
||||
private:
|
||||
Adafruit_NeoPixel mouth;
|
||||
void clearPixels();
|
||||
int buzzerPin;
|
||||
};
|
||||
|
||||
extern SimpleExpressionsClass SimpleExpressions;
|
||||
|
|
|
@ -134,7 +134,7 @@
|
|||
|
||||
const int songspeed = 1;
|
||||
|
||||
const PROGMEM int notes[] = { //Note of the song, 0 is a rest/pulse
|
||||
const PROGMEM double notes[] = { //Note of the song, 0 is a rest/pulse
|
||||
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
|
||||
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
|
||||
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
|
||||
|
|
Loading…
Reference in New Issue