Improving ESP32 LED Handeling, versionbump

This commit is contained in:
Lukas Bachschwell 2018-05-20 18:27:04 +02:00
parent 10c656448b
commit 5618498992
3 changed files with 149 additions and 135 deletions

View File

@ -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

View File

@ -31,13 +31,13 @@ void SimpleExpressionsClass::initBuzzer(int aBuzzerPin) {
void SimpleExpressionsClass::writeMouth(const char mouthName[], int r, int g, int b) {
int number = -1;
for(int i = 0; i < frameCount; i++){
for(int i = 0; i < frameCount; i++) {
if(strncmp(shapes[i].name, mouthName, 20) == 0) {
number = i;
break;
}
}
if(number != -1){
if(number != -1) {
printMouth(number, r, g, b);
} else {
if(debug) Serial.println("Error: mouth name does not exist");
@ -49,20 +49,20 @@ 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(const char mouthName[] ) {
int number = -1;
for(int i = 0; i < colorFrameCount; i++){
for(int i = 0; i < colorFrameCount; i++) {
if(strncmp(shapes[i].name, mouthName, 20) == 0) {
number = i;
break;
}
}
if(number != -1){
if(number != -1) {
printMouth(number);
} else {
if(debug) Serial.println("Error: mouth name does not exist");
@ -73,7 +73,7 @@ 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,13 +115,26 @@ 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);
@ -142,7 +155,7 @@ 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)
{
@ -160,7 +173,7 @@ void SimpleExpressionsClass::bendTones (float initFrequency, float finalFrequenc
void SimpleExpressionsClass::playSound(int soundName){
switch(soundName){
switch(soundName) {
case S_CONNECTION:
_tone(NOTE_E5,50,30);

View File

@ -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(const 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(const 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;